From 3ea76e3131203f6a553d5a540d5d28aa5ca3f74a Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sat, 27 Sep 2014 02:30:01 +0200 Subject: Make changes to AnimationSet to allow indexing by names rather than indices. Add some debugging output and prepare for parsing an ascii-based format. --- OpenSim/Framework/AnimationSet.cs | 61 +++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 35 deletions(-) (limited to 'OpenSim/Framework/AnimationSet.cs') diff --git a/OpenSim/Framework/AnimationSet.cs b/OpenSim/Framework/AnimationSet.cs index c5ab634..e81d978 100644 --- a/OpenSim/Framework/AnimationSet.cs +++ b/OpenSim/Framework/AnimationSet.cs @@ -35,53 +35,44 @@ namespace OpenSim.Framework public class AnimationSet { - private readonly int m_maxAnimations = 255; + private bool m_parseError = false; public int AnimationCount { get; private set; } - private Dictionary m_animations = new Dictionary(); - - public UUID AnimationAt(int index) - { - if (m_animations.ContainsKey(index)) - return m_animations[index]; - return UUID.Zero; - } - - public void SetAnimation(int index, UUID animation) + private Dictionary m_animations = new Dictionary(); + public AnimationSet(Byte[] data) { - if (index < 0 || index > m_maxAnimations) - return; - - m_animations[index] = animation; - } - - public AnimationSet(Byte[] assetData) - { - if (assetData.Length < 2) - throw new System.ArgumentException(); - - if (assetData[0] != 1) // Only version 1 is supported - throw new System.ArgumentException(); - - AnimationCount = assetData[1]; - if (assetData.Length - 2 != 16 * AnimationCount) - throw new System.ArgumentException(); - - // TODO: Read anims from blob + string assetData = System.Text.Encoding.ASCII.GetString(data); + Console.WriteLine("--------------------"); + Console.WriteLine("AnimationSet length {0} bytes", assetData.Length); + Console.WriteLine("Data: {0}", assetData); + Console.WriteLine("--------------------"); } public Byte[] ToBytes() { - // TODO: Make blob from anims - return new Byte[0]; + // If there was an error parsing the input, we give back an + // empty set rather than the original data. + if (m_parseError) + { + string dummy = "version 1\ncount 0\n"; + return System.Text.Encoding.ASCII.GetBytes(dummy); + } + + string assetData = String.Format("version 1\ncount {0}\n", m_animations.Count); + foreach (KeyValuePair kvp in m_animations) + assetData += String.Format("{0} {1}\n", kvp.Key, kvp.Value.ToString()); + return System.Text.Encoding.ASCII.GetBytes(assetData); } public bool Validate(AnimationSetValidator val) { - List badAnims = new List(); + if (m_parseError) + return false; + + List badAnims = new List(); bool allOk = true; - foreach (KeyValuePair kvp in m_animations) + foreach (KeyValuePair kvp in m_animations) { if (!val(kvp.Value)) { @@ -90,7 +81,7 @@ namespace OpenSim.Framework } } - foreach (int idx in badAnims) + foreach (string idx in badAnims) m_animations.Remove(idx); return allOk; -- cgit v1.1