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.cs9
1 files changed, 9 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 0621e2a..9e7a986 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2671,11 +2671,20 @@ namespace OpenSim.Region.Framework.Scenes
2671 2671
2672 public void AdjustChildPrimPermissions() 2672 public void AdjustChildPrimPermissions()
2673 { 2673 {
2674 uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff8; // Mask folded bits
2675 uint foldedPerms = RootPart.OwnerMask & 3;
2676
2674 ForEachPart(part => 2677 ForEachPart(part =>
2675 { 2678 {
2679 newOwnerMask &= part.BaseMask;
2676 if (part != RootPart) 2680 if (part != RootPart)
2677 part.ClonePermissions(RootPart); 2681 part.ClonePermissions(RootPart);
2678 }); 2682 });
2683
2684 uint lockMask = ~(uint)PermissionMask.Move;
2685 uint lockBit = RootPart.OwnerMask & (uint)PermissionMask.Move;
2686 RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask);
2687 RootPart.ScheduleFullUpdate();
2679 } 2688 }
2680 2689
2681 public void UpdatePermissions(UUID AgentID, byte field, uint localID, 2690 public void UpdatePermissions(UUID AgentID, byte field, uint localID,