diff options
author | Justin Clark-Casey (justincc) | 2014-04-02 00:58:33 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2014-04-02 00:58:33 +0100 |
commit | 0af8886400e56cfbc2efc0d6a8ab01eb289b4e52 (patch) | |
tree | edd6ccc86d800964d27f7a034e8381f5cb03abd9 /OpenSim/Region/Framework/Scenes/SceneGraph.cs | |
parent | Merge branch 'master' of /home/opensim/src/opensim (diff) | |
download | opensim-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 '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 19 |
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); |