diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs index 7490ddad00..79ee4d6080 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs @@ -1,16 +1,16 @@ -using System; -using OpenMetaverse; - -namespace OpenSim.Region.OptionalModules.Scripting.Minimodule -{ - - /// - /// This implements the methods needed to operate on individual inventory items. - /// - public interface IInventoryItem - { - int Type { get; } - UUID AssetID { get; } - T RetreiveAsset() where T : OpenMetaverse.Asset, new(); - } -} +using System; +using OpenMetaverse; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule +{ + + /// + /// This implements the methods needed to operate on individual inventory items. + /// + public interface IInventoryItem + { + int Type { get; } + UUID AssetID { get; } + T RetreiveAsset() where T : OpenMetaverse.Asset, new(); + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/InventoryItem.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/InventoryItem.cs index 512a120e22..d85066b4cb 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/InventoryItem.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/InventoryItem.cs @@ -1,72 +1,72 @@ - -using System; -using System.Text; - -using OpenSim.Framework; -using OpenSim.Region.Framework.Scenes; -//using OpenSim.Services.AssetService; -using OpenMetaverse; - -namespace OpenSim.Region.OptionalModules.Scripting.Minimodule -{ - - - public class InventoryItem : IInventoryItem - { - TaskInventoryItem m_privateItem; - Scene m_rootSceene; - - public InventoryItem(Scene rootScene, TaskInventoryItem internalItem) - { - m_rootSceene = rootScene; - m_privateItem = internalItem; - } - - // Marked internal, to prevent scripts from accessing the internal type - internal TaskInventoryItem ToTaskInventoryItem() - { - return m_privateItem; - } - - /// - /// This will attempt to convert from an IInventoryItem to an InventoryItem object - /// - /// - /// In order for this to work the object which implements IInventoryItem must inherit from InventoryItem, otherwise - /// an exception is thrown. - /// - /// - /// The interface to upcast - /// - /// - /// The object backing the interface implementation - /// - internal static InventoryItem FromInterface(IInventoryItem i) - { - if(typeof(InventoryItem).IsAssignableFrom(i.GetType())) - { - return (InventoryItem)i; - } - else - { - throw new ApplicationException("[MRM] There is no legal conversion from IInventoryItem to InventoryItem"); - } - } - - public int Type { get { return m_privateItem.Type; } } - public UUID AssetID { get { return m_privateItem.AssetID; } } - - public T RetreiveAsset() where T : OpenMetaverse.Asset, new() - { - AssetBase a = m_rootSceene.AssetService.Get(AssetID.ToString()); - T result = new T(); - - if((sbyte)result.AssetType != a.Type) - throw new ApplicationException("[MRM] The supplied asset class does not match the found asset"); - - result.AssetData = a.Data; - result.Decode(); - return result; - } - } -} + +using System; +using System.Text; + +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; +//using OpenSim.Services.AssetService; +using OpenMetaverse; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule +{ + + + public class InventoryItem : IInventoryItem + { + TaskInventoryItem m_privateItem; + Scene m_rootSceene; + + public InventoryItem(Scene rootScene, TaskInventoryItem internalItem) + { + m_rootSceene = rootScene; + m_privateItem = internalItem; + } + + // Marked internal, to prevent scripts from accessing the internal type + internal TaskInventoryItem ToTaskInventoryItem() + { + return m_privateItem; + } + + /// + /// This will attempt to convert from an IInventoryItem to an InventoryItem object + /// + /// + /// In order for this to work the object which implements IInventoryItem must inherit from InventoryItem, otherwise + /// an exception is thrown. + /// + /// + /// The interface to upcast + /// + /// + /// The object backing the interface implementation + /// + internal static InventoryItem FromInterface(IInventoryItem i) + { + if(typeof(InventoryItem).IsAssignableFrom(i.GetType())) + { + return (InventoryItem)i; + } + else + { + throw new ApplicationException("[MRM] There is no legal conversion from IInventoryItem to InventoryItem"); + } + } + + public int Type { get { return m_privateItem.Type; } } + public UUID AssetID { get { return m_privateItem.AssetID; } } + + public T RetreiveAsset() where T : OpenMetaverse.Asset, new() + { + AssetBase a = m_rootSceene.AssetService.Get(AssetID.ToString()); + T result = new T(); + + if((sbyte)result.AssetType != a.Type) + throw new ApplicationException("[MRM] The supplied asset class does not match the found asset"); + + result.AssetData = a.Data; + result.Decode(); + return result; + } + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Object/IObjectInventory.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Object/IObjectInventory.cs index 98ac13d2a1..f03e96fb46 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Object/IObjectInventory.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Object/IObjectInventory.cs @@ -1,17 +1,17 @@ - -using System; -using System.Collections.Generic; - -using OpenMetaverse; - -namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object -{ - - /// - /// This implements the methods neccesary to operate on the inventory of an object - /// - public interface IObjectInventory : IDictionary - { - IInventoryItem this[string name] { get; } - } -} + +using System; +using System.Collections.Generic; + +using OpenMetaverse; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object +{ + + /// + /// This implements the methods neccesary to operate on the inventory of an object + /// + public interface IObjectInventory : IDictionary + { + IInventoryItem this[string name] { get; } + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObjectInventory.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObjectInventory.cs index 19740bd955..8a7681f271 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObjectInventory.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObjectInventory.cs @@ -1,190 +1,190 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -using OpenSim.Framework; -using OpenSim.Region.Framework.Scenes; -using OpenMetaverse; - -namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object -{ - - - public class SOPObjectInventory : IObjectInventory - { - TaskInventoryDictionary m_privateInventory; /// OpenSim's task inventory - Dictionary m_publicInventory; /// MRM's inventory - Scene m_rootScene; - - public SOPObjectInventory(Scene rootScene, TaskInventoryDictionary taskInventory) - { - m_rootScene = rootScene; - m_privateInventory = taskInventory; - m_publicInventory = new Dictionary(); - } - - /// - /// Fully populate the public dictionary with the contents of the private dictionary - /// - /// - /// This will only convert those items which hasn't already been converted. ensuring that - /// no items are converted twice, and that any references already in use are maintained. - /// - private void SynchronizeDictionaries() - { - foreach(TaskInventoryItem privateItem in m_privateInventory.Values) - if(!m_publicInventory.ContainsKey(privateItem.ItemID)) - m_publicInventory.Add(privateItem.ItemID, new InventoryItem(m_rootScene, privateItem)); - } - - #region IDictionary implementation - public void Add (UUID key, IInventoryItem value) - { - m_publicInventory.Add(key, value); - m_privateInventory.Add(key, InventoryItem.FromInterface(value).ToTaskInventoryItem()); - } - - public bool ContainsKey (UUID key) - { - return m_privateInventory.ContainsKey(key); - } - - public bool Remove (UUID key) - { - m_publicInventory.Remove(key); - return m_privateInventory.Remove(key); - } - - public bool TryGetValue (UUID key, out IInventoryItem value) - { - value = null; - - bool result = false; - if(!m_publicInventory.TryGetValue(key, out value)) - { - // wasn't found in the public inventory - TaskInventoryItem privateItem; - - result = m_privateInventory.TryGetValue(key, out privateItem); - if(result) - { - value = new InventoryItem(m_rootScene, privateItem); - m_publicInventory.Add(key, value); // add item, so we don't convert again - } - } else - return true; - - return result; - } - - public ICollection Keys { - get { - return m_privateInventory.Keys; - } - } - - public ICollection Values { - get { - SynchronizeDictionaries(); - return m_publicInventory.Values; - } - } - #endregion - - #region IEnumerable> implementation - public IEnumerator> GetEnumerator () - { - SynchronizeDictionaries(); - return m_publicInventory.GetEnumerator(); - } - - #endregion - - #region IEnumerable implementation - IEnumerator IEnumerable.GetEnumerator () - { - SynchronizeDictionaries(); - return m_publicInventory.GetEnumerator(); - } - - #endregion - - #region ICollection> implementation - public void Add (KeyValuePair item) - { - Add(item.Key, item.Value); - } - - public void Clear () - { - m_publicInventory.Clear(); - m_privateInventory.Clear(); - } - - public bool Contains (KeyValuePair item) - { - return m_privateInventory.ContainsKey(item.Key); - } - - public void CopyTo (KeyValuePair[] array, int arrayIndex) - { - throw new NotImplementedException(); - } - - public bool Remove (KeyValuePair item) - { - return Remove(item.Key); - } - - public int Count { - get { - return m_privateInventory.Count; - } - } - - public bool IsReadOnly { - get { - return false; - } - } - #endregion - - #region Explicit implementations - IInventoryItem System.Collections.Generic.IDictionary.this[UUID key] - { - get { - IInventoryItem result; - if(TryGetValue(key, out result)) - return result; - else - throw new KeyNotFoundException("[MRM] The requrested item ID could not be found"); - } - set { - m_publicInventory[key] = value; - m_privateInventory[key] = InventoryItem.FromInterface(value).ToTaskInventoryItem(); - } - } - - void System.Collections.Generic.ICollection>.CopyTo(System.Collections.Generic.KeyValuePair[] array, int offset) - { - throw new NotImplementedException(); - } - #endregion - - public IInventoryItem this[string name] - { - get { - foreach(TaskInventoryItem i in m_privateInventory.Values) - if(i.Name == name) - { - if(!m_publicInventory.ContainsKey(i.ItemID)) - m_publicInventory.Add(i.ItemID, new InventoryItem(m_rootScene, i)); - - return m_publicInventory[i.ItemID]; - } - throw new KeyNotFoundException(); - } - } - - } -} +using System; +using System.Collections; +using System.Collections.Generic; + +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; +using OpenMetaverse; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object +{ + + + public class SOPObjectInventory : IObjectInventory + { + TaskInventoryDictionary m_privateInventory; /// OpenSim's task inventory + Dictionary m_publicInventory; /// MRM's inventory + Scene m_rootScene; + + public SOPObjectInventory(Scene rootScene, TaskInventoryDictionary taskInventory) + { + m_rootScene = rootScene; + m_privateInventory = taskInventory; + m_publicInventory = new Dictionary(); + } + + /// + /// Fully populate the public dictionary with the contents of the private dictionary + /// + /// + /// This will only convert those items which hasn't already been converted. ensuring that + /// no items are converted twice, and that any references already in use are maintained. + /// + private void SynchronizeDictionaries() + { + foreach(TaskInventoryItem privateItem in m_privateInventory.Values) + if(!m_publicInventory.ContainsKey(privateItem.ItemID)) + m_publicInventory.Add(privateItem.ItemID, new InventoryItem(m_rootScene, privateItem)); + } + + #region IDictionary implementation + public void Add (UUID key, IInventoryItem value) + { + m_publicInventory.Add(key, value); + m_privateInventory.Add(key, InventoryItem.FromInterface(value).ToTaskInventoryItem()); + } + + public bool ContainsKey (UUID key) + { + return m_privateInventory.ContainsKey(key); + } + + public bool Remove (UUID key) + { + m_publicInventory.Remove(key); + return m_privateInventory.Remove(key); + } + + public bool TryGetValue (UUID key, out IInventoryItem value) + { + value = null; + + bool result = false; + if(!m_publicInventory.TryGetValue(key, out value)) + { + // wasn't found in the public inventory + TaskInventoryItem privateItem; + + result = m_privateInventory.TryGetValue(key, out privateItem); + if(result) + { + value = new InventoryItem(m_rootScene, privateItem); + m_publicInventory.Add(key, value); // add item, so we don't convert again + } + } else + return true; + + return result; + } + + public ICollection Keys { + get { + return m_privateInventory.Keys; + } + } + + public ICollection Values { + get { + SynchronizeDictionaries(); + return m_publicInventory.Values; + } + } + #endregion + + #region IEnumerable> implementation + public IEnumerator> GetEnumerator () + { + SynchronizeDictionaries(); + return m_publicInventory.GetEnumerator(); + } + + #endregion + + #region IEnumerable implementation + IEnumerator IEnumerable.GetEnumerator () + { + SynchronizeDictionaries(); + return m_publicInventory.GetEnumerator(); + } + + #endregion + + #region ICollection> implementation + public void Add (KeyValuePair item) + { + Add(item.Key, item.Value); + } + + public void Clear () + { + m_publicInventory.Clear(); + m_privateInventory.Clear(); + } + + public bool Contains (KeyValuePair item) + { + return m_privateInventory.ContainsKey(item.Key); + } + + public void CopyTo (KeyValuePair[] array, int arrayIndex) + { + throw new NotImplementedException(); + } + + public bool Remove (KeyValuePair item) + { + return Remove(item.Key); + } + + public int Count { + get { + return m_privateInventory.Count; + } + } + + public bool IsReadOnly { + get { + return false; + } + } + #endregion + + #region Explicit implementations + IInventoryItem System.Collections.Generic.IDictionary.this[UUID key] + { + get { + IInventoryItem result; + if(TryGetValue(key, out result)) + return result; + else + throw new KeyNotFoundException("[MRM] The requrested item ID could not be found"); + } + set { + m_publicInventory[key] = value; + m_privateInventory[key] = InventoryItem.FromInterface(value).ToTaskInventoryItem(); + } + } + + void System.Collections.Generic.ICollection>.CopyTo(System.Collections.Generic.KeyValuePair[] array, int offset) + { + throw new NotImplementedException(); + } + #endregion + + public IInventoryItem this[string name] + { + get { + foreach(TaskInventoryItem i in m_privateInventory.Values) + if(i.Name == name) + { + if(!m_publicInventory.ContainsKey(i.ItemID)) + m_publicInventory.Add(i.ItemID, new InventoryItem(m_rootScene, i)); + + return m_publicInventory[i.ItemID]; + } + throw new KeyNotFoundException(); + } + } + + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs index 5581fc34a5..387cba026a 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs @@ -1,35 +1,35 @@ -using System; - -using OpenMetaverse; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.OptionalModules.Scripting.Minimodule -{ - public class SPAvatarAttachment : IAvatarAttachment - { - private readonly Scene m_rootScene; - private readonly IAvatar m_parent; - private readonly int m_location; - private readonly UUID m_itemId; - private readonly UUID m_assetId; - - public SPAvatarAttachment(Scene rootScene, IAvatar self, int location, UUID itemId, UUID assetId) - { - m_rootScene = rootScene; - m_parent = self; - m_location = location; - m_itemId = itemId; - m_assetId = assetId; - } - - public int Location { get { return m_location; } } - - public IObject Asset - { - get - { - return new SOPObject(m_rootScene, m_rootScene.GetSceneObjectPart(m_assetId).LocalId); - } - } - } -} +using System; + +using OpenMetaverse; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule +{ + public class SPAvatarAttachment : IAvatarAttachment + { + private readonly Scene m_rootScene; + private readonly IAvatar m_parent; + private readonly int m_location; + private readonly UUID m_itemId; + private readonly UUID m_assetId; + + public SPAvatarAttachment(Scene rootScene, IAvatar self, int location, UUID itemId, UUID assetId) + { + m_rootScene = rootScene; + m_parent = self; + m_location = location; + m_itemId = itemId; + m_assetId = assetId; + } + + public int Location { get { return m_location; } } + + public IObject Asset + { + get + { + return new SOPObject(m_rootScene, m_rootScene.GetSceneObjectPart(m_assetId).LocalId); + } + } + } +}