29 using System.Collections.Generic;
30 using System.Reflection;
34 using OpenMetaverse.StructuredData;
36 using OpenSim.Framework;
53 get {
return m_defaultAnimation; }
58 get {
return m_implicitDefaultAnimation; }
63 ResetDefaultAnimation();
68 ResetDefaultAnimation();
74 if (m_defaultAnimation.AnimID == animID)
77 for (
int i = 0; i < m_animations.Count; ++i)
79 if (m_animations[i].AnimID == animID)
86 public bool Add(UUID animID,
int sequenceNum, UUID objectID)
90 if (!HasAnimation(animID))
107 public bool Remove(UUID animID,
bool allowNoDefault)
111 if (m_defaultAnimation.AnimID == animID)
116 ResetDefaultAnimation();
118 else if (HasAnimation(animID))
120 for (
int i = 0; i < m_animations.Count; i++)
122 if (m_animations[i].AnimID == animID)
124 m_animations.RemoveAt(i);
135 ResetDefaultAnimation();
136 m_animations.Clear();
145 if (m_defaultAnimation.AnimID != animID)
148 m_implicitDefaultAnimation = m_defaultAnimation;
162 return TrySetDefaultAnimation(
"STAND", 1, UUID.Zero);
181 public void GetArrays(out UUID[] animIDs, out
int[] sequenceNums, out UUID[] objectIDs)
186 if (m_defaultAnimation.AnimID != UUID.Zero)
189 animIDs =
new UUID[m_animations.Count + defaultSize];
190 sequenceNums =
new int[m_animations.Count + defaultSize];
191 objectIDs =
new UUID[m_animations.Count + defaultSize];
193 if (m_defaultAnimation.AnimID != UUID.Zero)
195 animIDs[0] = m_defaultAnimation.AnimID;
196 sequenceNums[0] = m_defaultAnimation.SequenceNum;
197 objectIDs[0] = m_defaultAnimation.ObjectID;
200 for (
int i = 0; i < m_animations.Count; ++i)
202 animIDs[i + defaultSize] = m_animations[i].AnimID;
203 sequenceNums[i + defaultSize] = m_animations[i].SequenceNum;
204 objectIDs[i + defaultSize] = m_animations[i].ObjectID;
215 foreach (
OpenSim.Framework.Animation anim in m_animations)
216 theArray[i++] = anim;
227 foreach (
OpenSim.Framework.Animation anim in theArray)
228 m_animations.Add(anim);
237 ret.Add(DefaultAnimation.PackUpdateMessage());
238 ret.Add(ImplicitDefaultAnimation.PackUpdateMessage());
240 foreach (
OpenSim.Framework.Animation anim in m_animations)
241 ret.Add(anim.PackUpdateMessage());
250 if (pArray.Count >= 1)
254 if (pArray.Count >= 2)
258 for (
int ii = 2; ii < pArray.Count; ii++)
272 && this.ImplicitDefaultAnimation.Equals(other.ImplicitDefaultAnimation))
277 if (thisAnims.Length == 0 && otherAnims.Length == 0)
279 if (thisAnims.Length == otherAnims.Length)
282 foreach (
OpenSim.Framework.Animation thisAnim in thisAnims)
285 foreach (
OpenSim.Framework.Animation otherAnim in otherAnims)
287 if (thisAnim.Equals(otherAnim))
306 return base.Equals(obj);
311 return base.GetHashCode();
316 StringBuilder buff =
new StringBuilder();
317 buff.Append(
"dflt=");
318 buff.Append(DefaultAnimation.ToString());
319 buff.Append(
",iDflt=");
320 if (DefaultAnimation.Equals(ImplicitDefaultAnimation))
323 buff.Append(ImplicitDefaultAnimation.ToString());
324 if (m_animations.Count > 0)
326 buff.Append(
",anims=");
327 bool firstTime =
true;
328 foreach (
OpenSim.Framework.Animation anim in m_animations)
333 buff.Append(anim.ToString());
338 return buff.ToString();
OpenSim.Framework.Animation[] ToArray()
OpenMetaverse.StructuredData.OSDArray OSDArray
void SetImplicitDefaultAnimation(UUID animID, int sequenceNum, UUID objectID)
Information about an Animation
OpenMetaverse.StructuredData.OSDMap OSDMap
override bool Equals(object obj)
AnimationSet(OSDArray pArray)
bool Remove(UUID animID, bool allowNoDefault)
Remove the specified animation
bool TrySetDefaultAnimation(string anim, int sequenceNum, UUID objectID)
Set the animation as the default animation if it's known
bool Add(UUID animID, int sequenceNum, UUID objectID)
override string ToString()
override int GetHashCode()
void FromOSDArray(OSDArray pArray)
void GetArrays(out UUID[] animIDs, out int[] sequenceNums, out UUID[] objectIDs)
OpenSim.Framework.Animation Animation
void FromArray(OpenSim.Framework.Animation[] theArray)
bool HasAnimation(UUID animID)
Interactive OpenSim region server
bool ResetDefaultAnimation()
bool SetDefaultAnimation(UUID animID, int sequenceNum, UUID objectID)
The default animation is reserved for "main" animations that are mutually exclusive, e.g. flying and sitting.
OpenSim.Region.Framework.Scenes.Animation.AnimationSet AnimationSet
OpenSim.Framework.Animation DefaultAnimation
static Dictionary< string, UUID > AnimsUUID