From b70da6ac1955ada29e1cb4dbe9aeb915735ec686 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Wed, 30 Apr 2008 16:52:12 +0000 Subject: * Patch by Melanie. Implements proper objectflags on child objects. Thanks Melanie! RE: 0001079: r4387. touch() event does not fire when touch script is in root prim and child prims are touched --- OpenSim/Region/Environment/PermissionManager.cs | 27 +++++++++---------------- 1 file changed, 10 insertions(+), 17 deletions(-) (limited to 'OpenSim/Region/Environment/PermissionManager.cs') diff --git a/OpenSim/Region/Environment/PermissionManager.cs b/OpenSim/Region/Environment/PermissionManager.cs index 5658be7..fd8387b 100644 --- a/OpenSim/Region/Environment/PermissionManager.cs +++ b/OpenSim/Region/Environment/PermissionManager.cs @@ -226,21 +226,14 @@ namespace OpenSim.Region.Environment // Outside of this method, they should never be added to objectflags! // -teravus - if (!m_scene.Entities.ContainsKey(objID)) - { - return 0; - } - - // If it's not an object, we cant edit it. - if (!(m_scene.Entities[objID] is SceneObjectGroup)) - { - return 0; - } - - SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[objID]; - LLUUID objectOwner = task.OwnerID; + SceneObjectPart task=m_scene.GetSceneObjectPart(objID); + + // this shouldn't ever happen.. return no permissions/objectflags. + if (task == null) + return (uint)0; - uint objflags = task.RootPart.ObjectFlags; + uint objflags = task.GetEffectiveObjectFlags(); + LLUUID objectOwner = task.OwnerID; // Remove any of the objectFlags that are temporary. These will get added back if appropriate @@ -257,14 +250,14 @@ namespace OpenSim.Region.Environment // Creating the three ObjectFlags options for this method to choose from. // Customize the OwnerMask - uint objectOwnerMask = ApplyObjectModifyMasks(task.RootPart.OwnerMask, objflags); + uint objectOwnerMask = ApplyObjectModifyMasks(task.OwnerMask, objflags); objectOwnerMask |= (uint)LLObject.ObjectFlags.ObjectYouOwner; // Customize the GroupMask - uint objectGroupMask = ApplyObjectModifyMasks(task.RootPart.GroupMask, objflags); + uint objectGroupMask = ApplyObjectModifyMasks(task.GroupMask, objflags); // Customize the EveryoneMask - uint objectEveryoneMask = ApplyObjectModifyMasks(task.RootPart.EveryoneMask, objflags); + uint objectEveryoneMask = ApplyObjectModifyMasks(task.EveryoneMask, objflags); // Hack to allow collaboration until Groups and Group Permissions are implemented -- cgit v1.1