Exemplo n.º 1
0
        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);
                }
            }
        }