diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 20 |
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 | ||