aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs49
1 files changed, 18 insertions, 31 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index 39615c0..8f88d8e 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -365,13 +365,7 @@ namespace OpenSim.Region.Environment.Scenes
365 /// </summary> 365 /// </summary>
366 public SceneObjectGroup(SceneObjectPart part) 366 public SceneObjectGroup(SceneObjectPart part)
367 { 367 {
368 part.SetParent(this); 368 SetRootPart(part);
369 part.ParentID = 0;
370 part.LinkNum = 0;
371
372 m_parts.Add(part.UUID, part);
373
374 SetPartAsRoot(part);
375 } 369 }
376 370
377 /// <summary> 371 /// <summary>
@@ -506,11 +500,8 @@ namespace OpenSim.Region.Environment.Scenes
506 /// </summary> 500 /// </summary>
507 public SceneObjectGroup(UUID ownerID, Vector3 pos, Quaternion rot, PrimitiveBaseShape shape) 501 public SceneObjectGroup(UUID ownerID, Vector3 pos, Quaternion rot, PrimitiveBaseShape shape)
508 { 502 {
509 Vector3 rootOffset = new Vector3(0, 0, 0); 503 Vector3 rootOffset = new Vector3(0, 0, 0);
510 SceneObjectPart newPart = new SceneObjectPart(ownerID, shape, pos, rot, rootOffset); 504 SetRootPart(new SceneObjectPart(ownerID, shape, pos, rot, rootOffset));
511 newPart.LinkNum = 0;
512 AddPart(newPart);
513 SetPartAsRoot(newPart);
514 } 505 }
515 506
516 /// <summary> 507 /// <summary>
@@ -735,15 +726,6 @@ namespace OpenSim.Region.Environment.Scenes
735 } 726 }
736 727
737 /// <summary> 728 /// <summary>
738 ///
739 /// </summary>
740 /// <param name="part"></param>
741 private void SetPartAsRoot(SceneObjectPart part)
742 {
743 m_rootPart = part;
744 }
745
746 /// <summary>
747 /// Attach this scene object to the given avatar. 729 /// Attach this scene object to the given avatar.
748 /// </summary> 730 /// </summary>
749 /// <param name="agentID"></param> 731 /// <param name="agentID"></param>
@@ -890,9 +872,22 @@ namespace OpenSim.Region.Environment.Scenes
890 { 872 {
891 m_scene = scene; 873 m_scene = scene;
892 } 874 }
875
876 /// <summary>
877 /// Set a part to act as the root part for this scene object
878 /// </summary>
879 /// <param name="part"></param>
880 private void SetRootPart(SceneObjectPart part)
881 {
882 part.SetParent(this);
883 part.ParentID = 0;
884 part.LinkNum = 0;
885 m_rootPart = part;
886 m_parts.Add(m_rootPart.UUID, m_rootPart);
887 }
893 888
894 /// <summary> 889 /// <summary>
895 /// Add a new part to this scene object 890 /// Add a new part to this scene object. The part must already be correctly configured.
896 /// </summary> 891 /// </summary>
897 /// <param name="part"></param> 892 /// <param name="part"></param>
898 public void AddPart(SceneObjectPart part) 893 public void AddPart(SceneObjectPart part)
@@ -1394,15 +1389,7 @@ namespace OpenSim.Region.Environment.Scenes
1394 /// <param name="cGroupID"></param> 1389 /// <param name="cGroupID"></param>
1395 public void CopyRootPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed) 1390 public void CopyRootPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed)
1396 { 1391 {
1397 SceneObjectPart newPart = part.Copy(m_scene.AllocateLocalId(), OwnerID, GroupID, m_parts.Count, userExposed); 1392 SetRootPart(part.Copy(m_scene.AllocateLocalId(), OwnerID, GroupID, m_parts.Count, userExposed));
1398 newPart.SetParent(this);
1399
1400 lock (m_parts)
1401 {
1402 m_parts.Add(newPart.UUID, newPart);
1403 }
1404
1405 SetPartAsRoot(newPart);
1406 } 1393 }
1407 1394
1408 public void ScriptSetPhysicsStatus(bool UsePhysics) 1395 public void ScriptSetPhysicsStatus(bool UsePhysics)