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
0.6.0-stable
Sean Dague 2008-05-16 00:04:46 +00:00
parent afd5da6851
commit fc77364972
4 changed files with 34 additions and 33 deletions

View File

@ -62,19 +62,19 @@ namespace OpenSim.Data
public AvatarAppearance GetUserAppearance(LLUUID user) { public AvatarAppearance GetUserAppearance(LLUUID user) {
AvatarAppearance aa; AvatarAppearance aa;
try { try {
m_log.Info("[APPEARANCE] Found appearance for " + user.ToString());
aa = aplist[user]; aa = aplist[user];
m_log.Info("[APPEARANCE] Found appearance for " + user.ToString() + aa.ToString());
} catch (System.Collections.Generic.KeyNotFoundException e) { } catch (System.Collections.Generic.KeyNotFoundException e) {
m_log.Info("[APPEARANCE] Setting up default appearance for " + user.ToString());
aplist[user] = new AvatarAppearance(); aplist[user] = new AvatarAppearance();
aplist[user].Owner = user; aplist[user].Owner = user;
aa = aplist[user]; aa = aplist[user];
m_log.Info("[APPEARANCE] Setting up default appearance for " + user.ToString() + aa.ToString());
} }
return aa; return aa;
} }
public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance) { public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance) {
aplist[user] = 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 AddAttachment(LLUUID user, LLUUID item);
public abstract void RemoveAttachment(LLUUID user, LLUUID item); public abstract void RemoveAttachment(LLUUID user, LLUUID item);

View File

@ -293,6 +293,16 @@ namespace OpenSim.Framework
return textu; 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) protected AvatarAppearance(SerializationInfo info, StreamingContext context)
{ {
//System.Console.WriteLine("AvatarAppearance Deserialize BGN"); //System.Console.WriteLine("AvatarAppearance Deserialize BGN");

View File

@ -1509,8 +1509,8 @@ namespace OpenSim.Region.Environment.Scenes
public void SetAppearance(byte[] texture, List<byte> visualParam) public void SetAppearance(byte[] texture, List<byte> visualParam)
{ {
m_appearance.SetAppearance(texture, visualParam); m_appearance.SetAppearance(texture, visualParam);
m_scene.CommsManager.UserService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance);
SetHeight(m_appearance.AvatarHeight); SetHeight(m_appearance.AvatarHeight);
m_scene.CommsManager.UserService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance);
SendAppearanceToAllOtherAgents(); SendAppearanceToAllOtherAgents();
} }
@ -1518,6 +1518,7 @@ namespace OpenSim.Region.Environment.Scenes
public void SetWearable(int wearableId, AvatarWearable wearable) public void SetWearable(int wearableId, AvatarWearable wearable)
{ {
m_appearance.SetWearable(wearableId, wearable); m_appearance.SetWearable(wearableId, wearable);
m_scene.CommsManager.UserService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance);
} }
/// <summary> /// <summary>

View File

@ -274,47 +274,37 @@ namespace OpenSim.Region.Modules.AvatarFactory
{ {
IClientAPI clientView = (IClientAPI)sender; IClientAPI clientView = (IClientAPI)sender;
CachedUserInfo profile = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(clientView.AgentId); CachedUserInfo profile = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(clientView.AgentId);
AvatarAppearance avatAppearance = m_scene.CommsManager.UserService.GetUserAppearance(clientView.AgentId);
if (profile != null) if (profile != null)
{ {
if (profile.RootFolder != null) if (profile.RootFolder != null)
{ {
if (m_avatarsAppearance.ContainsKey(clientView.AgentId))
foreach (AvatarWearingArgs.Wearable wear in e.NowWearing)
{ {
AvatarAppearance avatAppearance = null; if (wear.Type < 13)
lock (m_avatarsAppearance)
{ {
avatAppearance = m_avatarsAppearance[clientView.AgentId]; if (wear.ItemID == LLUUID.Zero)
}
foreach (AvatarWearingArgs.Wearable wear in e.NowWearing)
{
if (wear.Type < 13)
{ {
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; assetId = baseItem.AssetID;
avatAppearance.Wearables[wear.Type].AssetID = LLUUID.Zero; avatAppearance.Wearables[wear.Type].AssetID = assetId;
avatAppearance.Wearables[wear.Type].ItemID = wear.ItemID;
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);
}
} }
} }
} }
} }
m_scene.CommsManager.UserService.UpdateUserAppearance(clientView.AgentId, avatAppearance);
} }
} }
} }