diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 27 |
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 | } |