aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneGraph.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-04-02 00:58:33 +0100
committerJustin Clark-Casey (justincc)2014-04-02 00:58:33 +0100
commit0af8886400e56cfbc2efc0d6a8ab01eb289b4e52 (patch)
treeedd6ccc86d800964d27f7a034e8381f5cb03abd9 /OpenSim/Region/Framework/Scenes/SceneGraph.cs
parentMerge branch 'master' of /home/opensim/src/opensim (diff)
downloadopensim-SC_OLD-0af8886400e56cfbc2efc0d6a8ab01eb289b4e52.zip
opensim-SC_OLD-0af8886400e56cfbc2efc0d6a8ab01eb289b4e52.tar.gz
opensim-SC_OLD-0af8886400e56cfbc2efc0d6a8ab01eb289b4e52.tar.bz2
opensim-SC_OLD-0af8886400e56cfbc2efc0d6a8ab01eb289b4e52.tar.xz
Fix problem where moving an object to another region on the same simulator was failing, with the object returning to its original position.
Root cause was that PrimLimitsModule was not properly handling the case where the parcel it was asked to check was outside the current region's bounds. If this is the case, we can abort the check since the receiving region will perform it. Added a regression test for this case.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs19
1 files changed, 15 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 1aecce5..558f108 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -1326,12 +1326,23 @@ namespace OpenSim.Region.Framework.Scenes
1326 /// <summary> 1326 /// <summary>
1327 /// Update the position of the given group. 1327 /// Update the position of the given group.
1328 /// </summary> 1328 /// </summary>
1329 /// <param name="localID"></param> 1329 /// <param name="localId"></param>
1330 /// <param name="pos"></param> 1330 /// <param name="pos"></param>
1331 /// <param name="remoteClient"></param> 1331 /// <param name="remoteClient"></param>
1332 public void UpdatePrimGroupPosition(uint localID, Vector3 pos, IClientAPI remoteClient) 1332 public void UpdatePrimGroupPosition(uint localId, Vector3 pos, IClientAPI remoteClient)
1333 { 1333 {
1334 SceneObjectGroup group = GetGroupByPrim(localID); 1334 UpdatePrimGroupPosition(localId, pos, remoteClient.AgentId);
1335 }
1336
1337 /// <summary>
1338 /// Update the position of the given group.
1339 /// </summary>
1340 /// <param name="localId"></param>
1341 /// <param name="pos"></param>
1342 /// <param name="updatingAgentId"></param>
1343 public void UpdatePrimGroupPosition(uint localId, Vector3 pos, UUID updatingAgentId)
1344 {
1345 SceneObjectGroup group = GetGroupByPrim(localId);
1335 1346
1336 if (group != null) 1347 if (group != null)
1337 { 1348 {
@@ -1342,7 +1353,7 @@ namespace OpenSim.Region.Framework.Scenes
1342 } 1353 }
1343 else 1354 else
1344 { 1355 {
1345 if (m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId) 1356 if (m_parentScene.Permissions.CanMoveObject(group.UUID, updatingAgentId)
1346 && m_parentScene.Permissions.CanObjectEntry(group.UUID, false, pos)) 1357 && m_parentScene.Permissions.CanObjectEntry(group.UUID, false, pos))
1347 { 1358 {
1348 group.UpdateGroupPosition(pos); 1359 group.UpdateGroupPosition(pos);