diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 1829c8d47e..72ac3039d1 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -1510,11 +1510,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController for (int i=0; i 0)) - { - OSDArray wears = new OSDArray(Appearance.Wearables.Length * 2); - foreach (AvatarWearable awear in Appearance.Wearables) - { - wears.Add(OSD.FromUUID(awear.ItemID)); - wears.Add(OSD.FromUUID(awear.AssetID)); - //System.Console.WriteLine("XXX ItemID=" + awear.ItemID + " assetID=" + awear.AssetID); - } - args["wearables"] = wears; - } - - //System.Console.WriteLine("XXX Before packing Attachments"); - List attachments = Appearance.GetAttachments(); - if ((attachments != null) && (attachments.Count > 0)) - { - OSDArray attachs = new OSDArray(attachments.Count); - foreach (AvatarAttachment attach in attachments) - { - attachs.Add(attach.Pack()); - //System.Console.WriteLine("XXX att.pt=" + kvp.Key + "; itemID=" + kvp.Value[0] + "; assetID=" + kvp.Value[1]); - } - args["attachments"] = attachs; - } - } - - if (Appearance != null) - { OSDMap appmap = Appearance.Pack(); args["packed_appearance"] = appmap; } @@ -346,28 +317,6 @@ namespace OpenSim.Framework if (args["appearance_serial"] != null) Appearance.Serial = args["appearance_serial"].AsInteger(); - if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array) - { - OSDArray wears = (OSDArray)(args["wearables"]); - for (int i = 0; i < wears.Count / 2; i++) - { - AvatarWearable awear = new AvatarWearable(wears[i*2].AsUUID(),wears[(i*2)+1].AsUUID()); - Appearance.SetWearable(i,awear); - } - } - - if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) - { - OSDArray attachs = (OSDArray)(args["attachments"]); - foreach (OSD o in attachs) - { - if (o.Type == OSDType.Map) - { - Appearance.AppendAttachment(new AvatarAttachment((OSDMap)o)); - } - } - } - if (args.ContainsKey("packed_appearance") && (args["packed_appearance"].Type == OSDType.Map)) { Appearance.Unpack((OSDMap)args["packed_appearance"]); diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 9494410a45..ee60622b26 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -35,104 +35,6 @@ using log4net; namespace OpenSim.Framework { - // A special dictionary for avatar appearance - public struct LayerItem - { - public UUID ItemID; - public UUID AssetID; - - public LayerItem(UUID itemID, UUID assetID) - { - ItemID = itemID; - AssetID = assetID; - } - } - - public class Layer - { - protected int m_layerType; - protected Dictionary m_items = new Dictionary(); - protected List m_ids = new List(); - - public Layer(int type) - { - m_layerType = type; - } - - public int LayerType - { - get { return m_layerType; } - } - - public int Count - { - get { return m_ids.Count; } - } - - public void Add(UUID itemID, UUID assetID) - { - if (m_items.ContainsKey(itemID)) - return; - if (m_ids.Count >= 5) - return; - - m_ids.Add(itemID); - m_items[itemID] = assetID; - } - - public void Wear(UUID itemID, UUID assetID) - { - Clear(); - Add(itemID, assetID); - } - - public void Clear() - { - m_ids.Clear(); - m_items.Clear(); - } - - public void RemoveItem(UUID itemID) - { - if (m_items.ContainsKey(itemID)) - { - m_ids.Remove(itemID); - m_items.Remove(itemID); - } - } - - public void RemoveAsset(UUID assetID) - { - UUID itemID = UUID.Zero; - - foreach (KeyValuePair kvp in m_items) - { - if (kvp.Value == assetID) - { - itemID = kvp.Key; - break; - } - } - - if (itemID != UUID.Zero) - { - m_ids.Remove(itemID); - m_items.Remove(itemID); - } - } - - public LayerItem this [int idx] - { - get - { - if (idx >= m_ids.Count || idx < 0) - return new LayerItem(UUID.Zero, UUID.Zero); - - return new LayerItem(m_ids[idx], m_items[m_ids[idx]]); - } - } - } - /// /// Contains the Avatar's Appearance and methods to manipulate the appearance. /// @@ -184,136 +86,6 @@ namespace OpenSim.Framework set { m_wearables = value; } } - public virtual UUID BodyItem { - get { return m_wearables[AvatarWearable.BODY].ItemID; } - set { m_wearables[AvatarWearable.BODY].ItemID = value; } - } - - public virtual UUID BodyAsset { - get { return m_wearables[AvatarWearable.BODY].AssetID; } - set { m_wearables[AvatarWearable.BODY].AssetID = value; } - } - - public virtual UUID SkinItem { - get { return m_wearables[AvatarWearable.SKIN].ItemID; } - set { m_wearables[AvatarWearable.SKIN].ItemID = value; } - } - - public virtual UUID SkinAsset { - get { return m_wearables[AvatarWearable.SKIN].AssetID; } - set { m_wearables[AvatarWearable.SKIN].AssetID = value; } - } - - public virtual UUID HairItem { - get { return m_wearables[AvatarWearable.HAIR].ItemID; } - set { m_wearables[AvatarWearable.HAIR].ItemID = value; } - } - - public virtual UUID HairAsset { - get { return m_wearables[AvatarWearable.HAIR].AssetID; } - set { m_wearables[AvatarWearable.HAIR].AssetID = value; } - } - - public virtual UUID EyesItem { - get { return m_wearables[AvatarWearable.EYES].ItemID; } - set { m_wearables[AvatarWearable.EYES].ItemID = value; } - } - - public virtual UUID EyesAsset { - get { return m_wearables[AvatarWearable.EYES].AssetID; } - set { m_wearables[AvatarWearable.EYES].AssetID = value; } - } - - public virtual UUID ShirtItem { - get { return m_wearables[AvatarWearable.SHIRT].ItemID; } - set { m_wearables[AvatarWearable.SHIRT].ItemID = value; } - } - - public virtual UUID ShirtAsset { - get { return m_wearables[AvatarWearable.SHIRT].AssetID; } - set { m_wearables[AvatarWearable.SHIRT].AssetID = value; } - } - - public virtual UUID PantsItem { - get { return m_wearables[AvatarWearable.PANTS].ItemID; } - set { m_wearables[AvatarWearable.PANTS].ItemID = value; } - } - - public virtual UUID PantsAsset { - get { return m_wearables[AvatarWearable.PANTS].AssetID; } - set { m_wearables[AvatarWearable.PANTS].AssetID = value; } - } - - public virtual UUID ShoesItem { - get { return m_wearables[AvatarWearable.SHOES].ItemID; } - set { m_wearables[AvatarWearable.SHOES].ItemID = value; } - } - - public virtual UUID ShoesAsset { - get { return m_wearables[AvatarWearable.SHOES].AssetID; } - set { m_wearables[AvatarWearable.SHOES].AssetID = value; } - } - - public virtual UUID SocksItem { - get { return m_wearables[AvatarWearable.SOCKS].ItemID; } - set { m_wearables[AvatarWearable.SOCKS].ItemID = value; } - } - - public virtual UUID SocksAsset { - get { return m_wearables[AvatarWearable.SOCKS].AssetID; } - set { m_wearables[AvatarWearable.SOCKS].AssetID = value; } - } - - public virtual UUID JacketItem { - get { return m_wearables[AvatarWearable.JACKET].ItemID; } - set { m_wearables[AvatarWearable.JACKET].ItemID = value; } - } - - public virtual UUID JacketAsset { - get { return m_wearables[AvatarWearable.JACKET].AssetID; } - set { m_wearables[AvatarWearable.JACKET].AssetID = value; } - } - - public virtual UUID GlovesItem { - get { return m_wearables[AvatarWearable.GLOVES].ItemID; } - set { m_wearables[AvatarWearable.GLOVES].ItemID = value; } - } - - public virtual UUID GlovesAsset { - get { return m_wearables[AvatarWearable.GLOVES].AssetID; } - set { m_wearables[AvatarWearable.GLOVES].AssetID = value; } - } - - public virtual UUID UnderShirtItem { - get { return m_wearables[AvatarWearable.UNDERSHIRT].ItemID; } - set { m_wearables[AvatarWearable.UNDERSHIRT].ItemID = value; } - } - - public virtual UUID UnderShirtAsset { - get { return m_wearables[AvatarWearable.UNDERSHIRT].AssetID; } - set { m_wearables[AvatarWearable.UNDERSHIRT].AssetID = value; } - } - - public virtual UUID UnderPantsItem { - get { return m_wearables[AvatarWearable.UNDERPANTS].ItemID; } - set { m_wearables[AvatarWearable.UNDERPANTS].ItemID = value; } - } - - public virtual UUID UnderPantsAsset { - get { return m_wearables[AvatarWearable.UNDERPANTS].AssetID; } - set { m_wearables[AvatarWearable.UNDERPANTS].AssetID = value; } - } - - public virtual UUID SkirtItem { - get { return m_wearables[AvatarWearable.SKIRT].ItemID; } - set { m_wearables[AvatarWearable.SKIRT].ItemID = value; } - } - - public virtual UUID SkirtAsset { - get { return m_wearables[AvatarWearable.SKIRT].AssetID; } - set { m_wearables[AvatarWearable.SKIRT].AssetID = value; } - } - public virtual float AvatarHeight { get { return m_avatarHeight; } @@ -403,7 +175,7 @@ namespace OpenSim.Framework m_wearables = null; if (appearance.Wearables != null) { - m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 13 of these + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 15 of these for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) SetWearable(i,appearance.Wearables[i]); } @@ -547,7 +319,9 @@ namespace OpenSim.Framework // DEBUG ON // m_log.WarnFormat("[AVATARAPPEARANCE] set wearable {0} --> {1}:{2}",wearableId,wearable.ItemID,wearable.AssetID); // DEBUG OFF - m_wearables[wearableId] = new AvatarWearable(wearable.ItemID,wearable.AssetID); + m_wearables[wearableId].Clear(); + for (int i = 0 ; i < wearable.Count ; i++) + m_wearables[wearableId].Add(wearable[i].ItemID, wearable[i].AssetID); } @@ -563,7 +337,10 @@ namespace OpenSim.Framework s += String.Format("Texture: {0} --> {1}\n",i,m_texture.FaceTextures[i].TextureID); foreach (AvatarWearable awear in m_wearables) - s += String.Format("Wearable: item={0}, asset={1}\n",awear.ItemID,awear.AssetID); + { + for ( int i = 0 ; i < awear.Count ; i++ ) + s += String.Format("Wearable: item={0}, asset={1}\n",awear[i].ItemID,awear[i].AssetID); + } s += "Visual Params: "; for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++) @@ -733,7 +510,7 @@ namespace OpenSim.Framework { OSDArray wears = (OSDArray)(data["wearables"]); for (int i = 0; i < wears.Count; i++) - m_wearables[i] = new AvatarWearable((OSDMap)wears[i]); + m_wearables[i] = new AvatarWearable((OSDArray)wears[i]); } else { diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs index 87098bf6d0..631971f4e2 100644 --- a/OpenSim/Framework/AvatarWearable.cs +++ b/OpenSim/Framework/AvatarWearable.cs @@ -26,11 +26,24 @@ */ using System; +using System.Collections.Generic; using OpenMetaverse; using OpenMetaverse.StructuredData; namespace OpenSim.Framework { + public struct WearableItem + { + public UUID ItemID; + public UUID AssetID; + + public WearableItem(UUID itemID, UUID assetID) + { + ItemID = itemID; + AssetID = assetID; + } + } + public class AvatarWearable { // these are guessed at by the list here - @@ -49,8 +62,10 @@ namespace OpenSim.Framework public static readonly int UNDERSHIRT = 10; public static readonly int UNDERPANTS = 11; public static readonly int SKIRT = 12; + public static readonly int ALPHA = 13; + public static readonly int TATTOO = 15; - public static readonly int MAX_WEARABLES = 13; + public static readonly int MAX_WEARABLES = 15; public static readonly UUID DEFAULT_BODY_ITEM = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9"); public static readonly UUID DEFAULT_BODY_ASSET = new UUID("66c41e39-38f9-f75a-024e-585989bfab73"); @@ -67,68 +82,158 @@ namespace OpenSim.Framework public static readonly UUID DEFAULT_PANTS_ITEM = new UUID("77c41e39-38f9-f75a-0000-5859892f1111"); public static readonly UUID DEFAULT_PANTS_ASSET = new UUID("00000000-38f9-1111-024e-222222111120"); - public UUID AssetID; - public UUID ItemID; + public static readonly UUID DEFAULT_ALPHA_ITEM = new UUID("bfb9923c-4838-4d2d-bf07-608c5b1165c8"); + public static readonly UUID DEFAULT_ALPHA_ASSET = new UUID("1578a2b1-5179-4b53-b618-fe00ca5a5594"); + + public static readonly UUID DEFAULT_TATTOO_ITEM = new UUID("c47e22bd-3021-4ba4-82aa-2b5cb34d35e1"); + public static readonly UUID DEFAULT_TATTOO_ASSET = new UUID("00000000-0000-2222-3333-100000001007"); + + + protected Dictionary m_items = new Dictionary(); + protected List m_ids = new List(); public AvatarWearable() { } - public AvatarWearable(UUID itemId, UUID assetId) + public AvatarWearable(UUID itemID, UUID assetID) { - AssetID = assetId; - ItemID = itemId; + Wear(itemID, assetID); } - public AvatarWearable(OSDMap args) + public AvatarWearable(OSDArray args) { Unpack(args); } - public OSDMap Pack() + public OSD Pack() { - OSDMap weardata = new OSDMap(); - weardata["item"] = OSD.FromUUID(ItemID); - weardata["asset"] = OSD.FromUUID(AssetID); + OSDArray wearlist = new OSDArray(); - return weardata; + foreach (UUID id in m_ids) + { + OSDMap weardata = new OSDMap(); + weardata["item"] = OSD.FromUUID(id); + weardata["asset"] = OSD.FromUUID(m_items[id]); + wearlist.Add(weardata); + } + + return wearlist; } - public void Unpack(OSDMap args) + public void Unpack(OSDArray args) { - ItemID = (args["item"] != null) ? args["item"].AsUUID() : UUID.Zero; - AssetID = (args["asset"] != null) ? args["asset"].AsUUID() : UUID.Zero; + Clear(); + + foreach (OSDMap weardata in args) + { + Add(weardata["item"].AsUUID(), weardata["asset"].AsUUID()); + } + } + + public int Count + { + get { return m_ids.Count; } + } + + public void Add(UUID itemID, UUID assetID) + { + if (itemID == UUID.Zero) + return; + if (m_items.ContainsKey(itemID)) + { + m_items[itemID] = assetID; + return; + } + if (m_ids.Count >= 5) + return; + + m_ids.Add(itemID); + m_items[itemID] = assetID; + } + + public void Wear(UUID itemID, UUID assetID) + { + Clear(); + Add(itemID, assetID); + } + + public void Clear() + { + m_ids.Clear(); + m_items.Clear(); + } + + public void RemoveItem(UUID itemID) + { + if (m_items.ContainsKey(itemID)) + { + m_ids.Remove(itemID); + m_items.Remove(itemID); + } + } + + public void RemoveAsset(UUID assetID) + { + UUID itemID = UUID.Zero; + + foreach (KeyValuePair kvp in m_items) + { + if (kvp.Value == assetID) + { + itemID = kvp.Key; + break; + } + } + + if (itemID != UUID.Zero) + { + m_ids.Remove(itemID); + m_items.Remove(itemID); + } + } + + public WearableItem this [int idx] + { + get + { + if (idx >= m_ids.Count || idx < 0) + return new WearableItem(UUID.Zero, UUID.Zero); + + return new WearableItem(m_ids[idx], m_items[m_ids[idx]]); + } } public static AvatarWearable[] DefaultWearables { get { - AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 13 of these + AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 15 of these for (int i = 0; i < MAX_WEARABLES; i++) { defaultWearables[i] = new AvatarWearable(); } // Body - defaultWearables[0].ItemID = DEFAULT_BODY_ITEM; - defaultWearables[0].AssetID = DEFAULT_BODY_ASSET; + defaultWearables[BODY].Add(DEFAULT_BODY_ITEM, DEFAULT_BODY_ASSET); // Hair - defaultWearables[2].ItemID = DEFAULT_HAIR_ITEM; - defaultWearables[2].AssetID = DEFAULT_HAIR_ASSET; + defaultWearables[HAIR].Add(DEFAULT_HAIR_ITEM, DEFAULT_HAIR_ASSET); // Skin - defaultWearables[1].ItemID = DEFAULT_SKIN_ITEM; - defaultWearables[1].AssetID = DEFAULT_SKIN_ASSET; + defaultWearables[SKIN].Add(DEFAULT_SKIN_ITEM, DEFAULT_SKIN_ASSET); // Shirt - defaultWearables[4].ItemID = DEFAULT_SHIRT_ITEM; - defaultWearables[4].AssetID = DEFAULT_SHIRT_ASSET; + defaultWearables[SHIRT].Add(DEFAULT_SHIRT_ITEM, DEFAULT_SHIRT_ASSET); // Pants - defaultWearables[5].ItemID = DEFAULT_PANTS_ITEM; - defaultWearables[5].AssetID = DEFAULT_PANTS_ASSET; + defaultWearables[PANTS].Add(DEFAULT_PANTS_ITEM, DEFAULT_PANTS_ASSET); + + // Alpha + defaultWearables[ALPHA].Add(DEFAULT_ALPHA_ITEM, DEFAULT_ALPHA_ASSET); + + // Tattoo + defaultWearables[TATTOO].Add(DEFAULT_TATTOO_ITEM, DEFAULT_TATTOO_ASSET); return defaultWearables; } diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index 66487f72e0..ddfaaed4b0 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs @@ -414,12 +414,10 @@ namespace OpenSim.Framework // We might not pass this in all cases... if ((Appearance.Wearables != null) && (Appearance.Wearables.Length > 0)) { - OSDArray wears = new OSDArray(Appearance.Wearables.Length * 2); + OSDArray wears = new OSDArray(Appearance.Wearables.Length); foreach (AvatarWearable awear in Appearance.Wearables) - { - wears.Add(OSD.FromUUID(awear.ItemID)); - wears.Add(OSD.FromUUID(awear.AssetID)); - } + wears.Add(awear.Pack()); + args["wearables"] = wears; } @@ -592,7 +590,7 @@ namespace OpenSim.Framework OSDArray wears = (OSDArray)(args["wearables"]); for (int i = 0; i < wears.Count / 2; i++) { - AvatarWearable awear = new AvatarWearable(wears[i*2].AsUUID(),wears[(i*2)+1].AsUUID()); + AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]); Appearance.SetWearable(i,awear); } } diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs index c88e0d18ed..c9d4c93d49 100644 --- a/OpenSim/Framework/Servers/VersionInfo.cs +++ b/OpenSim/Framework/Servers/VersionInfo.cs @@ -69,6 +69,6 @@ namespace OpenSim /// of the code that is too old. /// /// - public readonly static int MajorInterfaceVersion = 6; + public readonly static int MajorInterfaceVersion = 7; } } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 14f923dd1f..d7458b7bce 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -3387,20 +3387,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP aw.AgentData.SerialNum = (uint)serial; aw.AgentData.SessionID = m_sessionId; + int count = 0; + for (int i = 0; i < wearables.Length; i++) + count += wearables[i].Count; + // TODO: don't create new blocks if recycling an old packet - aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13]; + aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[count]; AgentWearablesUpdatePacket.WearableDataBlock awb; + int idx = 0; for (int i = 0; i < wearables.Length; i++) { - awb = new AgentWearablesUpdatePacket.WearableDataBlock(); - awb.WearableType = (byte)i; - awb.AssetID = wearables[i].AssetID; - awb.ItemID = wearables[i].ItemID; - aw.WearableData[i] = awb; + for (int j = 0; j < wearables[i].Count; j++) + { + awb = new AgentWearablesUpdatePacket.WearableDataBlock(); + awb.WearableType = (byte)i; + awb.AssetID = wearables[i][j].AssetID; + awb.ItemID = wearables[i][j].ItemID; + aw.WearableData[idx] = awb; + idx++; // m_log.DebugFormat( // "[APPEARANCE]: Sending wearable item/asset {0} {1} (index {2}) for {3}", // awb.ItemID, awb.AssetID, i, Name); + } } OutPacket(aw, ThrottleOutPacketType.Task); diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index e2755c8c6f..6cbd8bdf58 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -382,27 +382,22 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory { for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) { - if (appearance.Wearables[i].ItemID == UUID.Zero) + for (int j = 0 ; j < appearance.Wearables[j].Count ; j ++ ) { - appearance.Wearables[i].AssetID = UUID.Zero; - } - else - { - InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i].ItemID, userID); + InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i][j].ItemID, userID); baseItem = invService.GetItem(baseItem); if (baseItem != null) { - appearance.Wearables[i].AssetID = baseItem.AssetID; + appearance.Wearables[i].Add(appearance.Wearables[i][j].ItemID, baseItem.AssetID); } else { m_log.ErrorFormat( "[AVATAR FACTORY MODULE]: Can't find inventory item {0} for {1}, setting to default", - appearance.Wearables[i].ItemID, (WearableType)i); + appearance.Wearables[i][j].ItemID, (WearableType)i); - appearance.Wearables[i].ItemID = UUID.Zero; - appearance.Wearables[i].AssetID = UUID.Zero; + appearance.Wearables[i].RemoveItem(appearance.Wearables[i][j].ItemID); } } } diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs index ea9b4b430d..7a28c2b737 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs @@ -265,32 +265,33 @@ namespace OpenSim.Services.Connectors.SimianGrid map["Height"] = OSD.FromReal(appearance.AvatarHeight); - map["ShapeItem"] = OSD.FromUUID(appearance.BodyItem); - map["ShapeAsset"] = OSD.FromUUID(appearance.BodyAsset); - map["SkinItem"] = OSD.FromUUID(appearance.SkinItem); - map["SkinAsset"] = OSD.FromUUID(appearance.SkinAsset); - map["HairItem"] = OSD.FromUUID(appearance.HairItem); - map["HairAsset"] = OSD.FromUUID(appearance.HairAsset); - map["EyesItem"] = OSD.FromUUID(appearance.EyesItem); - map["EyesAsset"] = OSD.FromUUID(appearance.EyesAsset); - map["ShirtItem"] = OSD.FromUUID(appearance.ShirtItem); - map["ShirtAsset"] = OSD.FromUUID(appearance.ShirtAsset); - map["PantsItem"] = OSD.FromUUID(appearance.PantsItem); - map["PantsAsset"] = OSD.FromUUID(appearance.PantsAsset); - map["ShoesItem"] = OSD.FromUUID(appearance.ShoesItem); - map["ShoesAsset"] = OSD.FromUUID(appearance.ShoesAsset); - map["SocksItem"] = OSD.FromUUID(appearance.SocksItem); - map["SocksAsset"] = OSD.FromUUID(appearance.SocksAsset); - map["JacketItem"] = OSD.FromUUID(appearance.JacketItem); - map["JacketAsset"] = OSD.FromUUID(appearance.JacketAsset); - map["GlovesItem"] = OSD.FromUUID(appearance.GlovesItem); - map["GlovesAsset"] = OSD.FromUUID(appearance.GlovesAsset); - map["UndershirtItem"] = OSD.FromUUID(appearance.UnderShirtItem); - map["UndershirtAsset"] = OSD.FromUUID(appearance.UnderShirtAsset); - map["UnderpantsItem"] = OSD.FromUUID(appearance.UnderPantsItem); - map["UnderpantsAsset"] = OSD.FromUUID(appearance.UnderPantsAsset); - map["SkirtItem"] = OSD.FromUUID(appearance.SkirtItem); - map["SkirtAsset"] = OSD.FromUUID(appearance.SkirtAsset); + map["BodyItem"] = appearance.Wearables[AvatarWearable.BODY][0].ItemID.ToString(); + map["EyesItem"] = appearance.Wearables[AvatarWearable.EYES][0].ItemID.ToString(); + map["GlovesItem"] = appearance.Wearables[AvatarWearable.GLOVES][0].ItemID.ToString(); + map["HairItem"] = appearance.Wearables[AvatarWearable.HAIR][0].ItemID.ToString(); + map["JacketItem"] = appearance.Wearables[AvatarWearable.JACKET][0].ItemID.ToString(); + map["PantsItem"] = appearance.Wearables[AvatarWearable.PANTS][0].ItemID.ToString(); + map["ShirtItem"] = appearance.Wearables[AvatarWearable.SHIRT][0].ItemID.ToString(); + map["ShoesItem"] = appearance.Wearables[AvatarWearable.SHOES][0].ItemID.ToString(); + map["SkinItem"] = appearance.Wearables[AvatarWearable.SKIN][0].ItemID.ToString(); + map["SkirtItem"] = appearance.Wearables[AvatarWearable.SKIRT][0].ItemID.ToString(); + map["SocksItem"] = appearance.Wearables[AvatarWearable.SOCKS][0].ItemID.ToString(); + map["UnderPantsItem"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].ItemID.ToString(); + map["UnderShirtItem"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].ItemID.ToString(); + map["BodyAsset"] = appearance.Wearables[AvatarWearable.BODY][0].AssetID.ToString(); + map["EyesAsset"] = appearance.Wearables[AvatarWearable.EYES][0].AssetID.ToString(); + map["GlovesAsset"] = appearance.Wearables[AvatarWearable.GLOVES][0].AssetID.ToString(); + map["HairAsset"] = appearance.Wearables[AvatarWearable.HAIR][0].AssetID.ToString(); + map["JacketAsset"] = appearance.Wearables[AvatarWearable.JACKET][0].AssetID.ToString(); + map["PantsAsset"] = appearance.Wearables[AvatarWearable.PANTS][0].AssetID.ToString(); + map["ShirtAsset"] = appearance.Wearables[AvatarWearable.SHIRT][0].AssetID.ToString(); + map["ShoesAsset"] = appearance.Wearables[AvatarWearable.SHOES][0].AssetID.ToString(); + map["SkinAsset"] = appearance.Wearables[AvatarWearable.SKIN][0].AssetID.ToString(); + map["SkirtAsset"] = appearance.Wearables[AvatarWearable.SKIRT][0].AssetID.ToString(); + map["SocksAsset"] = appearance.Wearables[AvatarWearable.SOCKS][0].AssetID.ToString(); + map["UnderPantsAsset"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].AssetID.ToString(); + map["UnderShirtAsset"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].AssetID.ToString(); + OSDMap items = new OSDMap(); foreach (KeyValuePair kvp in avatar.Data) diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index eaa653439e..a029fbc619 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs @@ -149,33 +149,33 @@ namespace OpenSim.Services.Interfaces Data["Serial"] = appearance.Serial.ToString(); // Wearables Data["AvatarHeight"] = appearance.AvatarHeight.ToString(); - Data["BodyItem"] = appearance.BodyItem.ToString(); - Data["EyesItem"] = appearance.EyesItem.ToString(); - Data["GlovesItem"] = appearance.GlovesItem.ToString(); - Data["HairItem"] = appearance.HairItem.ToString(); - Data["JacketItem"] = appearance.JacketItem.ToString(); - Data["PantsItem"] = appearance.PantsItem.ToString(); - Data["ShirtItem"] = appearance.ShirtItem.ToString(); - Data["ShoesItem"] = appearance.ShoesItem.ToString(); - Data["SkinItem"] = appearance.SkinItem.ToString(); - Data["SkirtItem"] = appearance.SkirtItem.ToString(); - Data["SocksItem"] = appearance.SocksItem.ToString(); - Data["UnderPantsItem"] = appearance.UnderPantsItem.ToString(); - Data["UnderShirtItem"] = appearance.UnderShirtItem.ToString(); + Data["BodyItem"] = appearance.Wearables[AvatarWearable.BODY][0].ItemID.ToString(); + Data["EyesItem"] = appearance.Wearables[AvatarWearable.EYES][0].ItemID.ToString(); + Data["GlovesItem"] = appearance.Wearables[AvatarWearable.GLOVES][0].ItemID.ToString(); + Data["HairItem"] = appearance.Wearables[AvatarWearable.HAIR][0].ItemID.ToString(); + Data["JacketItem"] = appearance.Wearables[AvatarWearable.JACKET][0].ItemID.ToString(); + Data["PantsItem"] = appearance.Wearables[AvatarWearable.PANTS][0].ItemID.ToString(); + Data["ShirtItem"] = appearance.Wearables[AvatarWearable.SHIRT][0].ItemID.ToString(); + Data["ShoesItem"] = appearance.Wearables[AvatarWearable.SHOES][0].ItemID.ToString(); + Data["SkinItem"] = appearance.Wearables[AvatarWearable.SKIN][0].ItemID.ToString(); + Data["SkirtItem"] = appearance.Wearables[AvatarWearable.SKIRT][0].ItemID.ToString(); + Data["SocksItem"] = appearance.Wearables[AvatarWearable.SOCKS][0].ItemID.ToString(); + Data["UnderPantsItem"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].ItemID.ToString(); + Data["UnderShirtItem"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].ItemID.ToString(); - Data["BodyAsset"] = appearance.BodyAsset.ToString(); - Data["EyesAsset"] = appearance.EyesAsset.ToString(); - Data["GlovesAsset"] = appearance.GlovesAsset.ToString(); - Data["HairAsset"] = appearance.HairAsset.ToString(); - Data["JacketAsset"] = appearance.JacketAsset.ToString(); - Data["PantsAsset"] = appearance.PantsAsset.ToString(); - Data["ShirtAsset"] = appearance.ShirtAsset.ToString(); - Data["ShoesAsset"] = appearance.ShoesAsset.ToString(); - Data["SkinAsset"] = appearance.SkinAsset.ToString(); - Data["SkirtAsset"] = appearance.SkirtAsset.ToString(); - Data["SocksAsset"] = appearance.SocksAsset.ToString(); - Data["UnderPantsAsset"] = appearance.UnderPantsAsset.ToString(); - Data["UnderShirtAsset"] = appearance.UnderShirtAsset.ToString(); + Data["BodyAsset"] = appearance.Wearables[AvatarWearable.BODY][0].AssetID.ToString(); + Data["EyesAsset"] = appearance.Wearables[AvatarWearable.EYES][0].AssetID.ToString(); + Data["GlovesAsset"] = appearance.Wearables[AvatarWearable.GLOVES][0].AssetID.ToString(); + Data["HairAsset"] = appearance.Wearables[AvatarWearable.HAIR][0].AssetID.ToString(); + Data["JacketAsset"] = appearance.Wearables[AvatarWearable.JACKET][0].AssetID.ToString(); + Data["PantsAsset"] = appearance.Wearables[AvatarWearable.PANTS][0].AssetID.ToString(); + Data["ShirtAsset"] = appearance.Wearables[AvatarWearable.SHIRT][0].AssetID.ToString(); + Data["ShoesAsset"] = appearance.Wearables[AvatarWearable.SHOES][0].AssetID.ToString(); + Data["SkinAsset"] = appearance.Wearables[AvatarWearable.SKIN][0].AssetID.ToString(); + Data["SkirtAsset"] = appearance.Wearables[AvatarWearable.SKIRT][0].AssetID.ToString(); + Data["SocksAsset"] = appearance.Wearables[AvatarWearable.SOCKS][0].AssetID.ToString(); + Data["UnderPantsAsset"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].AssetID.ToString(); + Data["UnderShirtAsset"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].AssetID.ToString(); // Attachments List attachments = appearance.GetAttachments(); @@ -193,33 +193,57 @@ namespace OpenSim.Services.Interfaces appearance.Serial = Int32.Parse(Data["Serial"]); // Wearables - appearance.BodyItem = UUID.Parse(Data["BodyItem"]); - appearance.EyesItem = UUID.Parse(Data["EyesItem"]); - appearance.GlovesItem = UUID.Parse(Data["GlovesItem"]); - appearance.HairItem = UUID.Parse(Data["HairItem"]); - appearance.JacketItem = UUID.Parse(Data["JacketItem"]); - appearance.PantsItem = UUID.Parse(Data["PantsItem"]); - appearance.ShirtItem = UUID.Parse(Data["ShirtItem"]); - appearance.ShoesItem = UUID.Parse(Data["ShoesItem"]); - appearance.SkinItem = UUID.Parse(Data["SkinItem"]); - appearance.SkirtItem = UUID.Parse(Data["SkirtItem"]); - appearance.SocksItem = UUID.Parse(Data["SocksItem"]); - appearance.UnderPantsItem = UUID.Parse(Data["UnderPantsItem"]); - appearance.UnderShirtItem = UUID.Parse(Data["UnderShirtItem"]); + appearance.Wearables[AvatarWearable.BODY].Wear( + UUID.Parse(Data["BodyItem"]), + UUID.Parse(Data["BodyAsset"])); - appearance.BodyAsset = UUID.Parse(Data["BodyAsset"]); - appearance.EyesAsset = UUID.Parse(Data["EyesAsset"]); - appearance.GlovesAsset = UUID.Parse(Data["GlovesAsset"]); - appearance.HairAsset = UUID.Parse(Data["HairAsset"]); - appearance.JacketAsset = UUID.Parse(Data["JacketAsset"]); - appearance.PantsAsset = UUID.Parse(Data["PantsAsset"]); - appearance.ShirtAsset = UUID.Parse(Data["ShirtAsset"]); - appearance.ShoesAsset = UUID.Parse(Data["ShoesAsset"]); - appearance.SkinAsset = UUID.Parse(Data["SkinAsset"]); - appearance.SkirtAsset = UUID.Parse(Data["SkirtAsset"]); - appearance.SocksAsset = UUID.Parse(Data["SocksAsset"]); - appearance.UnderPantsAsset = UUID.Parse(Data["UnderPantsAsset"]); - appearance.UnderShirtAsset = UUID.Parse(Data["UnderShirtAsset"]); + appearance.Wearables[AvatarWearable.SKIN].Wear( + UUID.Parse(Data["SkinItem"]), + UUID.Parse(Data["SkinAsset"])); + + appearance.Wearables[AvatarWearable.HAIR].Wear( + UUID.Parse(Data["HairItem"]), + UUID.Parse(Data["HairAsset"])); + + appearance.Wearables[AvatarWearable.EYES].Wear( + UUID.Parse(Data["EyesItem"]), + UUID.Parse(Data["EyesAsset"])); + + appearance.Wearables[AvatarWearable.SHIRT].Wear( + UUID.Parse(Data["ShirtItem"]), + UUID.Parse(Data["ShirtAsset"])); + + appearance.Wearables[AvatarWearable.PANTS].Wear( + UUID.Parse(Data["PantsItem"]), + UUID.Parse(Data["PantsAsset"])); + + appearance.Wearables[AvatarWearable.SHOES].Wear( + UUID.Parse(Data["ShoesItem"]), + UUID.Parse(Data["ShoesAsset"])); + + appearance.Wearables[AvatarWearable.SOCKS].Wear( + UUID.Parse(Data["SocksItem"]), + UUID.Parse(Data["SocksAsset"])); + + appearance.Wearables[AvatarWearable.JACKET].Wear( + UUID.Parse(Data["JacketItem"]), + UUID.Parse(Data["JacketAsset"])); + + appearance.Wearables[AvatarWearable.GLOVES].Wear( + UUID.Parse(Data["GlovesItem"]), + UUID.Parse(Data["GlovesAsset"])); + + appearance.Wearables[AvatarWearable.UNDERSHIRT].Wear( + UUID.Parse(Data["UnderShirtItem"]), + UUID.Parse(Data["UnderShirtAsset"])); + + appearance.Wearables[AvatarWearable.UNDERPANTS].Wear( + UUID.Parse(Data["UnderPantsItem"]), + UUID.Parse(Data["UnderPantsAsset"])); + + appearance.Wearables[AvatarWearable.SKIRT].Wear( + UUID.Parse(Data["SkirtItem"]), + UUID.Parse(Data["SkirtAsset"])); // Attachments Dictionary attchs = new Dictionary();