From 35f2479858df52022bd7eddd1e1e8db02ca4e2b8 Mon Sep 17 00:00:00 2001 From: satguru srivastava Date: Thu, 8 Mar 2012 20:46:22 -0600 Subject: [PATCH] fix for NPC not playing internal animations --- .../OptionalModules/World/NPC/NPCAvatar.cs | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index be0d56e0dc..69c16c7283 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -34,13 +34,17 @@ using OpenSim.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.CoreModules.World.Estate; +using log4net; +using System.Reflection; +using System.Xml; namespace OpenSim.Region.OptionalModules.World.NPC { public class NPCAvatar : IClientAPI, INPC { - public bool SenseAsAgent { get; set; } + private static readonly Dictionary m_defaultAnimations = new Dictionary(); + public bool SenseAsAgent { get; set; } private readonly string m_firstname; private readonly string m_lastname; private readonly Vector3 m_startPos; @@ -57,8 +61,16 @@ namespace OpenSim.Region.OptionalModules.World.NPC m_scene = scene; m_ownerID = ownerID; SenseAsAgent = senseAsAgent; + } + static NPCAvatar() + { + InitDefaultAnimations(); + } + + + public IScene Scene { get { return m_scene; } @@ -130,8 +142,31 @@ namespace OpenSim.Region.OptionalModules.World.NPC } + private static void InitDefaultAnimations() + { + using (XmlTextReader reader = new XmlTextReader("data/avataranimations.xml")) + { + XmlDocument doc = new XmlDocument(); + doc.Load(reader); + if (doc.DocumentElement != null) + foreach (XmlNode nod in doc.DocumentElement.ChildNodes) + { + if (nod.Attributes["name"] != null) + { + string name = nod.Attributes["name"].Value.ToLower(); + string id = nod.InnerText; + m_defaultAnimations.Add(name, (UUID)id); + } + } + } + } + public UUID GetDefaultAnimation(string name) { + if (m_defaultAnimations.ContainsKey(name)) + { + return m_defaultAnimations[name]; + } return UUID.Zero; }