diff --git a/OpenSim/Region/Environment/Scenes/SceneEvents.cs b/OpenSim/Region/Environment/Scenes/SceneEvents.cs index 0986654092..e058745450 100644 --- a/OpenSim/Region/Environment/Scenes/SceneEvents.cs +++ b/OpenSim/Region/Environment/Scenes/SceneEvents.cs @@ -88,7 +88,7 @@ namespace OpenSim.Region.Environment.Scenes public event RemoveScript OnRemoveScript; - public delegate void SceneGroupMoved(LLUUID groupID, LLVector3 delta); + public delegate bool SceneGroupMoved(LLUUID groupID, LLVector3 delta); public event SceneGroupMoved OnSceneGroupMove; @@ -194,12 +194,13 @@ namespace OpenSim.Region.Environment.Scenes } } - public void TriggerGroupMove(LLUUID groupID, LLVector3 delta) + public bool TriggerGroupMove(LLUUID groupID, LLVector3 delta) { if (OnSceneGroupMove != null) { - OnSceneGroupMove(groupID, delta); + return OnSceneGroupMove(groupID, delta); } + return true; } public void TriggerGroupGrab(LLUUID groupID, LLVector3 offset, LLUUID userID) diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 1b55a49024..8038a837ea 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -972,9 +972,11 @@ namespace OpenSim.Region.Environment.Scenes /// public void GrabMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) { - AbsolutePosition = pos; - m_rootPart.SendTerseUpdateToAllClients(); - m_scene.EventManager.TriggerGroupMove(UUID, pos); + if (m_scene.EventManager.TriggerGroupMove(UUID, pos)) + { + AbsolutePosition = pos; + m_rootPart.SendTerseUpdateToAllClients(); + } } /// @@ -1263,10 +1265,11 @@ namespace OpenSim.Region.Environment.Scenes /// public void UpdateGroupPosition(LLVector3 pos) { - AbsolutePosition = pos; - ScheduleGroupForTerseUpdate(); - - m_scene.EventManager.TriggerGroupMove(UUID, pos); + if (m_scene.EventManager.TriggerGroupMove(UUID, pos)) + { + AbsolutePosition = pos; + ScheduleGroupForTerseUpdate(); + } } ///