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