diff options
Diffstat (limited to 'OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs')
-rw-r--r-- | OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index 6a48b89..5359354 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | |||
@@ -96,15 +96,15 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
96 | if (!m_avatars.ContainsKey(agentId)) | 96 | if (!m_avatars.ContainsKey(agentId)) |
97 | return false; | 97 | return false; |
98 | 98 | ||
99 | // Delete existing sp attachments | ||
99 | scene.AttachmentsModule.DeleteAttachmentsFromScene(sp, false); | 100 | scene.AttachmentsModule.DeleteAttachmentsFromScene(sp, false); |
100 | 101 | ||
101 | AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); | 102 | // Set new sp appearance. Also sends to clients. |
102 | sp.Appearance = npcAppearance; | 103 | scene.RequestModuleInterface<IAvatarFactoryModule>().SetAppearance(sp, new AvatarAppearance(appearance, true)); |
104 | |||
105 | // Rez needed sp attachments | ||
103 | scene.AttachmentsModule.RezAttachments(sp); | 106 | scene.AttachmentsModule.RezAttachments(sp); |
104 | 107 | ||
105 | IAvatarFactoryModule module = scene.RequestModuleInterface<IAvatarFactoryModule>(); | ||
106 | module.SendAppearance(sp.UUID); | ||
107 | |||
108 | return true; | 108 | return true; |
109 | } | 109 | } |
110 | 110 | ||
@@ -148,22 +148,21 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
148 | ScenePresence sp; | 148 | ScenePresence sp; |
149 | if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) | 149 | if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) |
150 | { | 150 | { |
151 | m_log.DebugFormat( | 151 | // m_log.DebugFormat( |
152 | "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID); | 152 | // "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID); |
153 | 153 | ||
154 | sp.CompleteMovement(npcAvatar, false); | 154 | sp.CompleteMovement(npcAvatar, false); |
155 | m_avatars.Add(npcAvatar.AgentId, npcAvatar); | ||
156 | m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); | ||
157 | |||
158 | return npcAvatar.AgentId; | ||
155 | } | 159 | } |
156 | else | 160 | else |
157 | { | 161 | { |
158 | m_log.WarnFormat("[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); | 162 | m_log.WarnFormat("[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); |
163 | return UUID.Zero; | ||
159 | } | 164 | } |
160 | |||
161 | m_avatars.Add(npcAvatar.AgentId, npcAvatar); | ||
162 | } | 165 | } |
163 | |||
164 | m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); | ||
165 | |||
166 | return npcAvatar.AgentId; | ||
167 | } | 166 | } |
168 | 167 | ||
169 | public bool MoveToTarget(UUID agentID, Scene scene, Vector3 pos, bool noFly, bool landAtTarget) | 168 | public bool MoveToTarget(UUID agentID, Scene scene, Vector3 pos, bool noFly, bool landAtTarget) |
@@ -292,13 +291,16 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
292 | NPCAvatar av; | 291 | NPCAvatar av; |
293 | if (m_avatars.TryGetValue(agentID, out av)) | 292 | if (m_avatars.TryGetValue(agentID, out av)) |
294 | { | 293 | { |
294 | // m_log.DebugFormat("[NPC MODULE]: Found {0} {1} to remove", agentID, av.Name); | ||
295 | scene.RemoveClient(agentID, false); | 295 | scene.RemoveClient(agentID, false); |
296 | m_avatars.Remove(agentID); | 296 | m_avatars.Remove(agentID); |
297 | 297 | ||
298 | // m_log.DebugFormat("[NPC MODULE]: Removed {0} {1}", agentID, av.Name); | ||
298 | return true; | 299 | return true; |
299 | } | 300 | } |
300 | } | 301 | } |
301 | 302 | ||
303 | // m_log.DebugFormat("[NPC MODULE]: Could not find {0} to remove", agentID); | ||
302 | return false; | 304 | return false; |
303 | } | 305 | } |
304 | 306 | ||