private static void AddAnimation(List<AnimationStateInfo> animStates,
								         AnimationStateInfo animInfo)
        {
            RemoveAnimation(animStates, animInfo.State.Name);
            if (animInfo == null)
                return;
            animStates.Add(animInfo);
        }
        /// <summary>
        ///   Remove an animation from a set of animation states.
        ///   The animation will not be enabled, so if it was active,
        ///   it will be stopped.
        /// </summary>
        /// <param name="animStates"></param>
        /// <param name="animation"></param>
        private static void RemoveAnimation(List<AnimationStateInfo> animStates,
									        AnimationStateInfo animToRemove)
        {
            foreach (AnimationStateInfo animInfo in animStates) {
                if (animInfo == animToRemove) {
                    animInfo.State.IsEnabled = false;
                    animStates.Remove(animInfo);
                    break;
                }
            }
        }
 public void AddAnimation(AnimationStateInfo animInfo)
 {
     Monitor.Enter(animationStatesQueue);
     try {
         AddAnimation(this.AnimationStates, animInfo);
         // EnableAnimations(this.AnimationStates);
         animInfo.State.IsEnabled = true;
         // For now, always reset the animation with this call
         // ResetAnimations(this.AnimationStates);
         // animInfo.State.Time = 0.0f;
     } finally {
         Monitor.Exit(animationStatesQueue);
     }
 }