aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Primitive.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Primitive.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/Primitive.cs44
1 files changed, 29 insertions, 15 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
10namespace OpenSim.Region.Environment.Scenes 10namespace 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}