mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 17:55:48 +08:00
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:
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user