diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index ef3c3bf4ef..7698127e4b 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -917,6 +917,10 @@ namespace OpenSim.Region.Environment.Scenes { group.GrabMovement(offset, pos, remoteClient); } + // This is outside the above permissions condition + // so that if the object is locked the client moving the object + // get's it's position on the simulator even if it was the same as before + // This keeps the moving user's client in sync with the rest of the world. group.SendGroupTerseUpdate(); } } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 85e4c7f21b..1d5dd5b5ce 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -1610,8 +1610,24 @@ namespace OpenSim.Region.Environment.Scenes NextOwnerMask = ApplyMask(NextOwnerMask, set, mask); break; } + SendFullUpdateToAllClients(); - // ScheduleFullUpdate(); + SendObjectPropertiesToClient(AgentID); + + + } + } + + private void SendObjectPropertiesToClient(LLUUID AgentID) + { + List avatars = m_parentGroup.GetScenePresences(); + for (int i = 0; i < avatars.Count; i++) + { + // Ugly reference :( + if (avatars[i].UUID == AgentID) + { + m_parentGroup.GetProperties(avatars[i].ControllingClient); + } } }