From 915593bfbc2f0d6729efe4dfe8d4c8a3f0fc9fbe Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Fri, 21 Nov 2008 21:16:42 +0000 Subject: * refactor: Rip out SOP inventory from the partial into a separate class * SceneObjectPartInventory.cs isn't a particularly good name but it's probably not got a long life * A proper inventory interface to follow * Parallel changes for other inventory partial classes to follow at a later date --- .../Region/Environment/Scenes/SceneObjectPart.cs | 67 ++++++++++++++++------ 1 file changed, 48 insertions(+), 19 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 888643e..250c803 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -28,20 +28,20 @@ using System; using System.Collections.Generic; using System.Drawing; +using System.Reflection; using System.Runtime.Serialization; using System.Security.Permissions; using System.Xml; using System.Xml.Serialization; - +using log4net; using OpenMetaverse; using OpenMetaverse.Packets; - using OpenSim.Framework; using OpenSim.Region.Environment.Scenes.Scripting; using OpenSim.Region.Physics.Manager; namespace OpenSim.Region.Environment.Scenes -{ +{ #region Enumerations [Flags] @@ -92,8 +92,10 @@ namespace OpenSim.Region.Environment.Scenes #endregion Enumerations [Serializable] - public partial class SceneObjectPart : IScriptHost, ISerializable + public class SceneObjectPart : IScriptHost, ISerializable { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + #region Fields [XmlIgnore] @@ -140,6 +142,12 @@ namespace OpenSim.Region.Environment.Scenes public uint AttachmentPoint = (byte)0; [XmlIgnore] public PhysicsVector RotationAxis = new PhysicsVector(1f,1f,1f); + + /// + /// This part's inventory + /// + [XmlIgnore] + public readonly SceneObjectPartInventory Inventory; [XmlIgnore] public bool Undoing = false; @@ -218,6 +226,8 @@ namespace OpenSim.Region.Environment.Scenes m_TextureAnimation = new byte[0]; m_particleSystem = new byte[0]; Rezzed = DateTime.Now; + + Inventory = new SceneObjectPartInventory(this); } /// @@ -266,6 +276,8 @@ namespace OpenSim.Region.Environment.Scenes TrimPermissions(); //m_undo = new UndoStack(ParentGroup.GetSceneMaxUndo()); + + Inventory = new SceneObjectPartInventory(this); } protected SceneObjectPart(SerializationInfo info, StreamingContext context) @@ -285,6 +297,8 @@ namespace OpenSim.Region.Environment.Scenes //System.Console.WriteLine("SceneObjectPart Deserialize END"); Rezzed = DateTime.Now; + + Inventory = new SceneObjectPartInventory(this); } #endregion Constructors @@ -332,16 +346,22 @@ namespace OpenSim.Region.Environment.Scenes set { } // Don't allow assignment, or legacy prims wil b0rk } + /// + /// Access should be via Inventory directly - this property temporarily remains for xml serialization purposes + /// public uint InventorySerial { - get { return m_inventorySerial; } - set { m_inventorySerial = value; } + get { return Inventory.Serial; } + set { Inventory.Serial = value; } } + /// + /// Access should be via Inventory directly - this property temporarily remains for xml serialization purposes + /// public TaskInventoryDictionary TaskInventory { - get { return m_taskInventory; } - set { m_taskInventory = value; } + get { return Inventory.Items; } + set { Inventory.Items = value; } } public uint ObjectFlags @@ -1239,7 +1259,7 @@ if (m_shape != null) { dupe._category = _category; dupe.m_rezzed = m_rezzed; - dupe.TaskInventory = (TaskInventoryDictionary)dupe.TaskInventory.Clone(); + dupe.Inventory.Items = (TaskInventoryDictionary)dupe.Inventory.Items.Clone(); if (userExposed) dupe.ResetIDs(linkNum); @@ -1412,7 +1432,7 @@ if (m_shape != null) { throw new ArgumentNullException("info"); } - info.AddValue("m_inventoryFileName", GetInventoryFileName()); + info.AddValue("m_inventoryFileName", Inventory.GetInventoryFileName()); info.AddValue("m_folderID", UUID); info.AddValue("PhysActor", PhysActor); @@ -1452,7 +1472,7 @@ if (m_shape != null) { info.AddValue("m_updateFlag", m_updateFlag); info.AddValue("CreatorID", _creatorID.Guid); - info.AddValue("m_inventorySerial", m_inventorySerial); + info.AddValue("m_inventorySerial", Inventory.Serial); info.AddValue("m_uuid", m_uuid.Guid); info.AddValue("m_localID", m_localId); info.AddValue("m_name", m_name); @@ -1929,8 +1949,7 @@ if (m_shape != null) { UUID = UUID.Random(); LinkNum = linkNum; LocalId = 0; - - ResetInventoryIDs(); + Inventory.ResetInventoryIDs(); } /// @@ -2993,7 +3012,7 @@ if (m_shape != null) { if (god) { _baseMask = ApplyMask(_baseMask, set, mask); - ApplyGodPermissions(_baseMask); + Inventory.ApplyGodPermissions(_baseMask); } break; @@ -3394,9 +3413,19 @@ if (m_shape != null) { RotationalVelocity, state, FromAssetID, OwnerID, (int)AttachmentPoint); } - } -} - - - + + public void AddScriptLPS(int count) + { + m_parentGroup.AddScriptLPS(count); + } + + public void ApplyNextOwnerPermissions() + { + _baseMask &= _nextOwnerMask; + _ownerMask &= _nextOwnerMask; + _everyoneMask &= _nextOwnerMask; + Inventory.ApplyNextOwnerPermissions(); + } + } +} -- cgit v1.1