aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/AnimationSet.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/AnimationSet.cs')
-rw-r--r--OpenSim/Framework/AnimationSet.cs61
1 files changed, 26 insertions, 35 deletions
diff --git a/OpenSim/Framework/AnimationSet.cs b/OpenSim/Framework/AnimationSet.cs
index 56e1068..8ac9081 100644
--- a/OpenSim/Framework/AnimationSet.cs
+++ b/OpenSim/Framework/AnimationSet.cs
@@ -35,7 +35,7 @@ namespace OpenSim.Framework
35 35
36 public class AnimationSet 36 public class AnimationSet
37 { 37 {
38 private readonly int m_maxAnimations = 255; 38 private bool m_parseError = false;
39 39
40 public const uint createBasePermitions = (uint)(PermissionMask.All); // no export ? 40 public const uint createBasePermitions = (uint)(PermissionMask.All); // no export ?
41 public const uint createNextPermitions = (uint)(PermissionMask.Copy | PermissionMask.Modify); 41 public const uint createNextPermitions = (uint)(PermissionMask.Copy | PermissionMask.Modify);
@@ -86,50 +86,41 @@ namespace OpenSim.Framework
86 } 86 }
87 87
88 public int AnimationCount { get; private set; } 88 public int AnimationCount { get; private set; }
89 private Dictionary<int, UUID> m_animations = new Dictionary<int, UUID>(); 89 private Dictionary<string, UUID> m_animations = new Dictionary<string, UUID>();
90 90 public AnimationSet(Byte[] data)
91 public UUID AnimationAt(int index)
92 {
93 if (m_animations.ContainsKey(index))
94 return m_animations[index];
95 return UUID.Zero;
96 }
97
98 public void SetAnimation(int index, UUID animation)
99 {
100 if (index < 0 || index > m_maxAnimations)
101 return;
102
103 m_animations[index] = animation;
104 }
105
106 public AnimationSet(Byte[] assetData)
107 { 91 {
108 if (assetData.Length < 2) 92 string assetData = System.Text.Encoding.ASCII.GetString(data);
109 throw new System.ArgumentException(); 93 Console.WriteLine("--------------------");
110 94 Console.WriteLine("AnimationSet length {0} bytes", assetData.Length);
111 if (assetData[0] != 1) // Only version 1 is supported 95 Console.WriteLine("Data: {0}", assetData);
112 throw new System.ArgumentException(); 96 Console.WriteLine("--------------------");
113
114 AnimationCount = assetData[1];
115 if (assetData.Length - 2 != 16 * AnimationCount)
116 throw new System.ArgumentException();
117
118 // TODO: Read anims from blob
119 } 97 }
120 98
121 public Byte[] ToBytes() 99 public Byte[] ToBytes()
122 { 100 {
123 // TODO: Make blob from anims 101 // If there was an error parsing the input, we give back an
124 return new Byte[0]; 102 // empty set rather than the original data.
103 if (m_parseError)
104 {
105 string dummy = "version 1\ncount 0\n";
106 return System.Text.Encoding.ASCII.GetBytes(dummy);
107 }
108
109 string assetData = String.Format("version 1\ncount {0}\n", m_animations.Count);
110 foreach (KeyValuePair<string, UUID> kvp in m_animations)
111 assetData += String.Format("{0} {1}\n", kvp.Key, kvp.Value.ToString());
112 return System.Text.Encoding.ASCII.GetBytes(assetData);
125 } 113 }
126 114
127 public bool Validate(AnimationSetValidator val) 115 public bool Validate(AnimationSetValidator val)
128 { 116 {
129 List<int> badAnims = new List<int>(); 117 if (m_parseError)
118 return false;
119
120 List<string> badAnims = new List<string>();
130 121
131 bool allOk = true; 122 bool allOk = true;
132 foreach (KeyValuePair<int, UUID> kvp in m_animations) 123 foreach (KeyValuePair<string, UUID> kvp in m_animations)
133 { 124 {
134 if (!val(kvp.Value)) 125 if (!val(kvp.Value))
135 { 126 {
@@ -138,7 +129,7 @@ namespace OpenSim.Framework
138 } 129 }
139 } 130 }
140 131
141 foreach (int idx in badAnims) 132 foreach (string idx in badAnims)
142 m_animations.Remove(idx); 133 m_animations.Remove(idx);
143 134
144 return allOk; 135 return allOk;