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 +315,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..1e003f7862 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; } @@ -339,6 +111,10 @@ namespace OpenSim.Framework SetDefaultParams(); SetHeight(); + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; + for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++ ) + m_wearables[i] = new AvatarWearable(); + m_attachments = new Dictionary>(); } @@ -400,10 +176,11 @@ namespace OpenSim.Framework m_serial = appearance.Serial; m_owner = appearance.Owner; - m_wearables = null; + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; + for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++ ) + m_wearables[i] = new AvatarWearable(); if (appearance.Wearables != null) { - m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 13 of these for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) SetWearable(i,appearance.Wearables[i]); } @@ -547,7 +324,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 +342,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 +515,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..0a02dcfc46 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 = 14; - 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/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 183aec0d4a..45bede3995 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -183,7 +183,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP IConfig config = configSource.Configs["ClientStack.LindenUDP"]; if (config != null) { - m_asyncPacketHandling = config.GetBoolean("async_packet_handling", false); + m_asyncPacketHandling = config.GetBoolean("async_packet_handling", true); m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0); sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0); 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/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index 9080e1c92f..d81703a827 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs @@ -173,28 +173,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver InventoryCollection contents = m_scene.InventoryService.GetFolderContent(inventoryFolder.Owner, inventoryFolder.ID); - //List childFolders = inventoryFolder.RequestListOfFolderImpls(); - //List items = inventoryFolder.RequestListOfItems(); - - /* - Dictionary identicalFolderNames = new Dictionary(); - - foreach (InventoryFolderImpl folder in inventories) - { - if (!identicalFolderNames.ContainsKey(folder.Name)) - identicalFolderNames[folder.Name] = 0; - else - identicalFolderNames[folder.Name] = identicalFolderNames[folder.Name]++; - - int folderNameNumber = identicalFolderName[folder.Name]; - - SaveInvDir( - folder, - string.Format( - "{0}{1}{2}/", - path, ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR, folderNameNumber)); - } - */ foreach (InventoryFolderBase childFolder in contents.Folders) { diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 925af3f579..283182cdd2 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -193,7 +193,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer GridRegion finalDestination = GetFinalDestination(reg); if (finalDestination == null) { - m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Final destination is having problems. Unable to teleport agent."); + m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Final destination is having problems. Unable to teleport agent."); sp.ControllingClient.SendTeleportFailed("Problem at destination"); return; } @@ -240,7 +240,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer } catch (Exception e) { - m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Exception on teleport: {0}\n{1}", e.Message, e.StackTrace); + m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Exception on teleport: {0}\n{1}", e.Message, e.StackTrace); sp.ControllingClient.SendTeleportFailed("Internal error"); } } @@ -398,7 +398,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer m_log.DebugFormat( "[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, sp.UUID); - if (eq != null) { eq.TeleportFinishEvent(destinationHandle, 13, endPoint, @@ -558,6 +557,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer client.SendTeleportFailed("Your home region could not be found."); return; } + m_log.DebugFormat("[ENTITY TRANSFER MODULE]: User's home region is {0} {1} ({2}-{3})", regionInfo.RegionName, regionInfo.RegionID, regionInfo.RegionLocX / Constants.RegionSize, regionInfo.RegionLocY / Constants.RegionSize); @@ -1162,7 +1162,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer Utils.LongToUInts(reg.RegionHandle, out x, out y); x = x / Constants.RegionSize; y = y / Constants.RegionSize; - m_log.Info("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")"); + m_log.Debug("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")"); string capsPath = reg.ServerURI + CapsUtil.GetCapsSeedPath(a.CapsPath); @@ -1197,7 +1197,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer // TODO: make Event Queue disablable! } - m_log.Info("[ENTITY TRANSFER MODULE]: Completed inform client about neighbour " + endPoint.ToString()); + m_log.Debug("[ENTITY TRANSFER MODULE]: Completed inform client about neighbour " + endPoint.ToString()); } diff --git a/OpenSim/Services/AvatarService/AvatarService.cs b/OpenSim/Services/AvatarService/AvatarService.cs index a8ad4130e5..53ca7c868b 100644 --- a/OpenSim/Services/AvatarService/AvatarService.cs +++ b/OpenSim/Services/AvatarService/AvatarService.cs @@ -51,8 +51,6 @@ namespace OpenSim.Services.AvatarService m_log.Debug("[AVATAR SERVICE]: Starting avatar service"); } - // Get|SetAppearance should preserve existing semantics - // until AvatarData can be removed completely public AvatarAppearance GetAppearance(UUID principalID) { AvatarData avatar = GetAvatar(principalID); @@ -68,12 +66,15 @@ namespace OpenSim.Services.AvatarService public AvatarData GetAvatar(UUID principalID) { AvatarBaseData[] av = m_Database.Get("PrincipalID", principalID.ToString()); - if (av.Length == 0) - return null; - AvatarData ret = new AvatarData(); ret.Data = new Dictionary(); + if (av.Length == 0) + { + ret.AvatarType = 1; // SL avatar + return ret; + } + foreach (AvatarBaseData b in av) { if (b.Data["Name"] == "AvatarType") 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/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index c4284eb920..7936cb83ff 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -139,13 +139,13 @@ namespace OpenSim.Services.Connectors.Simulation AgentCreateRequest.ContentLength = buffer.Length; //Count bytes to send os = AgentCreateRequest.GetRequestStream(); os.Write(buffer, 0, strBuffer.Length); //Send it - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Posted CreateAgent request to remote sim {0}, region {1}, x={2} y={3}", + m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: Posted CreateAgent request to remote sim {0}, region {1}, x={2} y={3}", uri, destination.RegionName, destination.RegionLocX, destination.RegionLocY); } //catch (WebException ex) catch { - //m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on ChildAgentUpdate {0}", ex.Message); + //m_log.ErrorFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on ChildAgentUpdate {0}", ex.Message); reason = "cannot contact remote region"; return false; } @@ -172,19 +172,19 @@ namespace OpenSim.Services.Connectors.Simulation webResponse = AgentCreateRequest.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on DoCreateChildAgentCall post"); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on DoCreateChildAgentCall post"); } else { sr = new StreamReader(webResponse.GetResponseStream()); response = sr.ReadToEnd().Trim(); - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: DoCreateChildAgentCall reply was {0} ", response); + m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: DoCreateChildAgentCall reply was {0} ", response); } } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", ex.Message); reason = "Destination did not reply"; return string.Empty; } @@ -212,7 +212,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (NullReferenceException e) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", e.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", e.Message); // check for old style response if (response.ToLower().StartsWith("true")) @@ -232,7 +232,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (Exception e) { - m_log.Debug("[REMOTE SIMULATION CONNECTOR]: PackAgentCircuitData failed with exception: " + e.Message); + m_log.Warn("[REMOTE SIMULATION CONNECTOR]: PackAgentCircuitData failed with exception: " + e.Message); return null; } // Add the input arguments @@ -258,6 +258,7 @@ namespace OpenSim.Services.Connectors.Simulation private bool UpdateAgent(GridRegion destination, IAgentData cAgentData) { // Eventually, we want to use a caps url instead of the agentID + string uri = destination.ServerURI + AgentPath() + cAgentData.AgentID + "/"; HttpWebRequest ChildUpdateRequest = (HttpWebRequest)WebRequest.Create(uri); @@ -274,7 +275,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (Exception e) { - m_log.Debug("[REMOTE SIMULATION CONNECTOR]: PackUpdateMessage failed with exception: " + e.Message); + m_log.Warn("[REMOTE SIMULATION CONNECTOR]: PackUpdateMessage failed with exception: " + e.Message); } // Add the input arguments args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString()); @@ -303,12 +304,12 @@ namespace OpenSim.Services.Connectors.Simulation ChildUpdateRequest.ContentLength = buffer.Length; //Count bytes to send os = ChildUpdateRequest.GetRequestStream(); os.Write(buffer, 0, strBuffer.Length); //Send it - //m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Posted AgentUpdate request to remote sim {0}", uri); + //m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: Posted AgentUpdate request to remote sim {0}", uri); } catch (WebException ex) //catch { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on AgentUpdate {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on AgentUpdate {0}", ex.Message); return false; } @@ -319,7 +320,7 @@ namespace OpenSim.Services.Connectors.Simulation } // Let's wait for the response - //m_log.Info("[REMOTE SIMULATION CONNECTOR]: Waiting for a reply after ChildAgentUpdate"); + //m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Waiting for a reply after ChildAgentUpdate"); WebResponse webResponse = null; StreamReader sr = null; @@ -328,19 +329,19 @@ namespace OpenSim.Services.Connectors.Simulation webResponse = ChildUpdateRequest.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on ChilAgentUpdate post"); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on ChilAgentUpdate post"); } sr = new StreamReader(webResponse.GetResponseStream()); //reply = sr.ReadToEnd().Trim(); sr.ReadToEnd().Trim(); sr.Close(); - //m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: ChilAgentUpdate reply was {0} ", reply); + //m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: ChilAgentUpdate reply was {0} ", reply); } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of ChilAgentUpdate from {0}: {1}", uri, ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of ChilAgentUpdate from {0}: {1}", uri, ex.Message); // ignore, really } finally @@ -371,7 +372,7 @@ namespace OpenSim.Services.Connectors.Simulation webResponse = (HttpWebResponse)request.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on agent get "); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on agent get "); } sr = new StreamReader(webResponse.GetResponseStream()); @@ -381,7 +382,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of agent get {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of agent get {0}", ex.Message); // ignore, really return false; } @@ -420,7 +421,7 @@ namespace OpenSim.Services.Connectors.Simulation WebResponse webResponse = request.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on ReleaseAgent"); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on ReleaseAgent"); } sr = new StreamReader(webResponse.GetResponseStream()); @@ -432,7 +433,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of ReleaseAgent {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of ReleaseAgent {0}", ex.Message); return false; } finally @@ -448,7 +449,6 @@ namespace OpenSim.Services.Connectors.Simulation { string uri = destination.ServerURI + AgentPath() + id + "/" + destination.RegionID.ToString() + "/"; - WebRequest request = WebRequest.Create(uri); request.Method = "DELETE"; request.Timeout = 10000; @@ -459,7 +459,7 @@ namespace OpenSim.Services.Connectors.Simulation WebResponse webResponse = request.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on agent delete "); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on agent delete "); } sr = new StreamReader(webResponse.GetResponseStream()); @@ -471,7 +471,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of agent delete from {0}: {1}", destination.RegionName, ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of agent delete from {0}: {1}", destination.RegionName, ex.Message); return false; } finally @@ -536,11 +536,11 @@ namespace OpenSim.Services.Connectors.Simulation ObjectCreateRequest.ContentLength = buffer.Length; //Count bytes to send os = ObjectCreateRequest.GetRequestStream(); os.Write(buffer, 0, strBuffer.Length); //Send it - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Posted CreateObject request to remote sim {0}", uri); + m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: Posted CreateObject request to remote sim {0}", uri); } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on CreateObject {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on CreateObject {0}", ex.Message); return false; } finally @@ -558,7 +558,7 @@ namespace OpenSim.Services.Connectors.Simulation WebResponse webResponse = ObjectCreateRequest.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on CreateObject post"); + m_log.Warn("[REMOTE SIMULATION CONNECTOR]: Null reply on CreateObject post"); return false; } @@ -570,7 +570,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of CreateObject {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of CreateObject {0}", ex.Message); return false; } finally diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index eaa653439e..186871a299 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(); @@ -190,36 +190,75 @@ namespace OpenSim.Services.Interfaces AvatarAppearance appearance = new AvatarAppearance(owner); try { - appearance.Serial = Int32.Parse(Data["Serial"]); + if (Data.ContainsKey("Serial")) + 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"]); + if (Data.ContainsKey("BodyItem")) + appearance.Wearables[AvatarWearable.BODY].Wear( + UUID.Parse(Data["BodyItem"]), + UUID.Parse(Data["BodyAsset"])); + + if (Data.ContainsKey("SkinItem")) + appearance.Wearables[AvatarWearable.SKIN].Wear( + UUID.Parse(Data["SkinItem"]), + UUID.Parse(Data["SkinAsset"])); + + if (Data.ContainsKey("HairItem")) + appearance.Wearables[AvatarWearable.HAIR].Wear( + UUID.Parse(Data["HairItem"]), + UUID.Parse(Data["HairAsset"])); + + if (Data.ContainsKey("EyesItem")) + appearance.Wearables[AvatarWearable.EYES].Wear( + UUID.Parse(Data["EyesItem"]), + UUID.Parse(Data["EyesAsset"])); + + if (Data.ContainsKey("ShirtItem")) + appearance.Wearables[AvatarWearable.SHIRT].Wear( + UUID.Parse(Data["ShirtItem"]), + UUID.Parse(Data["ShirtAsset"])); + + if (Data.ContainsKey("PantsItem")) + appearance.Wearables[AvatarWearable.PANTS].Wear( + UUID.Parse(Data["PantsItem"]), + UUID.Parse(Data["PantsAsset"])); + + if (Data.ContainsKey("ShoesItem")) + appearance.Wearables[AvatarWearable.SHOES].Wear( + UUID.Parse(Data["ShoesItem"]), + UUID.Parse(Data["ShoesAsset"])); + + if (Data.ContainsKey("SocksItem")) + appearance.Wearables[AvatarWearable.SOCKS].Wear( + UUID.Parse(Data["SocksItem"]), + UUID.Parse(Data["SocksAsset"])); + + if (Data.ContainsKey("JacketItem")) + appearance.Wearables[AvatarWearable.JACKET].Wear( + UUID.Parse(Data["JacketItem"]), + UUID.Parse(Data["JacketAsset"])); + + if (Data.ContainsKey("GlovesItem")) + appearance.Wearables[AvatarWearable.GLOVES].Wear( + UUID.Parse(Data["GlovesItem"]), + UUID.Parse(Data["GlovesAsset"])); + + if (Data.ContainsKey("UnderShirtItem")) + appearance.Wearables[AvatarWearable.UNDERSHIRT].Wear( + UUID.Parse(Data["UnderShirtItem"]), + UUID.Parse(Data["UnderShirtAsset"])); + + if (Data.ContainsKey("UnderPantsItem")) + appearance.Wearables[AvatarWearable.UNDERPANTS].Wear( + UUID.Parse(Data["UnderPantsItem"]), + UUID.Parse(Data["UnderPantsAsset"])); + + if (Data.ContainsKey("SkirtItem")) + appearance.Wearables[AvatarWearable.SKIRT].Wear( + UUID.Parse(Data["SkirtItem"]), + UUID.Parse(Data["SkirtAsset"])); - 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"]); // Attachments Dictionary attchs = new Dictionary(); diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 5ced7d586a..de7c44ccf4 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -328,8 +328,9 @@ ; already separated from packet handling with a queue, so this will only ; affect whether networking internals such as packet decoding and ; acknowledgement accounting are done synchronously or asynchronously + ; Default is true. ; - ;async_packet_handling = false + ;async_packet_handling = true ; The client socket receive buffer size determines how many ; incoming requests we can process; the default on .NET is 8192 diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index b81642a179..e1627c0534 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -64,7 +64,9 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 LocalServiceModule = "OpenSim.Services.GridService.dll:GridService" ; Realm = "regions" ; AllowDuplicateNames = "True" - ; Check4096 = "False" + + ;; Perform distance check for the creation of a linked region + ; Check4096 = "True" ;; Next, we can specify properties of regions, including default and fallback regions ;; The syntax is: Region_ = "" diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index 2f021d52cd..1fcf043ea2 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -53,8 +53,8 @@ ;;--- For MySql region storage (alternative) ;StorageProvider = "OpenSim.Data.MySQL.dll:MySqlRegionData" - ; If HG, do you want this check on the distance to be performed? - ; Check4096 = "False" + ;; With hypergrid, perform distance check for the creation of a linked region + ; Check4096 = true ;; Next, we can specify properties of regions, including default and fallback regions ;; The syntax is: Region_ = ""