From 915593bfbc2f0d6729efe4dfe8d4c8a3f0fc9fbe Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Fri, 21 Nov 2008 21:16:42 +0000 Subject: [PATCH] * 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 --- OpenSim/Data/MSSQL/MSSQLRegionData.cs | 2 +- OpenSim/Data/MySQL/MySQLRegionData.cs | 2 +- .../Data/NHibernate/NHibernateRegionData.cs | 2 +- OpenSim/Data/SQLite/SQLiteRegionData.cs | 2 +- OpenSim/Data/Tests/BasicRegionTest.cs | 16 +- .../ClientStack/LindenUDP/LLClientView.cs | 2 +- .../AssetTransaction/AssetXferUploader.cs | 2 +- .../World/Permissions/PermissionsModule.cs | 6 +- .../Environment/Scenes/Scene.Inventory.cs | 40 +-- OpenSim/Region/Environment/Scenes/Scene.cs | 8 +- .../Scenes/SceneObjectGroup.Inventory.cs | 27 +- .../Environment/Scenes/SceneObjectGroup.cs | 6 +- .../Environment/Scenes/SceneObjectPart.cs | 67 +++-- ...ventory.cs => SceneObjectPartInventory.cs} | 240 ++++++++++-------- .../Environment/Scenes/ScenePresence.cs | 2 +- .../ScriptEngine/DotNetEngine/EventManager.cs | 2 +- .../DotNetEngine/ScriptManager.cs | 5 +- .../Shared/Api/Implementation/LSL_Api.cs | 2 +- .../Shared/Api/Implementation/OSSL_Api.cs | 2 +- .../Implementation/Plugins/SensorRepeat.cs | 2 +- OpenSim/Region/ScriptEngine/Shared/Helpers.cs | 2 +- .../Shared/Instance/ScriptInstance.cs | 8 +- .../Region/ScriptEngine/XEngine/XEngine.cs | 4 +- 23 files changed, 252 insertions(+), 199 deletions(-) rename OpenSim/Region/Environment/Scenes/{SceneObjectPart.Inventory.cs => SceneObjectPartInventory.cs} (80%) diff --git a/OpenSim/Data/MSSQL/MSSQLRegionData.cs b/OpenSim/Data/MSSQL/MSSQLRegionData.cs index 6298a1954e..c29f566913 100644 --- a/OpenSim/Data/MSSQL/MSSQLRegionData.cs +++ b/OpenSim/Data/MSSQL/MSSQLRegionData.cs @@ -718,7 +718,7 @@ VALUES //m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID); } - prim.RestoreInventoryItems(inventory); + prim.Inventory.RestoreInventoryItems(inventory); // XXX A nasty little hack to recover the folder id for the prim (which is currently stored in // every item). This data should really be stored in the prim table itself. diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs index 1daefe446d..2e36123ef6 100644 --- a/OpenSim/Data/MySQL/MySQLRegionData.cs +++ b/OpenSim/Data/MySQL/MySQLRegionData.cs @@ -511,7 +511,7 @@ namespace OpenSim.Data.MySQL //m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID); } - prim.RestoreInventoryItems(inventory); + prim.Inventory.RestoreInventoryItems(inventory); // XXX A nasty little hack to recover the folder id for the prim (which is currently stored in // every item). This data should really be stored in the prim table itself. diff --git a/OpenSim/Data/NHibernate/NHibernateRegionData.cs b/OpenSim/Data/NHibernate/NHibernateRegionData.cs index 833f1b79ef..475cd71920 100644 --- a/OpenSim/Data/NHibernate/NHibernateRegionData.cs +++ b/OpenSim/Data/NHibernate/NHibernateRegionData.cs @@ -261,7 +261,7 @@ namespace OpenSim.Data.NHibernate } if (inventory.Count > 0) - p.RestoreInventoryItems(inventory); + p.Inventory.RestoreInventoryItems(inventory); } foreach (SceneObjectGroup g in SOG.Values) { diff --git a/OpenSim/Data/SQLite/SQLiteRegionData.cs b/OpenSim/Data/SQLite/SQLiteRegionData.cs index a959d564df..c436205387 100644 --- a/OpenSim/Data/SQLite/SQLiteRegionData.cs +++ b/OpenSim/Data/SQLite/SQLiteRegionData.cs @@ -514,7 +514,7 @@ namespace OpenSim.Data.SQLite //m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID); } - prim.RestoreInventoryItems(inventory); + prim.Inventory.RestoreInventoryItems(inventory); // XXX A nasty little hack to recover the folder id for the prim (which is currently stored in // every item). This data should really be stored in the prim table itself. diff --git a/OpenSim/Data/Tests/BasicRegionTest.cs b/OpenSim/Data/Tests/BasicRegionTest.cs index a7d62d04fd..e68ec2edd8 100644 --- a/OpenSim/Data/Tests/BasicRegionTest.cs +++ b/OpenSim/Data/Tests/BasicRegionTest.cs @@ -255,8 +255,8 @@ namespace OpenSim.Data.Tests sop.GroupPosition = groupos; sop.RotationOffset = rotoff; sop.CreatorID = creator; - sop.InventorySerial = iserial; - sop.TaskInventory = dic; + sop.Inventory.Serial = iserial; + sop.Inventory.Items = dic; sop.ObjectFlags = objf; sop.Name = name; sop.Material = material; @@ -287,8 +287,8 @@ namespace OpenSim.Data.Tests Assert.That(rotoff,Is.EqualTo(sop.RotationOffset)); Assert.That(uuid,Is.EqualTo(sop.UUID)); Assert.That(creator,Is.EqualTo(sop.CreatorID)); - Assert.That(iserial,Is.EqualTo(sop.InventorySerial)); - Assert.That(dic,Is.EqualTo(sop.TaskInventory)); + Assert.That(iserial,Is.EqualTo(sop.Inventory.Serial)); + Assert.That(dic,Is.EqualTo(sop.Inventory.Items)); Assert.That(objf,Is.EqualTo(sop.ObjectFlags)); Assert.That(name,Is.EqualTo(sop.Name)); Assert.That(material,Is.EqualTo(sop.Material)); @@ -337,7 +337,7 @@ namespace OpenSim.Data.Tests Assert.That(uuid,Is.EqualTo(p.UUID)); Assert.That(creator,Is.EqualTo(p.CreatorID)); //Assert.That(iserial,Is.EqualTo(p.InventorySerial)); - Assert.That(dic,Is.EqualTo(p.TaskInventory)); + Assert.That(dic,Is.EqualTo(p.Inventory.Items)); //Assert.That(objf,Is.EqualTo(p.ObjectFlags)); Assert.That(name,Is.EqualTo(p.Name)); Assert.That(material,Is.EqualTo(p.Material)); @@ -415,7 +415,7 @@ namespace OpenSim.Data.Tests sog2.RootPart.GroupPosition = groupos; sog2.RootPart.RotationOffset = rotoff; sog2.RootPart.CreatorID = creator; - sog2.RootPart.TaskInventory = dic; + sog2.RootPart.Inventory.Items = dic; sog2.RootPart.Name = name; sog2.RootPart.Material = material; sog2.RootPart.ScriptAccessPin = pin; @@ -449,7 +449,7 @@ namespace OpenSim.Data.Tests Assert.That(name,Is.EqualTo(p.Name)); Assert.That(rotoff,Is.EqualTo(p.RotationOffset)); Assert.That(creator,Is.EqualTo(p.CreatorID)); - Assert.That(dic,Is.EqualTo(p.TaskInventory)); + Assert.That(dic,Is.EqualTo(p.Inventory.Items)); Assert.That(name,Is.EqualTo(p.Name)); Assert.That(material,Is.EqualTo(p.Material)); Assert.That(pin,Is.EqualTo(p.ScriptAccessPin)); @@ -534,7 +534,7 @@ namespace OpenSim.Data.Tests // TODO: seriously??? this is the way we need to loop to get this? List list = new List(); - foreach (UUID uuid in sog.RootPart.GetInventoryList()) + foreach (UUID uuid in sog.RootPart.Inventory.GetInventoryList()) { list.Add(sog.GetInventoryItem(sog.RootPart.LocalId, uuid)); } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 978a2da2a7..98748869a9 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4998,7 +4998,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) break; - TaskInventoryItem ti = part.GetInventoryItem(itemID); + TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID); if (ti == null) break; diff --git a/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AssetXferUploader.cs b/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AssetXferUploader.cs index 05b7fa3eb5..3ef2e1fd09 100644 --- a/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AssetXferUploader.cs +++ b/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AssetXferUploader.cs @@ -267,7 +267,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction m_userTransactions.Manager.MyScene.CommsManager.AssetCache.AddAsset(m_asset); - if (part.UpdateInventoryItem(item)) + if (part.Inventory.UpdateInventoryItem(item)) part.GetProperties(remoteClient); } diff --git a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs index e41f975509..d7865b20fa 100644 --- a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs @@ -796,7 +796,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) return false; - TaskInventoryItem ti = part.GetInventoryItem(notecard); + TaskInventoryItem ti = part.Inventory.GetInventoryItem(notecard); if (ti == null) return false; @@ -1188,7 +1188,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) return false; - TaskInventoryItem ti = part.GetInventoryItem(script); + TaskInventoryItem ti = part.Inventory.GetInventoryItem(script); if (ti == null) return false; @@ -1266,7 +1266,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) return false; - TaskInventoryItem ti = part.GetInventoryItem(notecard); + TaskInventoryItem ti = part.Inventory.GetInventoryItem(notecard); if (ti == null) return false; diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 19b8e165c5..686f4ba312 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -280,7 +280,7 @@ namespace OpenSim.Region.Environment.Scenes if (isScriptRunning) { - part.RemoveScriptInstance(item.ItemID); + part.Inventory.RemoveScriptInstance(item.ItemID); } // Update item with new asset item.AssetID = asset.FullID; @@ -292,7 +292,7 @@ namespace OpenSim.Region.Environment.Scenes { // Needs to determine which engine was running it and use that // - part.CreateScriptInstance(item.ItemID, 0, false, DefaultScriptEngine, 0); + part.Inventory.CreateScriptInstance(item.ItemID, 0, false, DefaultScriptEngine, 0); } else { @@ -945,7 +945,7 @@ namespace OpenSim.Region.Environment.Scenes private InventoryItemBase CreateAgentInventoryItemFromTask(UUID destAgent, SceneObjectPart part, UUID itemId) { - TaskInventoryItem taskItem = part.GetInventoryItem(itemId); + TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId); if (null == taskItem) { @@ -995,7 +995,7 @@ namespace OpenSim.Region.Environment.Scenes if (!ExternalChecks.ExternalChecksBypassPermissions()) { if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) - part.RemoveInventoryItem(itemId); + part.Inventory.RemoveInventoryItem(itemId); } return agentItem; @@ -1040,7 +1040,7 @@ namespace OpenSim.Region.Environment.Scenes return; } - TaskInventoryItem taskItem = part.GetInventoryItem(itemId); + TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId); if (null == taskItem) { @@ -1104,7 +1104,7 @@ namespace OpenSim.Region.Environment.Scenes /// public void MoveTaskInventoryItem(UUID destId, SceneObjectPart part, UUID itemId) { - TaskInventoryItem srcTaskItem = part.GetInventoryItem(itemId); + TaskInventoryItem srcTaskItem = part.Inventory.GetInventoryItem(itemId); if (srcTaskItem == null) { @@ -1184,10 +1184,10 @@ namespace OpenSim.Region.Environment.Scenes destTaskItem.InvType = srcTaskItem.InvType; destTaskItem.Type = srcTaskItem.Type; - destPart.AddInventoryItem(destTaskItem, part.OwnerID != destPart.OwnerID); + destPart.Inventory.AddInventoryItem(destTaskItem, part.OwnerID != destPart.OwnerID); if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) - part.RemoveInventoryItem(itemId); + part.Inventory.RemoveInventoryItem(itemId); ScenePresence avatar; @@ -1254,7 +1254,7 @@ namespace OpenSim.Region.Environment.Scenes if (part != null) { - TaskInventoryItem currentItem = part.GetInventoryItem(itemID); + TaskInventoryItem currentItem = part.Inventory.GetInventoryItem(itemID); bool allowInventoryDrop = (part.GetEffectiveObjectFlags() & (uint)PrimFlags.AllowInventoryDrop) != 0; @@ -1314,7 +1314,7 @@ namespace OpenSim.Region.Environment.Scenes agentTransactions.HandleTaskItemUpdateFromTransaction( remoteClient, part, transactionID, currentItem); } - if (part.UpdateInventoryItem(itemInfo)) + if (part.Inventory.UpdateInventoryItem(itemInfo)) part.GetProperties(remoteClient); } } @@ -1364,7 +1364,7 @@ namespace OpenSim.Region.Environment.Scenes part.ParentGroup.AddInventoryItem(remoteClient, localID, item, copyID); // TODO: switch to posting on_rez here when scripts // have state in inventory - part.CreateScriptInstance(copyID, 0, false, DefaultScriptEngine, 0); + part.Inventory.CreateScriptInstance(copyID, 0, false, DefaultScriptEngine, 0); // m_log.InfoFormat("[PRIMINVENTORY]: " + // "Rezzed script {0} into prim local ID {1} for user {2}", @@ -1430,10 +1430,10 @@ namespace OpenSim.Region.Environment.Scenes taskItem.PermsMask = 0; taskItem.AssetID = asset.FullID; - part.AddInventoryItem(taskItem, false); + part.Inventory.AddInventoryItem(taskItem, false); part.GetProperties(remoteClient); - part.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0); + part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0); } } @@ -1445,7 +1445,7 @@ namespace OpenSim.Region.Environment.Scenes /// public void RezScript(UUID srcId, SceneObjectPart srcPart, UUID destId, int pin, int running, int start_param) { - TaskInventoryItem srcTaskItem = srcPart.GetInventoryItem(srcId); + TaskInventoryItem srcTaskItem = srcPart.Inventory.GetInventoryItem(srcId); if (srcTaskItem == null) { @@ -1525,11 +1525,11 @@ namespace OpenSim.Region.Environment.Scenes destTaskItem.InvType = srcTaskItem.InvType; destTaskItem.Type = srcTaskItem.Type; - destPart.AddInventoryItemExclusive(destTaskItem, false); + destPart.Inventory.AddInventoryItemExclusive(destTaskItem, false); if (running > 0) { - destPart.CreateScriptInstance(destTaskItem, 0, false, DefaultScriptEngine, 0); + destPart.Inventory.CreateScriptInstance(destTaskItem, 0, false, DefaultScriptEngine, 0); } ScenePresence avatar; @@ -2064,7 +2064,7 @@ namespace OpenSim.Region.Environment.Scenes { part.LastOwnerID = part.OwnerID; part.OwnerID = item.Owner; - part.ChangeInventoryOwner(item.Owner); + part.Inventory.ChangeInventoryOwner(item.Owner); } else if (((item.CurrentPermissions & 8) != 0) && (!attachment)) // Slam! { @@ -2178,7 +2178,7 @@ namespace OpenSim.Region.Environment.Scenes { part.LastOwnerID = part.OwnerID; part.OwnerID = item.OwnerID; - part.ChangeInventoryOwner(item.OwnerID); + part.Inventory.ChangeInventoryOwner(item.OwnerID); } else if ((item.CurrentPermissions & 8) != 0) // Slam! { @@ -2200,7 +2200,7 @@ namespace OpenSim.Region.Environment.Scenes if (!ExternalChecks.ExternalChecksBypassPermissions()) { if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) - sourcePart.RemoveInventoryItem(item.ItemID); + sourcePart.Inventory.RemoveInventoryItem(item.ItemID); } return rootPart.ParentGroup; } @@ -2368,7 +2368,7 @@ namespace OpenSim.Region.Environment.Scenes if (part != null && part.ParentGroup != null) { part.ParentGroup.SetOwnerId(ownerID); - part.ChangeInventoryOwner(ownerID); + part.Inventory.ChangeInventoryOwner(ownerID); part.ParentGroup.SetGroup(groupID, remoteClient); } } diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 221af44924..9c29c44e06 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -4277,8 +4277,8 @@ namespace OpenSim.Region.Environment.Scenes { foreach (SceneObjectPart child in partList) { - child.ChangeInventoryOwner(remoteClient.AgentId); - child.ApplyNextOwnerPermissions(); + child.Inventory.ChangeInventoryOwner(remoteClient.AgentId); + child.Inventory.ApplyNextOwnerPermissions(); } } @@ -4355,13 +4355,13 @@ namespace OpenSim.Region.Environment.Scenes break; case 3: // Sell contents - List invList = part.GetInventoryList(); + List invList = part.Inventory.GetInventoryList(); bool okToSell = true; foreach (UUID invID in invList) { - TaskInventoryItem item = part.GetInventoryItem(invID); + TaskInventoryItem item = part.Inventory.GetInventoryItem(invID); if ((item.CurrentPermissions & (uint)PermissionMask.Transfer) == 0) { diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs index 21c7905244..9ca5564bc6 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs @@ -50,7 +50,7 @@ namespace OpenSim.Region.Environment.Scenes { foreach (SceneObjectPart part in m_parts.Values) { - part.ForceInventoryPersistence(); + part.Inventory.ForceInventoryPersistence(); } } } @@ -66,8 +66,7 @@ namespace OpenSim.Region.Environment.Scenes { foreach (SceneObjectPart part in m_parts.Values) { - part.CreateScriptInstances(startParam, postOnRez, engine, - stateSource); + part.Inventory.CreateScriptInstances(startParam, postOnRez, engine, stateSource); } } } @@ -81,7 +80,7 @@ namespace OpenSim.Region.Environment.Scenes { foreach (SceneObjectPart part in m_parts.Values) { - part.RemoveScriptInstances(); + part.Inventory.RemoveScriptInstances(); } } } @@ -96,7 +95,7 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = GetChildPart(localID); if (part != null) { - return part.GetInventoryFileName(remoteClient, localID); + return part.Inventory.GetInventoryFileName(remoteClient, localID); } else { @@ -118,7 +117,7 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = GetChildPart(localID); if (part != null) { - part.RequestInventoryFile(client, xferManager); + part.Inventory.RequestInventoryFile(client, xferManager); } else { @@ -191,7 +190,7 @@ namespace OpenSim.Region.Environment.Scenes addFromAllowedDrop = remoteClient.AgentId != part.OwnerID; } - part.AddInventoryItem(taskItem, addFromAllowedDrop); + part.Inventory.AddInventoryItem(taskItem, addFromAllowedDrop); return true; } @@ -217,7 +216,7 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = GetChildPart(primID); if (part != null) { - return part.GetInventoryItem(itemID); + return part.Inventory.GetInventoryItem(itemID); } else { @@ -241,7 +240,7 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = GetChildPart(item.ParentPartID); if (part != null) { - part.UpdateInventoryItem(item); + part.Inventory.UpdateInventoryItem(item); return true; } @@ -261,7 +260,7 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = GetChildPart(localID); if (part != null) { - int type = part.RemoveInventoryItem(itemID); + int type = part.Inventory.RemoveInventoryItem(itemID); return type; } @@ -280,7 +279,7 @@ namespace OpenSim.Region.Environment.Scenes foreach (SceneObjectPart part in m_parts.Values) { ownerMask &= part.OwnerMask; - perms &= part.MaskEffectivePermissions(); + perms &= part.Inventory.MaskEffectivePermissions(); } if ((ownerMask & (uint)PermissionMask.Modify) == 0) @@ -303,7 +302,7 @@ namespace OpenSim.Region.Environment.Scenes public void ApplyNextOwnerPermissions() { foreach (SceneObjectPart part in m_parts.Values) - part.ApplyNextOwnerPermissions(); + part.Inventory.ApplyNextOwnerPermissions(); } public string GetStateSnapshot() @@ -313,13 +312,13 @@ namespace OpenSim.Region.Environment.Scenes foreach (SceneObjectPart part in m_parts.Values) { - foreach (string a in part.GetScriptAssemblies()) + foreach (string a in part.Inventory.GetScriptAssemblies()) { if (a != "" && !assemblies.Contains(a)) assemblies.Add(a); } - foreach (KeyValuePair s in part.GetScriptStates()) + foreach (KeyValuePair s in part.Inventory.GetScriptStates()) { states[s.Key] = s.Value; } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index f9eaa892f2..fcda37b905 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -1044,7 +1044,7 @@ namespace OpenSim.Region.Environment.Scenes { foreach (SceneObjectPart part in m_parts.Values) { -// part.RemoveScriptInstances(); +// part.Inventory.RemoveScriptInstances(); List avatars = Scene.GetScenePresences(); for (int i = 0; i < avatars.Count; i++) @@ -1251,7 +1251,7 @@ namespace OpenSim.Region.Environment.Scenes datastore.StoreObject(backup_group, m_scene.RegionInfo.RegionID); - backup_group.ForEachPart(delegate(SceneObjectPart part) { part.ProcessInventoryBackup(datastore); }); + backup_group.ForEachPart(delegate(SceneObjectPart part) { part.Inventory.ProcessInventoryBackup(datastore); }); backup_group = null; } @@ -2828,7 +2828,7 @@ namespace OpenSim.Region.Environment.Scenes foreach (SceneObjectPart part in m_parts.Values) { part.SetGroup(GroupID, client); - part.ChangeInventoryGroup(GroupID); + part.Inventory.ChangeInventoryGroup(GroupID); } HasGroupChanged = true; diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 888643e0b5..250c803dd5 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(); + } + } } - - - - diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPartInventory.cs similarity index 80% rename from OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs rename to OpenSim/Region/Environment/Scenes/SceneObjectPartInventory.cs index ba638e5b3e..0a6f22c9ea 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPartInventory.cs @@ -38,12 +38,17 @@ using OpenSim.Region.Environment.Scenes.Scripting; namespace OpenSim.Region.Environment.Scenes { - public partial class SceneObjectPart : IScriptHost + public class SceneObjectPartInventory { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private string m_inventoryFileName = String.Empty; private int m_inventoryFileNameSerial = 0; + + /// + /// The part to which the inventory belongs. + /// + private SceneObjectPart m_part; /// /// Serial count for inventory file , used to tell if inventory has changed @@ -54,12 +59,41 @@ namespace OpenSim.Region.Environment.Scenes /// /// Holds in memory prim inventory /// - protected TaskInventoryDictionary m_taskInventory = new TaskInventoryDictionary(); + protected TaskInventoryDictionary m_items = new TaskInventoryDictionary(); /// /// Tracks whether inventory has changed since the last persistent backup /// protected bool HasInventoryChanged; + + /// + /// Inventory serial number + /// + public uint Serial + { + get { return m_inventorySerial; } + set { m_inventorySerial = value; } + } + + /// + /// Raw inventory data + /// + public TaskInventoryDictionary Items + { + get { return m_items; } + set { m_items = value; } + } + + /// + /// Constructor + /// + /// + /// A + /// + public SceneObjectPartInventory(SceneObjectPart part) + { + m_part = part; + } /// /// Force the task inventory of this prim to persist at the next update sweep @@ -67,7 +101,7 @@ namespace OpenSim.Region.Environment.Scenes public void ForceInventoryPersistence() { HasInventoryChanged = true; - } + } /// /// Reset UUIDs for all the items in the prim's inventory. This involves either generating @@ -78,40 +112,40 @@ namespace OpenSim.Region.Environment.Scenes /// Link number for the part public void ResetInventoryIDs() { - lock (TaskInventory) + lock (Items) { - if (0 == TaskInventory.Count) + if (0 == Items.Count) return; HasInventoryChanged = true; - ParentGroup.HasGroupChanged = true; - IList items = new List(TaskInventory.Values); - TaskInventory.Clear(); + m_part.ParentGroup.HasGroupChanged = true; + IList items = new List(Items.Values); + Items.Clear(); foreach (TaskInventoryItem item in items) { - item.ResetIDs(UUID); - TaskInventory.Add(item.ItemID, item); + item.ResetIDs(m_part.UUID); + Items.Add(item.ItemID, item); } } } /// - /// Change every item in this prim's inventory to a new owner. + /// Change every item in this inventory to a new owner. /// /// public void ChangeInventoryOwner(UUID ownerId) { - lock (TaskInventory) + lock (Items) { - if (0 == TaskInventory.Count) + if (0 == Items.Count) { return; } HasInventoryChanged = true; - ParentGroup.HasGroupChanged = true; - IList items = new List(TaskInventory.Values); + m_part.ParentGroup.HasGroupChanged = true; + IList items = new List(Items.Values); foreach (TaskInventoryItem item in items) { if (ownerId != item.OwnerID) @@ -123,18 +157,22 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// Change every item in this inventory to a new group. + /// + /// public void ChangeInventoryGroup(UUID groupID) { - lock (TaskInventory) + lock (Items) { - if (0 == TaskInventory.Count) + if (0 == Items.Count) { return; } HasInventoryChanged = true; - ParentGroup.HasGroupChanged = true; - IList items = new List(TaskInventory.Values); + m_part.ParentGroup.HasGroupChanged = true; + IList items = new List(Items.Values); foreach (TaskInventoryItem item in items) { if (groupID != item.GroupID) @@ -150,9 +188,9 @@ namespace OpenSim.Region.Environment.Scenes /// public void CreateScriptInstances(int startParam, bool postOnRez, string engine, int stateSource) { - lock (m_taskInventory) + lock (m_items) { - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in Items.Values) { if ((int)InventoryType.LSL == item.InvType) { @@ -167,14 +205,14 @@ namespace OpenSim.Region.Environment.Scenes /// public void RemoveScriptInstances() { - lock (m_taskInventory) + lock (Items) { - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in Items.Values) { if ((int)InventoryType.LSL == item.InvType) { RemoveScriptInstance(item.ItemID); - RemoveScriptEvents(item.ItemID); + m_part.RemoveScriptEvents(item.ItemID); } } } @@ -192,14 +230,14 @@ namespace OpenSim.Region.Environment.Scenes // "Starting script {0}, {1} in prim {2}, {3}", // item.Name, item.ItemID, Name, UUID); - if (!m_parentGroup.Scene.ExternalChecks.ExternalChecksCanRunScript(item.ItemID, UUID, item.OwnerID)) + if (!m_part.ParentGroup.Scene.ExternalChecks.ExternalChecksCanRunScript(item.ItemID, m_part.UUID, item.OwnerID)) return; - AddFlag(PrimFlags.Scripted); + m_part.AddFlag(PrimFlags.Scripted); - if (!m_parentGroup.Scene.RegionInfo.RegionSettings.DisableScripts) + if (!m_part.ParentGroup.Scene.RegionInfo.RegionSettings.DisableScripts) { - AssetCache cache = m_parentGroup.Scene.AssetCache; + AssetCache cache = m_part.ParentGroup.Scene.AssetCache; cache.GetAsset(item.AssetID, delegate(UUID assetID, AssetBase asset) { @@ -212,13 +250,13 @@ namespace OpenSim.Region.Environment.Scenes } else { - m_taskInventory[item.ItemID].PermsMask = 0; - m_taskInventory[item.ItemID].PermsGranter = UUID.Zero; + m_items[item.ItemID].PermsMask = 0; + m_items[item.ItemID].PermsGranter = UUID.Zero; string script = Utils.BytesToString(asset.Data); - m_parentGroup.Scene.EventManager.TriggerRezScript(LocalId, item.ItemID, script, - startParam, postOnRez, engine, stateSource); - m_parentGroup.AddActiveScriptCount(1); - ScheduleFullUpdate(); + m_part.ParentGroup.Scene.EventManager.TriggerRezScript( + m_part.LocalId, item.ItemID, script, startParam, postOnRez, engine, stateSource); + m_part.ParentGroup.AddActiveScriptCount(1); + m_part.ScheduleFullUpdate(); } }, false); } @@ -232,18 +270,18 @@ namespace OpenSim.Region.Environment.Scenes /// public void CreateScriptInstance(UUID itemId, int startParam, bool postOnRez, string engine, int stateSource) { - lock (m_taskInventory) + lock (m_items) { - if (m_taskInventory.ContainsKey(itemId)) + if (m_items.ContainsKey(itemId)) { - CreateScriptInstance(m_taskInventory[itemId], startParam, postOnRez, engine, stateSource); + CreateScriptInstance(m_items[itemId], startParam, postOnRez, engine, stateSource); } else { m_log.ErrorFormat( "[PRIM INVENTORY]: " + "Couldn't start script with ID {0} since it couldn't be found for prim {1}, {2}", - itemId, Name, UUID); + itemId, m_part.Name, m_part.UUID); } } } @@ -254,17 +292,17 @@ namespace OpenSim.Region.Environment.Scenes /// public void RemoveScriptInstance(UUID itemId) { - if (m_taskInventory.ContainsKey(itemId)) + if (m_items.ContainsKey(itemId)) { - m_parentGroup.Scene.EventManager.TriggerRemoveScript(LocalId, itemId); - m_parentGroup.AddActiveScriptCount(-1); + m_part.ParentGroup.Scene.EventManager.TriggerRemoveScript(m_part.LocalId, itemId); + m_part.ParentGroup.AddActiveScriptCount(-1); } else { m_log.ErrorFormat( "[PRIM INVENTORY]: " + "Couldn't stop script with ID {0} since it couldn't be found for prim {1}, {2}", - itemId, Name, UUID); + itemId, m_part.Name, m_part.UUID); } } @@ -276,7 +314,7 @@ namespace OpenSim.Region.Environment.Scenes /// private bool InventoryContainsName(string name) { - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in Items.Values) { if (item.Name == name) return true; @@ -322,7 +360,7 @@ namespace OpenSim.Region.Environment.Scenes /// public void AddInventoryItemExclusive(TaskInventoryItem item, bool allowedDrop) { - List il = new List(m_taskInventory.Values); + List il = new List(m_items.Values); foreach (TaskInventoryItem i in il) { if (i.Name == item.Name) @@ -355,24 +393,24 @@ namespace OpenSim.Region.Environment.Scenes if (name == String.Empty) return; - item.ParentID = UUID; - item.ParentPartID = UUID; + item.ParentID = m_part.UUID; + item.ParentPartID = m_part.UUID; item.Name = name; - lock (m_taskInventory) + lock (m_items) { - m_taskInventory.Add(item.ItemID, item); + m_items.Add(item.ItemID, item); if (allowedDrop) - TriggerScriptChangedEvent(Changed.ALLOWED_DROP); + m_part.TriggerScriptChangedEvent(Changed.ALLOWED_DROP); else - TriggerScriptChangedEvent(Changed.INVENTORY); + m_part.TriggerScriptChangedEvent(Changed.INVENTORY); } m_inventorySerial++; //m_inventorySerial += 2; HasInventoryChanged = true; - ParentGroup.HasGroupChanged = true; + m_part.ParentGroup.HasGroupChanged = true; } /// @@ -384,12 +422,12 @@ namespace OpenSim.Region.Environment.Scenes /// public void RestoreInventoryItems(ICollection items) { - lock (m_taskInventory) + lock (m_items) { foreach (TaskInventoryItem item in items) { - m_taskInventory.Add(item.ItemID, item); - TriggerScriptChangedEvent(Changed.INVENTORY); + m_items.Add(item.ItemID, item); + m_part.TriggerScriptChangedEvent(Changed.INVENTORY); } } @@ -404,7 +442,7 @@ namespace OpenSim.Region.Environment.Scenes public TaskInventoryItem GetInventoryItem(UUID itemId) { TaskInventoryItem item; - m_taskInventory.TryGetValue(itemId, out item); + m_items.TryGetValue(itemId, out item); return item; } @@ -417,22 +455,20 @@ namespace OpenSim.Region.Environment.Scenes /// false if the item did not exist, true if the update occurred successfully public bool UpdateInventoryItem(TaskInventoryItem item) { - lock (m_taskInventory) + lock (m_items) { - if (m_taskInventory.ContainsKey(item.ItemID)) + if (m_items.ContainsKey(item.ItemID)) { - item.ParentID = UUID; - item.ParentPartID = UUID; - item.Flags=m_taskInventory[item.ItemID].Flags; + item.ParentID = m_part.UUID; + item.ParentPartID = m_part.UUID; + item.Flags = m_items[item.ItemID].Flags; if (item.AssetID == UUID.Zero) { - item.AssetID = m_taskInventory[item.ItemID].AssetID; + item.AssetID = m_items[item.ItemID].AssetID; } else if ((InventoryType)item.Type == InventoryType.Notecard) { - ScenePresence presence = - m_parentGroup.Scene.GetScenePresence( - item.OwnerID); + ScenePresence presence = m_part.ParentGroup.Scene.GetScenePresence(item.OwnerID); if (presence != null) { @@ -441,12 +477,12 @@ namespace OpenSim.Region.Environment.Scenes } } - m_taskInventory[item.ItemID] = item; + m_items[item.ItemID] = item; m_inventorySerial++; - TriggerScriptChangedEvent(Changed.INVENTORY); + m_part.TriggerScriptChangedEvent(Changed.INVENTORY); HasInventoryChanged = true; - ParentGroup.HasGroupChanged = true; + m_part.ParentGroup.HasGroupChanged = true; return true; } @@ -455,18 +491,13 @@ namespace OpenSim.Region.Environment.Scenes m_log.ErrorFormat( "[PRIM INVENTORY]: " + "Tried to retrieve item ID {0} from prim {1}, {2} but the item does not exist in this inventory", - item.ItemID, Name, UUID); + item.ItemID, m_part.Name, m_part.UUID); } } return false; } - public void AddScriptLPS(int count) - { - m_parentGroup.AddScriptLPS(count); - } - /// /// Remove an item from this prim's inventory /// @@ -475,37 +506,36 @@ namespace OpenSim.Region.Environment.Scenes /// in this prim's inventory. public int RemoveInventoryItem(UUID itemID) { - lock (m_taskInventory) + lock (m_items) { - if (m_taskInventory.ContainsKey(itemID)) + if (m_items.ContainsKey(itemID)) { - int type = m_taskInventory[itemID].InvType; - m_taskInventory.Remove(itemID); + int type = m_items[itemID].InvType; + m_items.Remove(itemID); m_inventorySerial++; - TriggerScriptChangedEvent(Changed.INVENTORY); + m_part.TriggerScriptChangedEvent(Changed.INVENTORY); HasInventoryChanged = true; - ParentGroup.HasGroupChanged = true; + m_part.ParentGroup.HasGroupChanged = true; int scriptcount = 0; - lock (m_taskInventory) + lock (m_items) { - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) { if (item.Type == 10) { scriptcount++; } } - } if (scriptcount <= 0) { - RemFlag(PrimFlags.Scripted); + m_part.RemFlag(PrimFlags.Scripted); } - ScheduleFullUpdate(); + m_part.ScheduleFullUpdate(); return type; } @@ -514,7 +544,7 @@ namespace OpenSim.Region.Environment.Scenes m_log.ErrorFormat( "[PRIM INVENTORY]: " + "Tried to remove item ID {0} from prim {1}, {2} but the item does not exist in this inventory", - itemID, Name, UUID); + itemID, m_part.Name, m_part.UUID); } } @@ -545,13 +575,13 @@ namespace OpenSim.Region.Environment.Scenes if (m_inventorySerial > 0) { - client.SendTaskInventory(m_uuid, (short)m_inventorySerial, + client.SendTaskInventory(m_part.UUID, (short)m_inventorySerial, Utils.StringToBytes(GetInventoryFileName())); return true; } else { - client.SendTaskInventory(m_uuid, 0, new byte[0]); + client.SendTaskInventory(m_part.UUID, 0, new byte[0]); return false; } } @@ -567,11 +597,11 @@ namespace OpenSim.Region.Environment.Scenes // Confusingly, the folder item has to be the object id, while the 'parent id' has to be zero. This matches // what appears to happen in the Second Life protocol. If this isn't the case. then various functionality // isn't available (such as drag from prim inventory to agent inventory) - InventoryStringBuilder invString = new InventoryStringBuilder(UUID, UUID.Zero); + InventoryStringBuilder invString = new InventoryStringBuilder(m_part.UUID, UUID.Zero); - lock (m_taskInventory) + lock (m_items) { - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) { UUID ownerID = item.OwnerID; uint everyoneMask = 0; @@ -580,7 +610,7 @@ namespace OpenSim.Region.Environment.Scenes invString.AddItemStart(); invString.AddNameValueLine("item_id", item.ItemID.ToString()); - invString.AddNameValueLine("parent_id", UUID.ToString()); + invString.AddNameValueLine("parent_id", m_part.UUID.ToString()); invString.AddPermissionsStart(); @@ -635,9 +665,9 @@ namespace OpenSim.Region.Environment.Scenes { if (HasInventoryChanged) { - lock (TaskInventory) + lock (Items) { - datastore.StorePrimInventory(UUID, TaskInventory.Values); + datastore.StorePrimInventory(m_part.UUID, Items.Values); } HasInventoryChanged = false; @@ -707,7 +737,7 @@ namespace OpenSim.Region.Environment.Scenes { uint mask=0x7fffffff; - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) { if (item.InvType != 6) { @@ -740,11 +770,7 @@ namespace OpenSim.Region.Environment.Scenes public void ApplyNextOwnerPermissions() { - _baseMask &= _nextOwnerMask; - _ownerMask &= _nextOwnerMask; - _everyoneMask &= _nextOwnerMask; - - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) { if (item.InvType == 6 && (item.CurrentPermissions & 7) != 0) { @@ -760,12 +786,12 @@ namespace OpenSim.Region.Environment.Scenes item.EveryonePermissions &= item.NextPermissions; } - TriggerScriptChangedEvent(Changed.OWNER); + m_part.TriggerScriptChangedEvent(Changed.OWNER); } public void ApplyGodPermissions(uint perms) { - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) { item.CurrentPermissions = perms; item.BasePermissions = perms; @@ -774,7 +800,7 @@ namespace OpenSim.Region.Environment.Scenes public bool ContainsScripts() { - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) { if (item.InvType == 10) { @@ -788,7 +814,7 @@ namespace OpenSim.Region.Environment.Scenes { List ret = new List(); - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) ret.Add(item.ItemID); return ret; @@ -796,11 +822,11 @@ namespace OpenSim.Region.Environment.Scenes public string[] GetScriptAssemblies() { - IScriptModule[] engines = m_parentGroup.Scene.RequestModuleInterfaces(); + IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces(); List ret = new List(); - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) { if (item.InvType == 10) { @@ -821,10 +847,10 @@ namespace OpenSim.Region.Environment.Scenes public Dictionary GetScriptStates() { - IScriptModule[] engines = m_parentGroup.Scene.RequestModuleInterfaces(); + IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces(); Dictionary ret = new Dictionary(); - foreach (TaskInventoryItem item in m_taskInventory.Values) + foreach (TaskInventoryItem item in m_items.Values) { if (item.InvType == 10) { diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 61fa83d73b..b293f9e406 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -2558,7 +2558,7 @@ namespace OpenSim.Region.Environment.Scenes { if (gobj != null) { - if (gobj.RootPart.ContainsScripts()) + if (gobj.RootPart.Inventory.ContainsScripts()) return true; } } diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs index d1dbf94cbf..72766a45ce 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs @@ -268,7 +268,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine localID); TaskInventoryItem item = - part.GetInventoryItem(itemID); + part.Inventory.GetInventoryItem(itemID); ScenePresence presence = myScriptEngine.World.GetScenePresence( diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index fc6024a79e..bd60759fe4 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs @@ -570,15 +570,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine #endregion - public void ResetScript(uint localID, UUID itemID) { InstanceData id = GetScript(localID, itemID); string script = id.Source; StopScript(localID, itemID); SceneObjectPart part = World.GetSceneObjectPart(localID); - part.GetInventoryItem(itemID).PermsMask = 0; - part.GetInventoryItem(itemID).PermsGranter = UUID.Zero; + part.Inventory.GetInventoryItem(itemID).PermsMask = 0; + part.Inventory.GetInventoryItem(itemID).PermsGranter = UUID.Zero; StartScript(localID, itemID, script, id.StartParam, false); } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index a06ed9bdc6..15ce75611f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3320,7 +3320,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { if (item.Name == name) { - m_host.RemoveInventoryItem(item.ItemID); + m_host.Inventory.RemoveInventoryItem(item.ItemID); return; } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index f46fdae56f..3d1fe3b33c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -1032,7 +1032,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api taskItem.PermsMask = 0; taskItem.AssetID = asset.FullID; - m_host.AddInventoryItem(taskItem, false); + m_host.Inventory.AddInventoryItem(taskItem, false); } } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs index 08f5491ef2..983926fc9d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs @@ -302,7 +302,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins if (part.AttachmentPoint != 0) // Attached so ignore continue; - if (part.ContainsScripts()) + if (part.Inventory.ContainsScripts()) { objtype |= ACTIVE | SCRIPTED; // Scripted and active. It COULD have one hidden ... } diff --git a/OpenSim/Region/ScriptEngine/Shared/Helpers.cs b/OpenSim/Region/ScriptEngine/Shared/Helpers.cs index 14266dd8e6..a061fde702 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Helpers.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Helpers.cs @@ -141,7 +141,7 @@ namespace OpenSim.Region.ScriptEngine.Shared foreach (SceneObjectPart p in part.ParentGroup.Children.Values) { - if (p.ContainsScripts()) + if (p.Inventory.ContainsScripts()) { Type |= 0x08; // Scripted break; diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 48463d1d91..ad86494445 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs @@ -696,8 +696,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance Stop(0); SceneObjectPart part=m_Engine.World.GetSceneObjectPart(m_LocalID); - part.GetInventoryItem(m_ItemID).PermsMask = 0; - part.GetInventoryItem(m_ItemID).PermsGranter = UUID.Zero; + part.Inventory.GetInventoryItem(m_ItemID).PermsMask = 0; + part.Inventory.GetInventoryItem(m_ItemID).PermsGranter = UUID.Zero; AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID); m_EventQueue.Clear(); m_Script.ResetVars(); @@ -721,8 +721,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance m_Script.ResetVars(); SceneObjectPart part=m_Engine.World.GetSceneObjectPart(m_LocalID); - part.GetInventoryItem(m_ItemID).PermsMask = 0; - part.GetInventoryItem(m_ItemID).PermsGranter = UUID.Zero; + part.Inventory.GetInventoryItem(m_ItemID).PermsMask = 0; + part.Inventory.GetInventoryItem(m_ItemID).PermsGranter = UUID.Zero; AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID); m_EventQueue.Clear(); diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 98d4f3bfc5..0b19e8564a 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -366,7 +366,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine localID); TaskInventoryItem item = - part.GetInventoryItem(itemID); + part.Inventory.GetInventoryItem(itemID); ScenePresence presence = m_Scene.GetScenePresence( @@ -464,7 +464,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine return false; } - TaskInventoryItem item = part.GetInventoryItem(itemID); + TaskInventoryItem item = part.Inventory.GetInventoryItem(itemID); if (item == null) return false;