From fc773649720c062a72d1b8a098eb54bda9a84ca9 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Fri, 16 May 2008 00:04:46 +0000 Subject: [PATCH] appearance now survives logout. Tommorrow will involve moving the MSSQL and MYSQL mappers back in under datastores and looking at doing gid bits for this --- OpenSim/Data/UserDataBase.cs | 6 +-- OpenSim/Framework/AvatarAppearance.cs | 10 ++++ .../Environment/Scenes/ScenePresence.cs | 3 +- .../AvatarFactory/AvatarFactoryModule.cs | 48 ++++++++----------- 4 files changed, 34 insertions(+), 33 deletions(-) diff --git a/OpenSim/Data/UserDataBase.cs b/OpenSim/Data/UserDataBase.cs index 7066f58b9e..817ac3eaa1 100644 --- a/OpenSim/Data/UserDataBase.cs +++ b/OpenSim/Data/UserDataBase.cs @@ -62,19 +62,19 @@ namespace OpenSim.Data public AvatarAppearance GetUserAppearance(LLUUID user) { AvatarAppearance aa; try { - m_log.Info("[APPEARANCE] Found appearance for " + user.ToString()); aa = aplist[user]; + m_log.Info("[APPEARANCE] Found appearance for " + user.ToString() + aa.ToString()); } catch (System.Collections.Generic.KeyNotFoundException e) { - m_log.Info("[APPEARANCE] Setting up default appearance for " + user.ToString()); aplist[user] = new AvatarAppearance(); aplist[user].Owner = user; aa = aplist[user]; + m_log.Info("[APPEARANCE] Setting up default appearance for " + user.ToString() + aa.ToString()); } return aa; } public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance) { aplist[user] = appearance; - m_log.Info("[APPEARANCE] Setting appearance for " + user.ToString()); + m_log.Info("[APPEARANCE] Setting appearance for " + user.ToString() + appearance.ToString() ); } public abstract void AddAttachment(LLUUID user, LLUUID item); public abstract void RemoveAttachment(LLUUID user, LLUUID item); diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 42cd6f9064..cf9ff58947 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -293,6 +293,16 @@ namespace OpenSim.Framework return textu; } + public override String ToString() + { + String s = "[Wearables] =>"; + s += "Body Item: " + BodyItem.ToString() + ";"; + s += "Skin Item: " + SkinItem.ToString() + ";"; + s += "Shirt Item: " + ShirtItem.ToString() + ";"; + s += "Pants Item: " + PantsItem.ToString() + ";"; + return s; + } + protected AvatarAppearance(SerializationInfo info, StreamingContext context) { //System.Console.WriteLine("AvatarAppearance Deserialize BGN"); diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index f8f96a0497..28507cdbad 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -1509,8 +1509,8 @@ namespace OpenSim.Region.Environment.Scenes public void SetAppearance(byte[] texture, List visualParam) { m_appearance.SetAppearance(texture, visualParam); - m_scene.CommsManager.UserService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance); SetHeight(m_appearance.AvatarHeight); + m_scene.CommsManager.UserService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance); SendAppearanceToAllOtherAgents(); } @@ -1518,6 +1518,7 @@ namespace OpenSim.Region.Environment.Scenes public void SetWearable(int wearableId, AvatarWearable wearable) { m_appearance.SetWearable(wearableId, wearable); + m_scene.CommsManager.UserService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance); } /// diff --git a/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs index a1abe8b842..4c933d6ef9 100644 --- a/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs @@ -274,47 +274,37 @@ namespace OpenSim.Region.Modules.AvatarFactory { IClientAPI clientView = (IClientAPI)sender; CachedUserInfo profile = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(clientView.AgentId); + AvatarAppearance avatAppearance = m_scene.CommsManager.UserService.GetUserAppearance(clientView.AgentId); if (profile != null) { if (profile.RootFolder != null) { - if (m_avatarsAppearance.ContainsKey(clientView.AgentId)) + + foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) { - AvatarAppearance avatAppearance = null; - lock (m_avatarsAppearance) + if (wear.Type < 13) { - avatAppearance = m_avatarsAppearance[clientView.AgentId]; - } - - foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) - { - if (wear.Type < 13) + if (wear.ItemID == LLUUID.Zero) { - if (wear.ItemID == LLUUID.Zero) + avatAppearance.Wearables[wear.Type].ItemID = LLUUID.Zero; + avatAppearance.Wearables[wear.Type].AssetID = LLUUID.Zero; + } + else + { + LLUUID assetId; + + InventoryItemBase baseItem = profile.RootFolder.FindItem(wear.ItemID); + + if (baseItem != null) { - avatAppearance.Wearables[wear.Type].ItemID = LLUUID.Zero; - avatAppearance.Wearables[wear.Type].AssetID = LLUUID.Zero; - - UpdateDatabase(clientView.AgentId, avatAppearance); - } - else - { - LLUUID assetId; - - InventoryItemBase baseItem = profile.RootFolder.FindItem(wear.ItemID); - - if (baseItem != null) - { - assetId = baseItem.AssetID; - avatAppearance.Wearables[wear.Type].AssetID = assetId; - avatAppearance.Wearables[wear.Type].ItemID = wear.ItemID; - - UpdateDatabase(clientView.AgentId, avatAppearance); - } + assetId = baseItem.AssetID; + avatAppearance.Wearables[wear.Type].AssetID = assetId; + avatAppearance.Wearables[wear.Type].ItemID = wear.ItemID; } } } } + m_scene.CommsManager.UserService.UpdateUserAppearance(clientView.AgentId, avatAppearance); } } }