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
This commit is contained in:
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

@@ -1509,8 +1509,8 @@ namespace OpenSim.Region.Environment.Scenes
public void SetAppearance(byte[] texture, List<byte> 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);
}
/// <summary>

View File

@@ -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);
}
}
}