aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
authorUbitUmarov2017-01-17 13:24:09 +0000
committerUbitUmarov2017-01-17 13:24:09 +0000
commitdb2fbf6516a055beb71de9b82a9773c29bf3a73d (patch)
tree63aeb5610c0cd97d473254623dac28b17d7ef24e /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
parentadd more calls to effective permissions aggregation; do not change groupmask ... (diff)
downloadopensim-SC_OLD-db2fbf6516a055beb71de9b82a9773c29bf3a73d.zip
opensim-SC_OLD-db2fbf6516a055beb71de9b82a9773c29bf3a73d.tar.gz
opensim-SC_OLD-db2fbf6516a055beb71de9b82a9773c29bf3a73d.tar.bz2
opensim-SC_OLD-db2fbf6516a055beb71de9b82a9773c29bf3a73d.tar.xz
add more calls to effective permissions aggregation, some paths may still be missing on objects changes, but remove the aggregation on check paths, so all can be tested.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs26
1 files changed, 15 insertions, 11 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 033170d..d14c450 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2441,17 +2441,16 @@ namespace OpenSim.Region.Framework.Scenes
2441 dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); 2441 dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed);
2442 dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; 2442 dupe.m_rootPart.LinkNum = m_rootPart.LinkNum;
2443 2443
2444
2445 if (userExposed) 2444 if (userExposed)
2446 dupe.m_rootPart.TrimPermissions(); 2445 dupe.m_rootPart.TrimPermissions();
2447 2446
2448 List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.GetArray()); 2447 List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.GetArray());
2449 2448
2450 partList.Sort(delegate(SceneObjectPart p1, SceneObjectPart p2) 2449 partList.Sort(delegate(SceneObjectPart p1, SceneObjectPart p2)
2451 { 2450 {
2452 return p1.LinkNum.CompareTo(p2.LinkNum); 2451 return p1.LinkNum.CompareTo(p2.LinkNum);
2453 } 2452 }
2454 ); 2453 );
2455 2454
2456 foreach (SceneObjectPart part in partList) 2455 foreach (SceneObjectPart part in partList)
2457 { 2456 {
@@ -2503,10 +2502,12 @@ namespace OpenSim.Region.Framework.Scenes
2503 if (dupe.m_rootPart.PhysActor != null) 2502 if (dupe.m_rootPart.PhysActor != null)
2504 dupe.m_rootPart.PhysActor.Building = false; // tell physics to finish building 2503 dupe.m_rootPart.PhysActor.Building = false; // tell physics to finish building
2505 2504
2505 dupe.AggregateDeepPerms();
2506
2506 dupe.HasGroupChanged = true; 2507 dupe.HasGroupChanged = true;
2507 dupe.AttachToBackup(); 2508 dupe.AttachToBackup();
2508 2509
2509 ScheduleGroupForFullUpdate(); 2510 dupe.ScheduleGroupForFullUpdate();
2510 } 2511 }
2511 2512
2512 m_dupeInProgress = false; 2513 m_dupeInProgress = false;
@@ -3426,6 +3427,7 @@ namespace OpenSim.Region.Framework.Scenes
3426 objectGroup.HasGroupChangedDueToDelink = true; 3427 objectGroup.HasGroupChangedDueToDelink = true;
3427 3428
3428 InvalidBoundsRadius(); 3429 InvalidBoundsRadius();
3430 objectGroup.AggregatePerms();
3429 3431
3430 if (sendEvents) 3432 if (sendEvents)
3431 linkPart.TriggerScriptChangedEvent(Changed.LINK); 3433 linkPart.TriggerScriptChangedEvent(Changed.LINK);
@@ -3964,8 +3966,8 @@ namespace OpenSim.Region.Framework.Scenes
3964 3966
3965 public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive) 3967 public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive)
3966 { 3968 {
3967 uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff8; // Mask folded bits 3969 uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff0; // Mask folded bits
3968 uint foldedPerms = RootPart.OwnerMask & 3; 3970 uint foldedPerms = RootPart.OwnerMask & (uint)PermissionMask.FoldedMask;
3969 3971
3970 ForEachPart(part => 3972 ForEachPart(part =>
3971 { 3973 {
@@ -3976,14 +3978,14 @@ namespace OpenSim.Region.Framework.Scenes
3976 part.Inventory.ApplyGodPermissions(part.BaseMask); 3978 part.Inventory.ApplyGodPermissions(part.BaseMask);
3977 }); 3979 });
3978 3980
3979 uint lockMask = ~(uint)(PermissionMask.Move | PermissionMask.Modify); 3981 uint lockMask = ~(uint)(PermissionMask.Move);
3980 uint lockBit = RootPart.OwnerMask & (uint)(PermissionMask.Move | PermissionMask.Modify); 3982 uint lockBit = RootPart.OwnerMask & (uint)(PermissionMask.Move);
3981 RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask); 3983 RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask);
3982 3984
3983// m_log.DebugFormat( 3985// m_log.DebugFormat(
3984// "[SCENE OBJECT GROUP]: RootPart.OwnerMask now {0} for {1} in {2}", 3986// "[SCENE OBJECT GROUP]: RootPart.OwnerMask now {0} for {1} in {2}",
3985// (OpenMetaverse.PermissionMask)RootPart.OwnerMask, Name, Scene.Name); 3987// (OpenMetaverse.PermissionMask)RootPart.OwnerMask, Name, Scene.Name);
3986 3988 AggregatePerms();
3987 RootPart.ScheduleFullUpdate(); 3989 RootPart.ScheduleFullUpdate();
3988 } 3990 }
3989 3991
@@ -4008,6 +4010,7 @@ namespace OpenSim.Region.Framework.Scenes
4008 { 4010 {
4009 foreach (SceneObjectPart part in Parts) 4011 foreach (SceneObjectPart part in Parts)
4010 part.Inventory.ApplyGodPermissions(RootPart.BaseMask); 4012 part.Inventory.ApplyGodPermissions(RootPart.BaseMask);
4013 AggregatePerms();
4011 } 4014 }
4012 4015
4013 HasGroupChanged = true; 4016 HasGroupChanged = true;
@@ -5223,6 +5226,7 @@ namespace OpenSim.Region.Framework.Scenes
5223 { 5226 {
5224 part.ResetOwnerChangeFlag(); 5227 part.ResetOwnerChangeFlag();
5225 }); 5228 });
5229 AggregatePerms();
5226 } 5230 }
5227 5231
5228 // clear some references to easy cg 5232 // clear some references to easy cg