aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs25
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