aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs20
1 files changed, 17 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 6104c66..eee53d7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2852,6 +2852,9 @@ namespace OpenSim.Region.Framework.Scenes
2852 // Can't do this yet since backup still makes use of the root part without any synchronization 2852 // Can't do this yet since backup still makes use of the root part without any synchronization
2853// objectGroup.m_rootPart = null; 2853// objectGroup.m_rootPart = null;
2854 2854
2855 // If linking prims with different permissions, fix them
2856 AdjustChildPrimPermissions();
2857
2855 AttachToBackup(); 2858 AttachToBackup();
2856 2859
2857 // Here's the deal, this is ABSOLUTELY CRITICAL so the physics scene gets the update about the 2860 // Here's the deal, this is ABSOLUTELY CRITICAL so the physics scene gets the update about the
@@ -3306,6 +3309,8 @@ namespace OpenSim.Region.Framework.Scenes
3306 /// <param name="SetVolumeDetect"></param> 3309 /// <param name="SetVolumeDetect"></param>
3307 public void UpdatePrimFlags(uint localID, bool UsePhysics, bool SetTemporary, bool SetPhantom, bool SetVolumeDetect) 3310 public void UpdatePrimFlags(uint localID, bool UsePhysics, bool SetTemporary, bool SetPhantom, bool SetVolumeDetect)
3308 { 3311 {
3312 HasGroupChanged = true;
3313
3309 SceneObjectPart selectionPart = GetPart(localID); 3314 SceneObjectPart selectionPart = GetPart(localID);
3310 3315
3311 if (SetTemporary && Scene != null) 3316 if (SetTemporary && Scene != null)
@@ -3389,12 +3394,21 @@ namespace OpenSim.Region.Framework.Scenes
3389 } 3394 }
3390 } 3395 }
3391 3396
3397 public void AdjustChildPrimPermissions()
3398 {
3399 ForEachPart(part =>
3400 {
3401 if (part != RootPart)
3402 part.ClonePermissions(RootPart);
3403 });
3404 }
3405
3392 public void UpdatePermissions(UUID AgentID, byte field, uint localID, 3406 public void UpdatePermissions(UUID AgentID, byte field, uint localID,
3393 uint mask, byte addRemTF) 3407 uint mask, byte addRemTF)
3394 { 3408 {
3395 SceneObjectPart[] parts = m_parts.GetArray(); 3409 RootPart.UpdatePermissions(AgentID, field, localID, mask, addRemTF);
3396 for (int i = 0; i < parts.Length; i++) 3410
3397 parts[i].UpdatePermissions(AgentID, field, localID, mask, addRemTF); 3411 AdjustChildPrimPermissions();
3398 3412
3399 HasGroupChanged = true; 3413 HasGroupChanged = true;
3400 3414