public void SetDirection(Direction dir) { if (this.Direction != dir) { this.Direction = dir; if (CurrentAnimation != null) { _animResult = CurrentAnimation.Loop(this.Direction); } } }
public void SetAnimation(SpriteAnimations animation, float animationTimeInMS = -1) { if (animation == SpriteAnimations.NONE) { if (CurrentAnimation != null) { CurrentAnimation.Reset(); } CurrentAnimation = null; return; } var animationToSet = Animations.GetAnimation(animation); if (animationToSet != CurrentAnimation) { // if my animation had callbacks i will still wanna run them if (CurrentAnimation?.Callbacks.Count > 0) { foreach (var animCallback in CurrentAnimation.Callbacks) { var framesUntilCallback = animCallback.PlayOnFrame - CurrentAnimation.CurrentFrame; animCallback.PlayOnFrame = framesUntilCallback; PendingCallbacks.Add(animCallback); } } CurrentAnimation?.Reset(); CurrentAnimation = animationToSet; CurrentAnimation.Reset(); if (animationTimeInMS > 0) { // CurrentAnimation.AnimationTimeInSeconds = animationTimeInMS / 1000; } if (animation == SpriteAnimations.DEAD) { CurrentAnimation.Loop(Direction); } } }