aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneGraph.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs27
1 files changed, 27 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index d4965ea..0d178c3 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -1273,9 +1273,36 @@ namespace OpenSim.Region.Framework.Scenes
1273 { 1273 {
1274 if (m_parentScene.Permissions.CanEditObject(grp.UUID, remoteClient.AgentId)) 1274 if (m_parentScene.Permissions.CanEditObject(grp.UUID, remoteClient.AgentId))
1275 { 1275 {
1276 // These two are exceptions SL makes in the interpretation
1277 // of the change flags. Must check them here because otherwise
1278 // the group flag (see below) would be lost
1279 if (data.change == ObjectChangeType.groupS)
1280 data.change = ObjectChangeType.primS;
1281 if (data.change == ObjectChangeType.groupPS)
1282 data.change = ObjectChangeType.primPS;
1276 part.StoreUndoState(data.change); // lets test only saving what we changed 1283 part.StoreUndoState(data.change); // lets test only saving what we changed
1277 grp.doChangeObject(part, (ObjectChangeData)data); 1284 grp.doChangeObject(part, (ObjectChangeData)data);
1278 } 1285 }
1286 else
1287 {
1288 // Is this any kind of group operation?
1289 if ((data.change & ObjectChangeType.Group) != 0)
1290 {
1291 // Is a move and/or rotation requested?
1292 if ((data.change & (ObjectChangeType.Position | ObjectChangeType.Rotation)) != 0)
1293 {
1294 // Are we allowed to move it?
1295 if (m_parentScene.Permissions.CanMoveObject(grp.UUID, remoteClient.AgentId))
1296 {
1297 // Strip all but move and rotation from request
1298 data.change &= (ObjectChangeType.Group | ObjectChangeType.Position | ObjectChangeType.Rotation);
1299
1300 part.StoreUndoState(data.change);
1301 grp.doChangeObject(part, (ObjectChangeData)data);
1302 }
1303 }
1304 }
1305 }
1279 } 1306 }
1280 } 1307 }
1281 } 1308 }