diff options
Diffstat (limited to 'OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs')
-rw-r--r-- | OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index 3cdd06d..64f82c9 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | |||
@@ -59,14 +59,21 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
59 | if (m_appearanceCache.ContainsKey(target)) | 59 | if (m_appearanceCache.ContainsKey(target)) |
60 | return m_appearanceCache[target]; | 60 | return m_appearanceCache[target]; |
61 | 61 | ||
62 | AvatarAppearance appearance = scene.AvatarService.GetAppearance(target); | 62 | ScenePresence originalPresence = scene.GetScenePresence(target); |
63 | if (appearance != null) | 63 | |
64 | if (originalPresence != null) | ||
64 | { | 65 | { |
65 | m_appearanceCache.Add(target, appearance); | 66 | AvatarAppearance originalAppearance = originalPresence.Appearance; |
66 | return appearance; | 67 | m_appearanceCache.Add(target, originalAppearance); |
68 | return originalAppearance; | ||
67 | } | 69 | } |
70 | else | ||
71 | { | ||
72 | m_log.DebugFormat( | ||
73 | "[NPC MODULE]: Avatar {0} is not in the scene for us to grab baked textures from them. Using defaults.", target); | ||
68 | 74 | ||
69 | return new AvatarAppearance(); | 75 | return new AvatarAppearance(); |
76 | } | ||
70 | } | 77 | } |
71 | 78 | ||
72 | public UUID CreateNPC(string firstname, string lastname, Vector3 position, Scene scene, UUID cloneAppearanceFrom) | 79 | public UUID CreateNPC(string firstname, string lastname, Vector3 position, Scene scene, UUID cloneAppearanceFrom) |
@@ -86,8 +93,16 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
86 | 93 | ||
87 | AvatarAppearance originalAppearance = GetAppearance(cloneAppearanceFrom, scene); | 94 | AvatarAppearance originalAppearance = GetAppearance(cloneAppearanceFrom, scene); |
88 | AvatarAppearance npcAppearance = new AvatarAppearance(originalAppearance, true); | 95 | AvatarAppearance npcAppearance = new AvatarAppearance(originalAppearance, true); |
96 | npcAppearance.Owner = acd.AgentID; | ||
89 | acd.Appearance = npcAppearance; | 97 | acd.Appearance = npcAppearance; |
90 | 98 | ||
99 | // for (int i = 0; i < acd.Appearance.Texture.FaceTextures.Length; i++) | ||
100 | // { | ||
101 | // m_log.DebugFormat( | ||
102 | // "[NPC MODULE]: NPC avatar {0} has texture id {1} : {2}", | ||
103 | // acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]); | ||
104 | // } | ||
105 | |||
91 | scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); | 106 | scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); |
92 | scene.AddNewClient(npcAvatar); | 107 | scene.AddNewClient(npcAvatar); |
93 | 108 | ||