diff options
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index b9f9c86..0b974c6 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -3439,17 +3439,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
3439 | 3439 | ||
3440 | public void AdjustChildPrimPermissions() | 3440 | public void AdjustChildPrimPermissions() |
3441 | { | 3441 | { |
3442 | uint newOwnerMask = (uint)PermissionMask.All & 0xfffffff8; // Mask folded bits | 3442 | //uint newOwnerMask = (uint)PermissionMask.All & 0xfffffff8; // Mask folded bits |
3443 | uint foldedPerms = RootPart.OwnerMask & 3; | 3443 | //uint foldedPerms = RootPart.OwnerMask & 3; |
3444 | 3444 | ||
3445 | ForEachPart(part => | 3445 | ForEachPart(part => |
3446 | { | 3446 | { |
3447 | newOwnerMask &= part.BaseMask; | 3447 | //newOwnerMask &= part.BaseMask; |
3448 | if (part != RootPart) | 3448 | if (part != RootPart) |
3449 | part.ClonePermissions(RootPart); | 3449 | part.ClonePermissions(RootPart); |
3450 | }); | 3450 | }); |
3451 | 3451 | ||
3452 | RootPart.OwnerMask = newOwnerMask | foldedPerms; | 3452 | uint lockMask = ~(uint)PermissionMask.Move; |
3453 | uint lockBit = RootPart.OwnerMask & (uint)PermissionMask.Move; | ||
3454 | RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask); | ||
3453 | RootPart.ScheduleFullUpdate(); | 3455 | RootPart.ScheduleFullUpdate(); |
3454 | } | 3456 | } |
3455 | 3457 | ||