git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@753 52acb1d6-8a22-11de-b505-999d5b087335
171 lines
5.6 KiB
C#
171 lines
5.6 KiB
C#
using System;
|
|
|
|
using libsecondlife;
|
|
using libsecondlife.AssetSystem;
|
|
|
|
namespace libsecondlife.InventorySystem
|
|
{
|
|
/// <summary>
|
|
/// Summary description for InventoryNotecard.
|
|
/// </summary>
|
|
public class InventoryWearable : InventoryItem
|
|
{
|
|
// Wearable Inventory/Asset constants
|
|
public enum WearableAssetType { Shape = 0, Skin = 1, Hair = 2, Eyes = 3, Socks = 7, Gloves = 9, Pants = 5, Shirt = 4, Shoes = 6, Jacket = 8, Skirt = 12, Underpants = 11 };
|
|
public enum WearableType : sbyte { Clothing = 5, Body = 13 };
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="manager"></param>
|
|
/// <param name="name"></param>
|
|
/// <param name="description"></param>
|
|
/// <param name="folderID"></param>
|
|
/// <param name="uuidOwnerCreater"></param>
|
|
internal InventoryWearable(InventoryManager manager, string name, string description, LLUUID folderID, LLUUID uuidOwnerCreater, WearableType wtype)
|
|
: base(manager, name, description, folderID, 18, (sbyte)wtype, uuidOwnerCreater)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="manager"></param>
|
|
/// <param name="ii"></param>
|
|
internal InventoryWearable(InventoryManager manager, InventoryItem ii)
|
|
: base( manager, ii._Name, ii._Description, ii._FolderID, ii._InvType, ii._Type, ii._CreatorID)
|
|
{
|
|
if( (ii.InvType != 18) )
|
|
{
|
|
throw new Exception("The InventoryItem cannot be converted to a Wearable, wrong InvType.");
|
|
}
|
|
|
|
this.iManager = manager;
|
|
this._ItemID = ii._ItemID;
|
|
this._Asset = ii._Asset;
|
|
this._AssetID = ii._AssetID;
|
|
this._BaseMask = ii._BaseMask;
|
|
this._CRC = ii._CRC;
|
|
this._CreationDate = ii._CreationDate;
|
|
this._EveryoneMask = ii._EveryoneMask;
|
|
this._Flags = ii._Flags;
|
|
this._GroupID = ii._GroupID;
|
|
this._GroupMask = ii._GroupMask;
|
|
this._GroupOwned = ii._GroupOwned;
|
|
this._InvType = ii._InvType;
|
|
this._NextOwnerMask = ii._NextOwnerMask;
|
|
this._OwnerID = ii._OwnerID;
|
|
this._OwnerMask = ii._OwnerMask;
|
|
this._SalePrice = ii._SalePrice;
|
|
this._SaleType = ii._SaleType;
|
|
this._Type = ii._Type;
|
|
}
|
|
|
|
override internal void SetAssetData(byte[] assetData)
|
|
{
|
|
// Must reference all variables by internal _private names, so as not to trigger accessor code
|
|
if (_Asset == null)
|
|
{
|
|
if (_AssetID != null)
|
|
{
|
|
if (_Type == (sbyte)WearableType.Clothing)
|
|
{
|
|
_Asset = new AssetWearable_Clothing(_AssetID, assetData);
|
|
}
|
|
else
|
|
{
|
|
_Asset = new AssetWearable_Body(_AssetID, assetData);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (_Type == (sbyte)WearableType.Clothing)
|
|
{
|
|
_Asset = new AssetWearable_Clothing(LLUUID.Random(), assetData);
|
|
}
|
|
else
|
|
{
|
|
_Asset = new AssetWearable_Body(LLUUID.Random(), assetData);
|
|
}
|
|
_AssetID = _Asset.AssetID;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
_Asset.SetAssetData(assetData);
|
|
}
|
|
}
|
|
|
|
public override string GetDisplayType()
|
|
{
|
|
return "Wearable_" + ((_Type == (sbyte)WearableType.Clothing) ? "Clothing" : "Body");;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Output this image as XML
|
|
/// </summary>
|
|
/// <param name="outputAssets">Include an asset data as well, TRUE/FALSE</param>
|
|
override public string toXML(bool outputAssets)
|
|
{
|
|
string output = "<wearable ";
|
|
|
|
output += "name = '" + xmlSafe(Name) + "' ";
|
|
output += "uuid = '" + ItemID + "' ";
|
|
|
|
if (Type == (sbyte)WearableType.Body)
|
|
{
|
|
output += "wearabletype = 'Body' ";
|
|
}
|
|
else if (Type == (sbyte)WearableType.Clothing)
|
|
{
|
|
output += "wearabletype = 'Clothing' ";
|
|
}
|
|
else
|
|
{
|
|
output += "wearabletype = 'Unknown' ";
|
|
}
|
|
|
|
output += "invtype = '" + InvType + "' ";
|
|
output += "type = '" + Type + "' ";
|
|
|
|
|
|
|
|
output += "description = '" + xmlSafe(Description) + "' ";
|
|
output += "crc = '" + CRC + "' ";
|
|
|
|
output += "ownerid = '" + OwnerID + "' ";
|
|
output += "creatorid = '" + CreatorID + "' ";
|
|
|
|
output += "assetid = '" + AssetID + "' ";
|
|
output += "groupid = '" + GroupID + "' ";
|
|
|
|
output += "groupowned = '" + GroupOwned + "' ";
|
|
output += "creationdate = '" + CreationDate + "' ";
|
|
output += "flags = '" + Flags + "' ";
|
|
|
|
output += "saletype = '" + SaleType + "' ";
|
|
output += "saleprice = '" + SalePrice + "' ";
|
|
output += "basemask = '" + BaseMask + "' ";
|
|
output += "everyonemask = '" + EveryoneMask + "' ";
|
|
output += "nextownermask = '" + NextOwnerMask + "' ";
|
|
output += "groupmask = '" + GroupMask + "' ";
|
|
output += "ownermask = '" + OwnerMask + "' ";
|
|
|
|
output += ">\n";
|
|
|
|
if (outputAssets)
|
|
{
|
|
output += xmlSafe(base.Asset.AssetDataToString());
|
|
}
|
|
|
|
output += "</image>";
|
|
|
|
|
|
return output;
|
|
}
|
|
|
|
}
|
|
}
|