aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
authorDiva Canto2017-05-01 10:09:54 -0700
committerDiva Canto2017-05-01 10:09:54 -0700
commit8e88a9d7024f300d817be6ec84b19e4d82f38693 (patch)
treef4b584cc9f09f9ca60a3ec33c663de299970c365 /OpenSim/Region/Framework/Scenes
parentPerms test framework: make a lot of things more generic. (diff)
parentbuysell: make sure we dont buy child parts, dont mess with absolute position ... (diff)
downloadopensim-SC_OLD-8e88a9d7024f300d817be6ec84b19e4d82f38693.zip
opensim-SC_OLD-8e88a9d7024f300d817be6ec84b19e4d82f38693.tar.gz
opensim-SC_OLD-8e88a9d7024f300d817be6ec84b19e4d82f38693.tar.bz2
opensim-SC_OLD-8e88a9d7024f300d817be6ec84b19e4d82f38693.tar.xz
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs22
1 files changed, 11 insertions, 11 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
index 42f47b5..36844a9 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
@@ -338,6 +338,8 @@ namespace OpenSim.Region.Framework.Scenes
338 uint rootEveryonePerms = RootPart.EveryoneMask; 338 uint rootEveryonePerms = RootPart.EveryoneMask;
339 uint everyone = rootEveryonePerms; 339 uint everyone = rootEveryonePerms;
340 340
341 // date is time of writing april 30th 2017
342 bool newObject = (RootPart.CreationDate == 0 || RootPart.CreationDate > 1493574994);
341 SceneObjectPart[] parts = m_parts.GetArray(); 343 SceneObjectPart[] parts = m_parts.GetArray();
342 for (int i = 0; i < parts.Length; i++) 344 for (int i = 0; i < parts.Length; i++)
343 { 345 {
@@ -345,7 +347,8 @@ namespace OpenSim.Region.Framework.Scenes
345 part.AggregateInnerPerms(); 347 part.AggregateInnerPerms();
346 owner &= part.AggregatedInnerOwnerPerms; 348 owner &= part.AggregatedInnerOwnerPerms;
347 group &= part.AggregatedInnerGroupPerms; 349 group &= part.AggregatedInnerGroupPerms;
348 everyone &= part.AggregatedInnerEveryonePerms; 350 if(newObject)
351 everyone &= part.AggregatedInnerEveryonePerms;
349 } 352 }
350 // recover modify and move 353 // recover modify and move
351 rootOwnerPerms &= movemodmask; 354 rootOwnerPerms &= movemodmask;
@@ -407,14 +410,16 @@ namespace OpenSim.Region.Framework.Scenes
407 uint everyone = rootEveryonePerms; 410 uint everyone = rootEveryonePerms;
408 411
409 bool needUpdate = false; 412 bool needUpdate = false;
410 413 // date is time of writing april 30th 2017
414 bool newObject = (RootPart.CreationDate == 0 || RootPart.CreationDate > 1493574994);
411 SceneObjectPart[] parts = m_parts.GetArray(); 415 SceneObjectPart[] parts = m_parts.GetArray();
412 for (int i = 0; i < parts.Length; i++) 416 for (int i = 0; i < parts.Length; i++)
413 { 417 {
414 SceneObjectPart part = parts[i]; 418 SceneObjectPart part = parts[i];
415 owner &= part.AggregatedInnerOwnerPerms; 419 owner &= part.AggregatedInnerOwnerPerms;
416 group &= part.AggregatedInnerGroupPerms; 420 group &= part.AggregatedInnerGroupPerms;
417 everyone &= part.AggregatedInnerEveryonePerms; 421 if(newObject)
422 everyone &= part.AggregatedInnerEveryonePerms;
418 } 423 }
419 // recover modify and move 424 // recover modify and move
420 rootOwnerPerms &= movemodmask; 425 rootOwnerPerms &= movemodmask;
@@ -479,7 +484,7 @@ namespace OpenSim.Region.Framework.Scenes
479 } 484 }
480 } 485 }
481 486
482 public uint GetEffectivePermissions(bool useBase) 487 public uint CurrentAndFoldedNextPermissions()
483 { 488 {
484 uint perms=(uint)(PermissionMask.Modify | 489 uint perms=(uint)(PermissionMask.Modify |
485 PermissionMask.Copy | 490 PermissionMask.Copy |
@@ -487,18 +492,13 @@ namespace OpenSim.Region.Framework.Scenes
487 PermissionMask.Transfer | 492 PermissionMask.Transfer |
488 PermissionMask.FoldedMask); 493 PermissionMask.FoldedMask);
489 494
490 uint ownerMask = 0x7fffffff; 495 uint ownerMask = RootPart.OwnerMask;
491 496
492 SceneObjectPart[] parts = m_parts.GetArray(); 497 SceneObjectPart[] parts = m_parts.GetArray();
493 for (int i = 0; i < parts.Length; i++) 498 for (int i = 0; i < parts.Length; i++)
494 { 499 {
495 SceneObjectPart part = parts[i]; 500 SceneObjectPart part = parts[i];
496 501 ownerMask &= part.BaseMask;
497 if (useBase)
498 ownerMask &= part.BaseMask;
499 else
500 ownerMask &= part.OwnerMask;
501
502 perms &= part.Inventory.MaskEffectivePermissions(); 502 perms &= part.Inventory.MaskEffectivePermissions();
503 } 503 }
504 504