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/Scene.Inventory.cs | 6 +- .../Environment/Scenes/Scene.PacketHandlers.cs | 2 +- .../Region/Environment/Scenes/SceneObjectGroup.cs | 2 +- .../Region/Environment/Scenes/SceneObjectPart.cs | 78 ++++++++-------------- 4 files changed, 33 insertions(+), 55 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes') diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index fee1e66..16f15a2 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -199,7 +199,7 @@ namespace OpenSim.Region.Environment.Scenes // Update item with new asset item.AssetID = asset.FullID; group.UpdateInventoryItem(item); - group.GetProperites(remoteClient); + group.GetProperties(remoteClient); // Trigger rerunning of script (use TriggerRezScript event, see RezScript) if (isScriptRunning) @@ -520,7 +520,7 @@ namespace OpenSim.Region.Environment.Scenes if (group != null) { int type = group.RemoveInventoryItem(localID, itemID); - group.GetProperites(remoteClient); + group.GetProperties(remoteClient); if (type == 10) { EventManager.TriggerRemoveScript(localID, itemID); @@ -599,7 +599,7 @@ namespace OpenSim.Region.Environment.Scenes { group.AddInventoryItem(remoteClient, localID, item, copyID); group.StartScript(localID, copyID); - group.GetProperites(remoteClient); + group.GetProperties(remoteClient); // m_log.Info( // String.Format("[PRIMINVENTORY]: " + diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 86f10d7..5071f9b 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs @@ -106,7 +106,7 @@ namespace OpenSim.Region.Environment.Scenes { if (((SceneObjectGroup) ent).LocalId == primLocalID) { - ((SceneObjectGroup) ent).GetProperites(remoteClient); + ((SceneObjectGroup) ent).GetProperties(remoteClient); ((SceneObjectGroup) ent).IsSelected = true; LandManager.setPrimsTainted(); break; diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 83f0c27..78e7868 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -1078,7 +1078,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - public void GetProperites(IClientAPI client) + public void GetProperties(IClientAPI client) { ObjectPropertiesPacket proper = (ObjectPropertiesPacket) PacketPool.Instance.GetPacket(PacketType.ObjectProperties); // TODO: don't create new blocks if recycling an old packet 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