diff options
Removed reference to Scene EventManager from primitive. In its place, primitive now has its own event (OnPrimCountTainted) that ParcelManager subscribes to.
Removed some unused code from SimpleApp.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Primitive.cs | 44 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 17 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneEvents.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObject.cs | 19 |
4 files changed, 50 insertions, 40 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Primitive.cs b/OpenSim/Region/Environment/Scenes/Primitive.cs index 833bf85..23dcf6e 100644 --- a/OpenSim/Region/Environment/Scenes/Primitive.cs +++ b/OpenSim/Region/Environment/Scenes/Primitive.cs | |||
@@ -9,6 +9,8 @@ using OpenSim.Framework.Types; | |||
9 | 9 | ||
10 | namespace OpenSim.Region.Environment.Scenes | 10 | namespace OpenSim.Region.Environment.Scenes |
11 | { | 11 | { |
12 | public delegate void PrimCountTaintedDelegate(); | ||
13 | |||
12 | public class Primitive : EntityBase | 14 | public class Primitive : EntityBase |
13 | { | 15 | { |
14 | private const uint FULL_MASK_PERMISSIONS = 2147483647; | 16 | private const uint FULL_MASK_PERMISSIONS = 2147483647; |
@@ -47,6 +49,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
47 | 49 | ||
48 | private EventManager m_eventManager; | 50 | private EventManager m_eventManager; |
49 | 51 | ||
52 | public event PrimCountTaintedDelegate OnPrimCountTainted; | ||
53 | |||
50 | #region Properties | 54 | #region Properties |
51 | /// <summary> | 55 | /// <summary> |
52 | /// If rootprim, will return world position | 56 | /// If rootprim, will return world position |
@@ -132,22 +136,21 @@ namespace OpenSim.Region.Environment.Scenes | |||
132 | /// <param name="isRoot"></param> | 136 | /// <param name="isRoot"></param> |
133 | /// <param name="parent"></param> | 137 | /// <param name="parent"></param> |
134 | /// <param name="rootObject"></param> | 138 | /// <param name="rootObject"></param> |
135 | public Primitive(ulong regionHandle, Scene world, EventManager eventManager, LLUUID ownerID, uint localID, bool isRoot, EntityBase parent, SceneObject rootObject, PrimitiveBaseShape shape, LLVector3 pos) | 139 | public Primitive(ulong regionHandle, Scene world, LLUUID ownerID, uint localID, bool isRoot, EntityBase parent, SceneObject rootObject, PrimitiveBaseShape shape, LLVector3 pos) |
136 | { | 140 | { |
137 | 141 | ||
138 | m_regionHandle = regionHandle; | 142 | m_regionHandle = regionHandle; |
139 | m_world = world; | 143 | m_world = world; |
140 | m_eventManager = eventManager; | ||
141 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); | 144 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); |
142 | this.m_Parent = parent; | 145 | this.m_Parent = parent; |
143 | this.m_isRootPrim = isRoot; | 146 | this.m_isRootPrim = isRoot; |
144 | this.m_RootParent = rootObject; | 147 | this.m_RootParent = rootObject; |
145 | |||
146 | this.CreateFromShape(ownerID, localID, pos, shape); | 148 | this.CreateFromShape(ownerID, localID, pos, shape); |
147 | this.Rotation = Axiom.Math.Quaternion.Identity; | 149 | this.Rotation = Axiom.Math.Quaternion.Identity; |
148 | 150 | ||
149 | 151 | m_world.AcknowledgeNewPrim(this); | |
150 | m_eventManager.TriggerParcelPrimCountTainted(); | 152 | |
153 | this.OnPrimCountTainted(); | ||
151 | } | 154 | } |
152 | 155 | ||
153 | /// <summary> | 156 | /// <summary> |
@@ -156,7 +159,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
156 | /// <remarks>Empty constructor for duplication</remarks> | 159 | /// <remarks>Empty constructor for duplication</remarks> |
157 | public Primitive() | 160 | public Primitive() |
158 | { | 161 | { |
159 | m_eventManager.TriggerParcelPrimCountTainted(); | 162 | |
160 | } | 163 | } |
161 | 164 | ||
162 | #endregion | 165 | #endregion |
@@ -165,7 +168,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
165 | 168 | ||
166 | ~Primitive() | 169 | ~Primitive() |
167 | { | 170 | { |
168 | m_eventManager.TriggerParcelPrimCountTainted(); | 171 | this.OnPrimCountTainted(); |
169 | } | 172 | } |
170 | #endregion | 173 | #endregion |
171 | 174 | ||
@@ -174,17 +177,20 @@ namespace OpenSim.Region.Environment.Scenes | |||
174 | public Primitive Copy(EntityBase parent, SceneObject rootParent) | 177 | public Primitive Copy(EntityBase parent, SceneObject rootParent) |
175 | { | 178 | { |
176 | Primitive dupe = (Primitive)this.MemberwiseClone(); | 179 | Primitive dupe = (Primitive)this.MemberwiseClone(); |
177 | // TODO: Copy this properly. | 180 | |
178 | dupe.inventoryItems = this.inventoryItems; | ||
179 | dupe.m_Parent = parent; | 181 | dupe.m_Parent = parent; |
180 | dupe.m_RootParent = rootParent; | 182 | dupe.m_RootParent = rootParent; |
181 | 183 | ||
182 | dupe.m_Shape = this.m_Shape.Copy(); | 184 | // TODO: Copy this properly. |
185 | dupe.inventoryItems = this.inventoryItems; | ||
183 | dupe.children = new List<EntityBase>(); | 186 | dupe.children = new List<EntityBase>(); |
187 | dupe.m_Shape = this.m_Shape.Copy(); | ||
188 | dupe.m_regionHandle = this.m_regionHandle; | ||
189 | dupe.m_world = this.m_world; | ||
190 | |||
184 | uint newLocalID = this.m_world.PrimIDAllocate(); | 191 | uint newLocalID = this.m_world.PrimIDAllocate(); |
185 | dupe.uuid = LLUUID.Random(); | 192 | dupe.uuid = LLUUID.Random(); |
186 | dupe.LocalId = newLocalID; | 193 | dupe.LocalId = newLocalID; |
187 | dupe.m_regionHandle = this.m_regionHandle; | ||
188 | 194 | ||
189 | if (parent is SceneObject) | 195 | if (parent is SceneObject) |
190 | { | 196 | { |
@@ -200,7 +206,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
200 | dupe.Scale = new LLVector3(this.Scale.X, this.Scale.Y, this.Scale.Z); | 206 | dupe.Scale = new LLVector3(this.Scale.X, this.Scale.Y, this.Scale.Z); |
201 | dupe.Rotation = new Quaternion(this.Rotation.w, this.Rotation.x, this.Rotation.y, this.Rotation.z); | 207 | dupe.Rotation = new Quaternion(this.Rotation.w, this.Rotation.x, this.Rotation.y, this.Rotation.z); |
202 | dupe.m_pos = new LLVector3(this.m_pos.X, this.m_pos.Y, this.m_pos.Z); | 208 | dupe.m_pos = new LLVector3(this.m_pos.X, this.m_pos.Y, this.m_pos.Z); |
209 | |||
203 | rootParent.AddChildToList(dupe); | 210 | rootParent.AddChildToList(dupe); |
211 | this.m_world.AcknowledgeNewPrim(dupe); | ||
212 | dupe.TriggerOnPrimCountTainted(); | ||
204 | 213 | ||
205 | foreach (Primitive prim in this.children) | 214 | foreach (Primitive prim in this.children) |
206 | { | 215 | { |
@@ -213,7 +222,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
213 | 222 | ||
214 | #endregion | 223 | #endregion |
215 | 224 | ||
216 | |||
217 | #region Override from EntityBase | 225 | #region Override from EntityBase |
218 | /// <summary> | 226 | /// <summary> |
219 | /// | 227 | /// |
@@ -276,7 +284,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
276 | this.m_world.DeleteEntity(linkObject.rootUUID); | 284 | this.m_world.DeleteEntity(linkObject.rootUUID); |
277 | linkObject.DeleteAllChildren(); | 285 | linkObject.DeleteAllChildren(); |
278 | 286 | ||
279 | m_eventManager.TriggerParcelPrimCountTainted(); | 287 | this.OnPrimCountTainted(); |
280 | } | 288 | } |
281 | 289 | ||
282 | /// <summary> | 290 | /// <summary> |
@@ -352,7 +360,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
352 | prim.m_pos += offset; | 360 | prim.m_pos += offset; |
353 | prim.updateFlag = 2; | 361 | prim.updateFlag = 2; |
354 | } | 362 | } |
355 | m_eventManager.TriggerParcelPrimCountTainted(); | 363 | this.OnPrimCountTainted(); |
356 | } | 364 | } |
357 | 365 | ||
358 | /// <summary> | 366 | /// <summary> |
@@ -404,7 +412,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
404 | this.Pos = newPos; | 412 | this.Pos = newPos; |
405 | this.updateFlag = 2; | 413 | this.updateFlag = 2; |
406 | 414 | ||
407 | m_eventManager.TriggerParcelPrimCountTainted(); | 415 | this.OnPrimCountTainted(); |
408 | } | 416 | } |
409 | 417 | ||
410 | /// <summary> | 418 | /// <summary> |
@@ -533,6 +541,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
533 | this.updateFlag = 1; | 541 | this.updateFlag = 1; |
534 | } | 542 | } |
535 | #endregion | 543 | #endregion |
544 | |||
536 | #region Client Update Methods | 545 | #region Client Update Methods |
537 | 546 | ||
538 | /// <summary> | 547 | /// <summary> |
@@ -622,5 +631,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
622 | } | 631 | } |
623 | 632 | ||
624 | #endregion | 633 | #endregion |
634 | |||
635 | public void TriggerOnPrimCountTainted() | ||
636 | { | ||
637 | this.OnPrimCountTainted(); | ||
638 | } | ||
625 | } | 639 | } |
626 | } | 640 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index e370047..ad46322 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -139,7 +139,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
139 | m_scriptManager = new ScriptManager(this); | 139 | m_scriptManager = new ScriptManager(this); |
140 | m_eventManager = new EventManager(); | 140 | m_eventManager = new EventManager(); |
141 | 141 | ||
142 | m_eventManager.OnParcelPrimCountTainted += new EventManager.OnParcelPrimCountTaintedDelegate(m_parcelManager.setPrimsTainted); | ||
143 | m_eventManager.OnParcelPrimCountAdd += new EventManager.OnParcelPrimCountAddDelegate(m_parcelManager.addPrimToParcelCounts); | 142 | m_eventManager.OnParcelPrimCountAdd += new EventManager.OnParcelPrimCountAddDelegate(m_parcelManager.addPrimToParcelCounts); |
144 | 143 | ||
145 | MainLog.Instance.Verbose("World.cs - creating new entitities instance"); | 144 | MainLog.Instance.Verbose("World.cs - creating new entitities instance"); |
@@ -221,14 +220,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
221 | } | 220 | } |
222 | 221 | ||
223 | this.parcelPrimCheckCount++; | 222 | this.parcelPrimCheckCount++; |
224 | if (this.parcelPrimCheckCount > 50) //check every 5 seconds for tainted prims | 223 | if (this.parcelPrimCheckCount > 100) //check every 10 seconds for tainted prims |
225 | { | 224 | { |
226 | if (m_parcelManager.parcelPrimCountTainted) | 225 | if (m_parcelManager.parcelPrimCountTainted) |
227 | { | 226 | { |
228 | //Perform parcel update of prim count | 227 | //Perform parcel update of prim count |
229 | performParcelPrimCountUpdate(); | 228 | performParcelPrimCountUpdate(); |
230 | this.parcelPrimCheckCount = 0; | 229 | this.parcelPrimCheckCount = 0; |
231 | } | 230 | } |
232 | } | 231 | } |
233 | 232 | ||
234 | } | 233 | } |
@@ -434,7 +433,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
434 | /// <param name="prim">The object to load</param> | 433 | /// <param name="prim">The object to load</param> |
435 | public void PrimFromStorage(PrimData prim) | 434 | public void PrimFromStorage(PrimData prim) |
436 | { | 435 | { |
437 | |||
438 | } | 436 | } |
439 | 437 | ||
440 | /// <summary> | 438 | /// <summary> |
@@ -460,7 +458,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
460 | /// <param name="ownerID"></param> | 458 | /// <param name="ownerID"></param> |
461 | public void AddNewPrim(LLUUID ownerID, LLVector3 pos, PrimitiveBaseShape shape) | 459 | public void AddNewPrim(LLUUID ownerID, LLVector3 pos, PrimitiveBaseShape shape) |
462 | { | 460 | { |
463 | SceneObject sceneOb = new SceneObject(this, m_eventManager, ownerID, this.PrimIDAllocate(), pos, shape); | 461 | |
462 | SceneObject sceneOb = new SceneObject(this, m_eventManager, ownerID, this.PrimIDAllocate(), pos, shape); | ||
464 | AddNewEntity(sceneOb); | 463 | AddNewEntity(sceneOb); |
465 | } | 464 | } |
466 | 465 | ||
@@ -469,6 +468,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
469 | this.Entities.Add(sceneObject.rootUUID, sceneObject); | 468 | this.Entities.Add(sceneObject.rootUUID, sceneObject); |
470 | } | 469 | } |
471 | 470 | ||
471 | /// <summary> | ||
472 | /// Called by a prim when it has been created/cloned, so that its events can be subscribed to | ||
473 | /// </summary> | ||
474 | /// <param name="prim"></param> | ||
475 | public void AcknowledgeNewPrim(Primitive prim) | ||
476 | { | ||
477 | prim.OnPrimCountTainted += m_parcelManager.setPrimsTainted; | ||
478 | } | ||
472 | #endregion | 479 | #endregion |
473 | 480 | ||
474 | #region Add/Remove Avatar Methods | 481 | #region Add/Remove Avatar Methods |
diff --git a/OpenSim/Region/Environment/Scenes/SceneEvents.cs b/OpenSim/Region/Environment/Scenes/SceneEvents.cs index 46768d5..f8ebb2f 100644 --- a/OpenSim/Region/Environment/Scenes/SceneEvents.cs +++ b/OpenSim/Region/Environment/Scenes/SceneEvents.cs | |||
@@ -19,9 +19,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
19 | public delegate void OnRemovePresenceDelegate(LLUUID uuid); | 19 | public delegate void OnRemovePresenceDelegate(LLUUID uuid); |
20 | public event OnRemovePresenceDelegate OnRemovePresence; | 20 | public event OnRemovePresenceDelegate OnRemovePresence; |
21 | 21 | ||
22 | public delegate void OnParcelPrimCountTaintedDelegate(); | ||
23 | public event OnParcelPrimCountTaintedDelegate OnParcelPrimCountTainted; | ||
24 | |||
25 | public delegate void OnParcelPrimCountUpdateDelegate(); | 22 | public delegate void OnParcelPrimCountUpdateDelegate(); |
26 | public event OnParcelPrimCountUpdateDelegate OnParcelPrimCountUpdate; | 23 | public event OnParcelPrimCountUpdateDelegate OnParcelPrimCountUpdate; |
27 | 24 | ||
@@ -58,13 +55,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
58 | } | 55 | } |
59 | } | 56 | } |
60 | 57 | ||
61 | public void TriggerParcelPrimCountTainted() | ||
62 | { | ||
63 | if (OnParcelPrimCountTainted != null) | ||
64 | { | ||
65 | OnParcelPrimCountTainted(); | ||
66 | } | ||
67 | } | ||
68 | public void TriggerParcelPrimCountUpdate() | 58 | public void TriggerParcelPrimCountUpdate() |
69 | { | 59 | { |
70 | if (OnParcelPrimCountUpdate != null) | 60 | if (OnParcelPrimCountUpdate != null) |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObject.cs b/OpenSim/Region/Environment/Scenes/SceneObject.cs index 7992b17..95db271 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObject.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObject.cs | |||
@@ -88,7 +88,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
88 | this.CreateRootFromShape(ownerID, localID, shape, pos); | 88 | this.CreateRootFromShape(ownerID, localID, shape, pos); |
89 | 89 | ||
90 | registerEvents(); | 90 | registerEvents(); |
91 | 91 | ||
92 | } | 92 | } |
93 | 93 | ||
94 | /// <summary> | 94 | /// <summary> |
@@ -97,7 +97,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
97 | /// <remarks>Need a null constructor for duplication</remarks> | 97 | /// <remarks>Need a null constructor for duplication</remarks> |
98 | public SceneObject() | 98 | public SceneObject() |
99 | { | 99 | { |
100 | 100 | ||
101 | } | 101 | } |
102 | 102 | ||
103 | public void registerEvents() | 103 | public void registerEvents() |
@@ -121,18 +121,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
121 | datastore.StoreObject(this); | 121 | datastore.StoreObject(this); |
122 | } | 122 | } |
123 | 123 | ||
124 | |||
125 | /// <summary> | 124 | /// <summary> |
126 | /// Sends my primitive info to the parcel manager for it to keep tally of all of the prims! | 125 | /// Sends my primitive info to the parcel manager for it to keep tally of all of the prims! |
127 | /// </summary> | 126 | /// </summary> |
128 | private void ProcessParcelPrimCountUpdate() | 127 | private void ProcessParcelPrimCountUpdate() |
129 | { | 128 | { |
129 | |||
130 | m_eventManager.TriggerParcelPrimCountAdd(this); | 130 | m_eventManager.TriggerParcelPrimCountAdd(this); |
131 | } | 131 | } |
132 | 132 | ||
133 | |||
134 | |||
135 | |||
136 | /// <summary> | 133 | /// <summary> |
137 | /// | 134 | /// |
138 | /// </summary> | 135 | /// </summary> |
@@ -141,7 +138,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
141 | /// <param name="localID"></param> | 138 | /// <param name="localID"></param> |
142 | public void CreateRootFromShape(LLUUID agentID, uint localID, PrimitiveBaseShape shape, LLVector3 pos) | 139 | public void CreateRootFromShape(LLUUID agentID, uint localID, PrimitiveBaseShape shape, LLVector3 pos) |
143 | { | 140 | { |
144 | this.rootPrimitive = new Primitive(this.m_regionHandle, this.m_world,this.m_eventManager, agentID, localID, true, this, this, shape, pos); | 141 | |
142 | this.rootPrimitive = new Primitive(this.m_regionHandle, this.m_world, agentID, localID, true, this, this, shape, pos); | ||
143 | |||
145 | this.children.Add(rootPrimitive); | 144 | this.children.Add(rootPrimitive); |
146 | this.ChildPrimitives.Add(this.rootUUID, this.rootPrimitive); | 145 | this.ChildPrimitives.Add(this.rootUUID, this.rootPrimitive); |
147 | } | 146 | } |
@@ -156,7 +155,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
156 | } | 155 | } |
157 | 156 | ||
158 | /// <summary> | 157 | /// <summary> |
159 | /// Copies a prim or group of prims (SceneObject) -- TODO: cleanup code | 158 | /// Makes a copy of this SceneObject (and child primitives) |
160 | /// </summary> | 159 | /// </summary> |
161 | /// <returns>A complete copy of the object</returns> | 160 | /// <returns>A complete copy of the object</returns> |
162 | public new SceneObject Copy() | 161 | public new SceneObject Copy() |
@@ -171,8 +170,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
171 | dupe.children.Add(dupe.rootPrimitive); | 170 | dupe.children.Add(dupe.rootPrimitive); |
172 | dupe.rootPrimitive.Pos = this.Pos; | 171 | dupe.rootPrimitive.Pos = this.Pos; |
173 | dupe.Rotation = this.Rotation; | 172 | dupe.Rotation = this.Rotation; |
174 | LLUUID rootu= dupe.rootUUID; | 173 | LLUUID rootu = dupe.rootUUID; |
175 | uint rooti = dupe.rootLocalID; | 174 | uint rooti = dupe.rootLocalID; |
176 | 175 | ||
177 | dupe.registerEvents(); | 176 | dupe.registerEvents(); |
178 | return dupe; | 177 | return dupe; |