From 3b42b5f0984fd10de8f49794764f1efd688e8dcd Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Wed, 6 Feb 2008 10:19:30 +0000 Subject: Consolidated LoadAnims and AvatarAnimations constructor. Fixes locking issues with Animations in ScenePresence (bug #324) --- .../Region/Environment/Scenes/AvatarAnimations.cs | 31 +++++----------------- OpenSim/Region/Environment/Scenes/Scene.cs | 2 -- OpenSim/Region/Environment/Scenes/ScenePresence.cs | 16 ++--------- 3 files changed, 9 insertions(+), 40 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes') diff --git a/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs b/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs index daaa319..be882e0 100644 --- a/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs +++ b/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs @@ -25,6 +25,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ + using System; using System.Collections.Generic; using System.Xml; @@ -35,18 +36,11 @@ namespace OpenSim.Region.Environment.Scenes { public class AvatarAnimations { - private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public Dictionary AnimsLLUUID = new Dictionary(); public Dictionary AnimsNames = new Dictionary(); public AvatarAnimations() { - } - - public void LoadAnims() - { - //m_log.Info("[CLIENT]: Loading avatar animations"); using (XmlTextReader reader = new XmlTextReader("data/avataranimations.xml")) { XmlDocument doc = new XmlDocument(); @@ -55,25 +49,14 @@ namespace OpenSim.Region.Environment.Scenes { if (nod.Attributes["name"] != null) { - AnimsLLUUID.Add((string)nod.Attributes["name"].Value, (LLUUID)nod.InnerText); - } - } - } - - // m_log.Info("[CLIENT]: Loaded " + AnimsLLUUID.Count.ToString() + " animation(s)"); + string name = (string)nod.Attributes["name"].Value; + LLUUID id = (LLUUID)nod.InnerText; - try - { - //Mantis: 0000224: 2755 - Enumeration Operation may not execute [immediate crash] (ODE/2750/WIN2003) - foreach (KeyValuePair kp in ScenePresence.Animations.AnimsLLUUID) - { - AnimsNames.Add(kp.Value, kp.Key); + AnimsLLUUID.Add(name, id); + AnimsNames.Add(id, name); + } } } - catch (InvalidOperationException) - { - m_log.Warn("[AVATAR]: Unable to load animation names for an Avatar"); - } } } -} \ No newline at end of file +} diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 40a80c4..b4283ae 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -278,8 +278,6 @@ namespace OpenSim.Region.Environment.Scenes m_log.Info("[SCENE]: Creating LandMap"); Terrain = new TerrainEngine((int) RegionInfo.RegionLocX, (int) RegionInfo.RegionLocY); - ScenePresence.LoadAnims(); - httpListener = httpServer; m_dumpAssetsToFile = dumpAssetsToFile; diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 5c33dfc..109f23c 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -41,8 +41,9 @@ namespace OpenSim.Region.Environment.Scenes { private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public static AvatarAnimations Animations; + public static AvatarAnimations Animations = new AvatarAnimations(); public static byte[] DefaultTexture; + public LLUUID currentParcelUUID = LLUUID.Zero; private List m_animations = new List(); private List m_animationSeqs = new List(); @@ -333,12 +334,6 @@ namespace OpenSim.Region.Environment.Scenes AbsolutePosition = m_controllingClient.StartPos; - Animations = new AvatarAnimations(); - lock (Animations) - { - Animations.LoadAnims(); - } - // TODO: m_animations and m_animationSeqs should always be of the same length. // Move them into an object to (hopefully) avoid threading issues. try @@ -1643,13 +1638,6 @@ namespace OpenSim.Region.Environment.Scenes } /// - /// - /// - public static void LoadAnims() - { - } - - /// /// Handles part of the PID controller function for moving an avatar. /// public override void UpdateMovement() -- cgit v1.1