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); } }