OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
InventoryItem.cs
Go to the documentation of this file.
1 /*
2  * Copyright (c) Contributors, http://opensimulator.org/
3  * See CONTRIBUTORS.TXT for a full list of copyright holders.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of the OpenSimulator Project nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 using System;
29 using System.Text;
30 
31 using OpenSim.Framework;
32 using OpenSim.Region.Framework.Scenes;
33 //using OpenSim.Services.AssetService;
34 using OpenMetaverse;
35 using OpenMetaverse.Assets;
36 
37 namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
38 {
40  {
41  TaskInventoryItem m_privateItem;
42  Scene m_rootScene;
43 
44  public InventoryItem(Scene rootScene, TaskInventoryItem internalItem)
45  {
46  m_rootScene = rootScene;
47  m_privateItem = internalItem;
48  }
49 
50  // Marked internal, to prevent scripts from accessing the internal type
51  internal TaskInventoryItem ToTaskInventoryItem()
52  {
53  return m_privateItem;
54  }
55 
69  internal static InventoryItem FromInterface(IInventoryItem i)
70  {
71  if (typeof(InventoryItem).IsAssignableFrom(i.GetType()))
72  {
73  return (InventoryItem)i;
74  }
75  else
76  {
77  throw new ApplicationException("[MRM] There is no legal conversion from IInventoryItem to InventoryItem");
78  }
79  }
80 
81  public int Type { get { return m_privateItem.Type; } }
82  public UUID AssetID { get { return m_privateItem.AssetID; } }
83 
84  // This method exposes OpenSim/OpenMetaverse internals and needs to be replaced with a IAsset specific to MRM.
85  public T RetrieveAsset<T>() where T : OpenMetaverse.Assets.Asset, new()
86  {
87  AssetBase a = m_rootScene.AssetService.Get(AssetID.ToString());
88  T result = new T();
89 
90  if ((sbyte)result.AssetType != a.Type)
91  throw new ApplicationException("[MRM] The supplied asset class does not match the found asset");
92 
93  result.AssetData = a.Data;
94  result.Decode();
95  return result;
96  }
97  }
98 }
InventoryItem(Scene rootScene, TaskInventoryItem internalItem)
Represents an item in a task inventory
sbyte Type
(sbyte) AssetType enum
Definition: AssetBase.cs:198
Asset class. All Assets are reference by this class or a class derived from this class ...
Definition: AssetBase.cs:49
This implements the methods needed to operate on individual inventory items.