Пример #1
0
        public override void Draw(SpriteBatch spriteBatch, float elapsedSeconds, float totalSeconds)
        {
            var tileWidth  = this.texture.Width / config.TilingX;
            var tileHeight = this.texture.Height / config.TilingY;

            int inAnimationNum  = (int)((totalSeconds % CurrentAnimation.Duration) * CurrentAnimation.FrameNumbers.Length);
            int inImageFrameNum = CurrentAnimation.FrameNumbers[inAnimationNum];

            var x = inImageFrameNum % config.TilingX;
            var y = (inImageFrameNum / config.TilingX) % config.TilingY;

            this.sourceRectangle = new Rectangle(x * tileWidth, y * tileHeight, tileWidth, tileHeight);

            if (NextAnimation != null && neutralFrames.Contains(inImageFrameNum))
            {
                CurrentAnimation = NextAnimation;
                NextAnimation    = null;
            }

            base.Draw(spriteBatch, elapsedSeconds, totalSeconds);
        }
Пример #2
0
 public void SwitchTo(string animationName)
 {
     NextAnimation = animByName[animationName];
 }