diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs
index 59e6a1b395..62971ea78d 100644
--- a/OpenSim/Framework/AvatarWearable.cs
+++ b/OpenSim/Framework/AvatarWearable.cs
@@ -71,17 +71,23 @@ namespace OpenSim.Framework
{
defaultWearables[i] = new AvatarWearable();
}
+
+ // Body
defaultWearables[0].AssetID = new UUID("66c41e39-38f9-f75a-024e-585989bfab73");
defaultWearables[0].ItemID = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9");
+ // Skin
defaultWearables[1].ItemID = new UUID("77c41e39-38f9-f75a-024e-585989bfabc9");
defaultWearables[1].AssetID = new UUID("77c41e39-38f9-f75a-024e-585989bbabbb");
+ // Shirt
defaultWearables[4].ItemID = new UUID("77c41e39-38f9-f75a-0000-585989bf0000");
defaultWearables[4].AssetID = new UUID("00000000-38f9-1111-024e-222222111110");
+ // Pants
defaultWearables[5].ItemID = new UUID("77c41e39-38f9-f75a-0000-5859892f1111");
defaultWearables[5].AssetID = new UUID("00000000-38f9-1111-024e-222222111120");
+
return defaultWearables;
}
}
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 46615ccca5..c8a54a7428 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -635,8 +635,20 @@ namespace OpenSim.Framework
// void ActivateGesture(UUID assetId, UUID gestureId);
+ ///
+ /// Tell this client what items it should be wearing now
+ ///
+ ///
void SendWearables(AvatarWearable[] wearables, int serial);
+
+ ///
+ /// Send information about the given agent's appearance to another client.
+ ///
+ /// The id of the agent associated with the appearance
+ ///
+ ///
void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry);
+
void SendStartPingCheck(byte seq);
///
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 3c9034b12d..aaa5e1ce97 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -2221,11 +2221,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Gesture
#region Appearance/ Wearables Methods
-
- ///
- ///
- ///
- ///
+
public void SendWearables(AvatarWearable[] wearables, int serial)
{
AgentWearablesUpdatePacket aw = (AgentWearablesUpdatePacket)PacketPool.Instance.GetPacket(PacketType.AgentWearablesUpdate);
@@ -2248,12 +2244,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(aw, ThrottleOutPacketType.Task);
}
- ///
- ///
- ///
- ///
- ///
- ///
public void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry)
{
AvatarAppearancePacket avp = (AvatarAppearancePacket)PacketPool.Instance.GetPacket(PacketType.AvatarAppearance);
@@ -4199,6 +4189,7 @@ Console.WriteLine(msgpack.ToString());
}
break;
+
case PacketType.RegionHandshakeReply:
handlerRegionHandShakeReply = OnRegionHandShakeReply;
@@ -4208,6 +4199,7 @@ Console.WriteLine(msgpack.ToString());
}
break;
+
case PacketType.AgentWearablesRequest:
handlerRequestWearables = OnRequestWearables;
@@ -4224,6 +4216,7 @@ Console.WriteLine(msgpack.ToString());
}
break;
+
case PacketType.AgentSetAppearance:
AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack;
diff --git a/OpenSim/Region/Environment/Modules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/Environment/Modules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index d3b782ff02..94c27a51ff 100644
--- a/OpenSim/Region/Environment/Modules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/Environment/Modules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -131,8 +131,6 @@ namespace OpenSim.Region.Environment.Modules.Avatar.AvatarFactory
}
else
{
- // UUID assetId;
-
InventoryItemBase baseItem = profile.RootFolder.FindItem(appearance.Wearables[i].ItemID);
if (baseItem != null)
@@ -141,7 +139,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.AvatarFactory
}
else
{
- m_log.ErrorFormat("[APPEARANCE] Can't find inventory item {0}, setting to default", appearance.Wearables[i].ItemID);
+ m_log.ErrorFormat("[APPEARANCE]: Can't find inventory item {0}, setting to default", appearance.Wearables[i].ItemID);
appearance.Wearables[i].AssetID = def.Wearables[i].AssetID;
}
}
@@ -149,7 +147,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.AvatarFactory
}
else
{
- m_log.Error("[APPEARANCE] you have no inventory, appearance stuff isn't going to work");
+ m_log.Error("[APPEARANCE]: you have no inventory, appearance stuff isn't going to work");
}
}
@@ -157,19 +155,24 @@ namespace OpenSim.Region.Environment.Modules.Avatar.AvatarFactory
{
IClientAPI clientView = (IClientAPI)sender;
ScenePresence avatar = m_scene.GetScenePresence(clientView.AgentId);
- if (avatar == null) {
- m_log.Info("Avatar is child agent, ignoring AvatarIsWearing event");
+
+ if (avatar == null)
+ {
+ m_log.Warn("[APPEARANCE]: Avatar is child agent, ignoring AvatarIsWearing event");
return;
}
CachedUserInfo profile = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(clientView.AgentId);
AvatarAppearance avatAppearance = null;
- if (!TryGetAvatarAppearance(clientView.AgentId, out avatAppearance)) {
- m_log.Info("We didn't seem to find the appearance, falling back to ScenePresense");
+ if (!TryGetAvatarAppearance(clientView.AgentId, out avatAppearance))
+ {
+ m_log.Info("[APPEARANCE]: We didn't seem to find the appearance, falling back to ScenePresense");
avatAppearance = avatar.Appearance;
}
- m_log.Info("Calling Avatar is Wearing");
+
+ m_log.Info("[APPEARANCE]: Calling Avatar is Wearing");
+
if (profile != null)
{
if (profile.RootFolder != null)
@@ -181,6 +184,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.AvatarFactory
avatAppearance.Wearables[wear.Type].ItemID = wear.ItemID;
}
}
+
SetAppearanceAssets(profile, ref avatAppearance);
m_scene.CommsManager.AvatarService.UpdateUserAppearance(clientView.AgentId, avatAppearance);
@@ -188,7 +192,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.AvatarFactory
}
else
{
- m_log.Error("Root Profile is null, we can't set the appearance");
+ m_log.Error("[APPEARANCE]: Root Profile is null, we can't set the appearance");
}
}
}
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 8d94c68253..77afc43c71 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -2236,8 +2236,6 @@ namespace OpenSim.Region.Environment.Scenes
protected virtual void SubscribeToClientEvents(IClientAPI client)
{
client.OnRegionHandShakeReply += SendLayerData;
- //remoteClient.OnRequestWearables += new GenericCall(this.GetInitialPrims);
- // client.OnRequestWearables += InformClientOfNeighbours;
client.OnAddPrim += AddNewPrim;
client.OnUpdatePrimGroupPosition += m_innerScene.UpdatePrimPosition;
client.OnUpdatePrimSinglePosition += m_innerScene.UpdatePrimSinglePosition;
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 6f6e0cb124..7bc0360314 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -527,7 +527,7 @@ namespace OpenSim.Region.Environment.Scenes
public void RegisterToEvents()
{
- m_controllingClient.OnRequestWearables += SendOwnAppearance;
+ m_controllingClient.OnRequestWearables += SendWearables;
m_controllingClient.OnSetAppearance += SetAppearance;
m_controllingClient.OnCompleteMovementToRegion += CompleteMovement;
m_controllingClient.OnCompleteMovementToRegion += SendInitialData;
@@ -1843,12 +1843,13 @@ namespace OpenSim.Region.Environment.Scenes
}
///
- ///
+ /// Tell the client for this scene presence what items it should be wearing now
///
///
- public void SendOwnAppearance()
+ public void SendWearables()
{
- m_log.Info("[APPEARANCE]: Sending Own Appearance");
+ m_log.DebugFormat("[APPEARANCE]: Sending wearables to {0}", Name);
+
ControllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++);
// ControllingClient.SendAppearance(
// m_appearance.Owner,
@@ -1862,8 +1863,9 @@ namespace OpenSim.Region.Environment.Scenes
///
public void SendAppearanceToAllOtherAgents()
{
- m_log.Info("[APPEARANCE]: Sending Appearance to All Other Agents");
- m_perfMonMS=System.Environment.TickCount;
+ m_log.DebugFormat("[APPEARANCE]: Sending appearance to all other agents for {0}", Name);
+
+ m_perfMonMS = System.Environment.TickCount;
m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
{
@@ -1872,6 +1874,7 @@ namespace OpenSim.Region.Environment.Scenes
SendAppearanceToOtherAgent(scenePresence);
}
});
+
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
}
@@ -1886,18 +1889,20 @@ namespace OpenSim.Region.Environment.Scenes
public void SetAppearance(byte[] texture, List visualParam)
{
- m_log.Info("[APPEARANCE]: Setting Appearance");
+ m_log.DebugFormat("[APPEARANCE]: Setting appearance for {0}", Name);
+
m_appearance.SetAppearance(texture, visualParam);
SetHeight(m_appearance.AvatarHeight);
m_scene.CommsManager.AvatarService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance);
SendAppearanceToAllOtherAgents();
- SendOwnAppearance();
+ SendWearables();
}
public void SetWearable(int wearableId, AvatarWearable wearable)
{
- m_log.Info("[APPEARANCE]: Setting Wearable");
+ m_log.DebugFormat("[APPEARANCE]: Setting wearable for {0}", Name);
+
m_appearance.SetWearable(wearableId, wearable);
m_scene.CommsManager.AvatarService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance);
m_controllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++);