diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Primitive.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Primitive.cs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Primitive.cs b/OpenSim/Region/Environment/Scenes/Primitive.cs index ab50373..e20870f 100644 --- a/OpenSim/Region/Environment/Scenes/Primitive.cs +++ b/OpenSim/Region/Environment/Scenes/Primitive.cs | |||
@@ -163,21 +163,33 @@ namespace OpenSim.Region.Environment.Scenes | |||
163 | dupe.inventoryItems = this.inventoryItems; | 163 | dupe.inventoryItems = this.inventoryItems; |
164 | dupe.m_Parent = parent; | 164 | dupe.m_Parent = parent; |
165 | dupe.m_RootParent = rootParent; | 165 | dupe.m_RootParent = rootParent; |
166 | // TODO: Copy this properly. | 166 | |
167 | dupe.m_Shape = this.m_Shape.Copy(); | 167 | dupe.m_Shape = this.m_Shape.Copy(); |
168 | dupe.children = new List<EntityBase>(); | 168 | dupe.children = new List<EntityBase>(); |
169 | uint newLocalID = this.m_world.PrimIDAllocate(); | 169 | uint newLocalID = this.m_world.PrimIDAllocate(); |
170 | dupe.uuid = LLUUID.Random(); | 170 | dupe.uuid = LLUUID.Random(); |
171 | dupe.LocalId = newLocalID; | 171 | dupe.LocalId = newLocalID; |
172 | dupe.m_regionHandle = this.m_regionHandle; | ||
173 | |||
174 | if (parent is SceneObject) | ||
175 | { | ||
176 | dupe.m_isRootPrim = true; | ||
177 | dupe.ParentID = 0; | ||
178 | } | ||
179 | else | ||
180 | { | ||
181 | dupe.m_isRootPrim = false; | ||
182 | dupe.ParentID = ((Primitive)parent).LocalId; | ||
183 | } | ||
172 | 184 | ||
173 | dupe.Scale = new LLVector3(this.Scale.X, this.Scale.Y, this.Scale.Z); | 185 | dupe.Scale = new LLVector3(this.Scale.X, this.Scale.Y, this.Scale.Z); |
174 | dupe.Rotation = new Quaternion(this.Rotation.w, this.Rotation.x, this.Rotation.y, this.Rotation.z); | 186 | dupe.Rotation = new Quaternion(this.Rotation.w, this.Rotation.x, this.Rotation.y, this.Rotation.z); |
175 | dupe.Pos = new LLVector3(this.Pos.X, this.Pos.Y, this.Pos.Z); | 187 | dupe.m_pos = new LLVector3(this.m_pos.X, this.m_pos.Y, this.m_pos.Z); |
176 | rootParent.AddChildToList(dupe); | 188 | rootParent.AddChildToList(dupe); |
177 | 189 | ||
178 | foreach (Primitive prim in this.children) | 190 | foreach (Primitive prim in this.children) |
179 | { | 191 | { |
180 | Primitive primClone = prim.Copy(this, rootParent); | 192 | Primitive primClone = prim.Copy(dupe, rootParent); |
181 | dupe.children.Add(primClone); | 193 | dupe.children.Add(primClone); |
182 | } | 194 | } |
183 | 195 | ||