From e23290eff67ec2b19cffa3a555deef0a63511358 Mon Sep 17 00:00:00 2001 From: MW Date: Fri, 7 Dec 2007 17:23:11 +0000 Subject: Avatar Appearance refactoring /changes. Added a AvatarAppearance class, each ScenePresence "has" a AvatarAppearance object. All the ScenePresences in a opensim related to one user (so a user's various ScenePresence's in all the regions in that instance) share the same AvatarAppearance object. This means that a user's avatar should appear correctly (to both that user and other users) no matter what border crossing or teleporting they have done. Note: this mainly improves Standalone mode, as in grid mode the appearance data isn't passed between region servers. Although people should notice a improvement when moving between regions in the same instance. --- OpenSim/Region/Environment/Scenes/Scene.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes/Scene.cs') diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 40de870..b2cc750 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -991,11 +991,10 @@ namespace OpenSim.Region.Environment.Scenes { ScenePresence avatar = null; - byte[] visualParams; - AvatarWearable[] wearables; - LoadAvatarAppearance(client, out visualParams, out wearables); + AvatarAppearance appearance; + LoadAvatarAppearance(client, out appearance); - avatar = m_innerScene.CreateAndAddScenePresence(client, child, wearables, visualParams); + avatar = m_innerScene.CreateAndAddScenePresence(client, child, appearance); if (avatar.IsChildAgent) { @@ -1005,12 +1004,16 @@ namespace OpenSim.Region.Environment.Scenes return avatar; } - protected void LoadAvatarAppearance(IClientAPI client, out byte[] visualParams, out AvatarWearable[] wearables) + protected void LoadAvatarAppearance(IClientAPI client, out AvatarAppearance appearance) { if (m_AvatarFactory == null || - !m_AvatarFactory.TryGetInitialAvatarAppearance(client.AgentId, out wearables, out visualParams)) + !m_AvatarFactory.TryGetAvatarAppearance(client.AgentId, out appearance)) { + //not found Appearance + byte[] visualParams; + AvatarWearable[] wearables; AvatarFactoryModule.GetDefaultAvatarAppearance(out wearables, out visualParams); + appearance = new AvatarAppearance(client.AgentId, wearables, visualParams); } } -- cgit v1.1