diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 4c69930..69ef9b4 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -948,7 +948,18 @@ namespace OpenSim.Region.Environment.Scenes | |||
948 | public void LinkToGroup(SceneObjectGroup objectGroup) | 948 | public void LinkToGroup(SceneObjectGroup objectGroup) |
949 | { | 949 | { |
950 | if (objectGroup.RootPart.UpdateFlag > 0) | 950 | if (objectGroup.RootPart.UpdateFlag > 0) |
951 | { | ||
952 | // I've never actually seen this happen, though I think it's theoretically possible | ||
953 | m_log.ErrorFormat( | ||
954 | "[SCENE OBJECT GROUP]: Aborted linking {0}, {1} to {2}, {3} as it has yet to finish delinking", | ||
955 | objectGroup.RootPart.Name, objectGroup.RootPart.UUID, RootPart.Name, RootPart.UUID); | ||
956 | |||
951 | return; | 957 | return; |
958 | } | ||
959 | |||
960 | // m_log.DebugFormat( | ||
961 | // "[SCENE OBJECT GROUP]: Linking group with root part {0}, {1} to group with root part {2}, {3}", | ||
962 | // objectGroup.RootPart.Name, objectGroup.RootPart.UUID, RootPart.Name, RootPart.UUID); | ||
952 | 963 | ||
953 | SceneObjectPart linkPart = objectGroup.m_rootPart; | 964 | SceneObjectPart linkPart = objectGroup.m_rootPart; |
954 | 965 | ||
@@ -1017,13 +1028,25 @@ namespace OpenSim.Region.Environment.Scenes | |||
1017 | /// <param name="partID"></param> | 1028 | /// <param name="partID"></param> |
1018 | public void DelinkFromGroup(uint partID) | 1029 | public void DelinkFromGroup(uint partID) |
1019 | { | 1030 | { |
1031 | // Don't try and update if we're already in the middle of updating | ||
1020 | if (RootPart.UpdateFlag > 0) | 1032 | if (RootPart.UpdateFlag > 0) |
1033 | { | ||
1034 | // I've never actually seen this happen, though I think it's theoretically possible | ||
1035 | m_log.WarnFormat( | ||
1036 | "[SCENE OBJECT GROUP]: Aborted delink update for {0}, {1} as it has yet to finish linking", | ||
1037 | RootPart.Name, RootPart.UUID); | ||
1038 | |||
1021 | return; | 1039 | return; |
1040 | } | ||
1022 | 1041 | ||
1023 | SceneObjectPart linkPart = GetChildPart(partID); | 1042 | SceneObjectPart linkPart = GetChildPart(partID); |
1024 | 1043 | ||
1025 | if (null != linkPart) | 1044 | if (null != linkPart) |
1026 | { | 1045 | { |
1046 | // m_log.DebugFormat( | ||
1047 | // "[SCENE OBJECT GROUP]: Delinking part {0}, {1} from group with root part {2}, {3}", | ||
1048 | // linkPart.Name, linkPart.UUID, RootPart.Name, RootPart.UUID); | ||
1049 | |||
1027 | LLQuaternion worldRot = linkPart.GetWorldRotation(); | 1050 | LLQuaternion worldRot = linkPart.GetWorldRotation(); |
1028 | 1051 | ||
1029 | // Remove the part from this object | 1052 | // Remove the part from this object |
@@ -1645,7 +1668,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1645 | } | 1668 | } |
1646 | 1669 | ||
1647 | /// <summary> | 1670 | /// <summary> |
1648 | /// | 1671 | /// Send a full update to the client for the given part |
1649 | /// </summary> | 1672 | /// </summary> |
1650 | /// <param name="remoteClient"></param> | 1673 | /// <param name="remoteClient"></param> |
1651 | /// <param name="part"></param> | 1674 | /// <param name="part"></param> |
@@ -1662,7 +1685,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1662 | } | 1685 | } |
1663 | 1686 | ||
1664 | /// <summary> | 1687 | /// <summary> |
1665 | /// | 1688 | /// Send a terse update to the client for the given part |
1666 | /// </summary> | 1689 | /// </summary> |
1667 | /// <param name="remoteClient"></param> | 1690 | /// <param name="remoteClient"></param> |
1668 | /// <param name="part"></param> | 1691 | /// <param name="part"></param> |