blob: d85066b4cb5f90eeff322bc3e97fee1083c5362c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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;
}
/// <summary>
/// This will attempt to convert from an IInventoryItem to an InventoryItem object
/// </summary>
/// <description>
/// In order for this to work the object which implements IInventoryItem must inherit from InventoryItem, otherwise
/// an exception is thrown.
/// </description>
/// <param name="i">
/// The interface to upcast <see cref="IInventoryItem"/>
/// </param>
/// <returns>
/// The object backing the interface implementation <see cref="InventoryItem"/>
/// </returns>
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<T>() 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;
}
}
}
|