diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 8 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 4798481..9dd6639 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -3422,8 +3422,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
3422 | { | 3422 | { |
3423 | RootPart.UpdatePermissions(AgentID, field, localID, mask, addRemTF); | 3423 | RootPart.UpdatePermissions(AgentID, field, localID, mask, addRemTF); |
3424 | 3424 | ||
3425 | bool god = Scene.Permissions.IsGod(AgentID); | ||
3426 | |||
3425 | AdjustChildPrimPermissions(); | 3427 | AdjustChildPrimPermissions(); |
3426 | 3428 | ||
3429 | if (field == 1 && god) // Base mask was set. Update all child part inventories | ||
3430 | { | ||
3431 | foreach (SceneObjectPart part in Parts) | ||
3432 | part.Inventory.ApplyGodPermissions(RootPart.BaseMask); | ||
3433 | } | ||
3434 | |||
3427 | HasGroupChanged = true; | 3435 | HasGroupChanged = true; |
3428 | 3436 | ||
3429 | // Send the group's properties to all clients once all parts are updated | 3437 | // Send the group's properties to all clients once all parts are updated |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index e6ad89c..c2d4764 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -4460,7 +4460,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4460 | if (god) | 4460 | if (god) |
4461 | { | 4461 | { |
4462 | BaseMask = ApplyMask(BaseMask, set, mask); | 4462 | BaseMask = ApplyMask(BaseMask, set, mask); |
4463 | Inventory.ApplyGodPermissions(_baseMask); | 4463 | Inventory.ApplyGodPermissions(BaseMask); |
4464 | } | 4464 | } |
4465 | 4465 | ||
4466 | break; | 4466 | break; |
@@ -4479,7 +4479,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4479 | case 16: | 4479 | case 16: |
4480 | NextOwnerMask = ApplyMask(NextOwnerMask, set, mask) & | 4480 | NextOwnerMask = ApplyMask(NextOwnerMask, set, mask) & |
4481 | baseMask; | 4481 | baseMask; |
4482 | // Prevent the client from creating no mod, no copy | 4482 | // Prevent the client from creating no copy, no transfer |
4483 | // objects | 4483 | // objects |
4484 | if ((NextOwnerMask & (uint)PermissionMask.Copy) == 0) | 4484 | if ((NextOwnerMask & (uint)PermissionMask.Copy) == 0) |
4485 | NextOwnerMask |= (uint)PermissionMask.Transfer; | 4485 | NextOwnerMask |= (uint)PermissionMask.Transfer; |