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();
+ }
}
///