From c927928245fcd2c0b028029587d91b34ff145d91 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Mon, 11 Feb 2008 13:26:55 +0000 Subject: * some refactoring on permissions * temporary re-introduced the weird 'flip-back' behaviour, but debugging it; will remove it if I don't find anything. --- .../Region/Environment/Scenes/SceneObjectPart.cs | 78 ++++++++-------------- 1 file changed, 28 insertions(+), 50 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectPart.cs') diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 06c0472..180ed51 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -1577,65 +1577,43 @@ namespace OpenSim.Region.Environment.Scenes public void UpdatePermissions(LLUUID AgentID, byte field, uint localID, uint mask, byte addRemTF) { + bool set = addRemTF == 1; + // Are we the owner? if (AgentID == OwnerID) { - m_log.Info("[PERMISSIONS]: field: " + field.ToString() + ", mask: " + mask.ToString() + " addRemTF: " + - addRemTF.ToString()); - - //Field 8 = EveryoneMask - if (field == (byte) 8) - { - m_log.Info("[PERMISSIONS]: Left over: " + (OwnerMask - EveryoneMask)); - if (addRemTF == (byte) 0) - { - //EveryoneMask = (uint)0; - EveryoneMask &= ~mask; - //EveryoneMask &= ~(uint)57344; - } - else - { - //EveryoneMask = (uint)0; - EveryoneMask |= mask; - //EveryoneMask |= (uint)57344; - } - //ScheduleFullUpdate(); - SendFullUpdateToAllClientsExcept(AgentID); - } - //Field 16 = NextownerMask - if (field == (byte) 16) + switch (field) { - if (addRemTF == (byte) 0) - { - NextOwnerMask &= ~mask; - } - else - { - NextOwnerMask |= mask; - } - SendFullUpdateToAllClientsExcept(AgentID); + case 2: + OwnerMask = ApplyMask(OwnerMask, set, mask); + break; + case 4: + GroupMask = ApplyMask(GroupMask, set, mask); + break; + case 8: + EveryoneMask = ApplyMask(EveryoneMask, set, mask); + break; + case 16: + NextOwnerMask = ApplyMask(NextOwnerMask, set, mask); + break; } - if (field == (byte)2) - { - if (addRemTF == (byte)0) - { - //m_parentGroup.SetLocked(true); - //PermissionMask. - OwnerMask &= ~mask; - } - else - { - //m_parentGroup.SetLocked(false); - OwnerMask |= mask; - } - SendFullUpdateToAllClients(); - - } + ScheduleFullUpdate(); + } + } + private uint ApplyMask(uint val, bool set, uint mask) + { + if (set) + { + return val |= mask; + } + else + { + return val &= ~mask; } } - + #region Client Update Methods public void AddFullUpdateToAllAvatars() -- cgit v1.1