aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs27
2 files changed, 29 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 40ebed1..bb76717 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -11631,8 +11631,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
11631 11631
11632 udata.scale = new Vector3(block.Data, 0); 11632 udata.scale = new Vector3(block.Data, 0);
11633 11633
11634 // udata.change = ObjectChangeType.groupS; 11634 udata.change = ObjectChangeType.groupS;
11635 udata.change = ObjectChangeType.primS; // to conform to current SL
11636 updatehandler(localId, udata, this); 11635 updatehandler(localId, udata, this);
11637 11636
11638 break; 11637 break;
@@ -11643,8 +11642,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
11643 udata.position = new Vector3(block.Data, 0); 11642 udata.position = new Vector3(block.Data, 0);
11644 udata.scale = new Vector3(block.Data, 12); 11643 udata.scale = new Vector3(block.Data, 12);
11645 11644
11646 // udata.change = ObjectChangeType.groupPS; 11645 udata.change = ObjectChangeType.groupPS;
11647 udata.change = ObjectChangeType.primPS; // to conform to current SL
11648 updatehandler(localId, udata, this); 11646 updatehandler(localId, udata, this);
11649 break; 11647 break;
11650 11648
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 }