Ejemplo n.º 1
0
        protected internal override void step(float xOffset, float yOffset)
        {
            //Fetch information
            IList <Com.Brashmonkey.Spriter.animation.SpriterKeyFrame
                   > frameList = this.animation.frames;

            if (this.transitionFixed && this.transitionTempFixed)
            {
                firstKeyFrame  = frameList[this.currentKey];
                secondKeyFrame = frameList[(this.currentKey + 1) % frameList.Count];
                //Update
                this.frame += this.frameSpeed;
                if (this.frame >= this.animation.length)
                {
                    this.frame      = 0;
                    this.currentKey = 0;
                    firstKeyFrame   = frameList[this.currentKey];
                    secondKeyFrame  = frameList[(this.currentKey + 1) % frameList.Count];
                }
                if (this.frame > secondKeyFrame.getTime() && this.frameSpeed >= 0)
                {
                    this.currentKey = (this.currentKey + 1) % frameList.Count;
                }
                else
                {
                    if (this.frame < firstKeyFrame.getTime())
                    {
                        if (this.frame < 0)
                        {
                            this.frame      = this.animation.length;
                            this.currentKey = frameList.Count - 1;
                            firstKeyFrame   = frameList[frameList.Count - 1];
                            secondKeyFrame  = frameList[0];
                        }
                        else
                        {
                            this.currentKey = ((this.currentKey - 1) + frameList.Count) % frameList.Count;
                        }
                    }
                }
            }
            else
            {
                firstKeyFrame  = frameList[0];
                secondKeyFrame = this.lastRealFrame;
                float temp = (float)(this.fixCounter) / (float)this.fixMaxSteps;
                this.frame      = this.lastRealFrame.getTime() + (long)(this.fixMaxSteps * temp);
                this.fixCounter = System.Math.Min(this.fixCounter + this.transitionSpeed, this.fixMaxSteps
                                                  );
                //Update
                if (this.fixCounter == this.fixMaxSteps)
                {
                    this.frame      = 0;
                    this.fixCounter = 0;
                    if (this.lastRealFrame.Equals(this.lastFrame))
                    {
                        this.transitionFixed = true;
                    }
                    else
                    {
                        this.transitionTempFixed = true;
                    }
                    firstKeyFrame.setTime(0);
                }
            }
            //Interpolate
            this.currenObjectsToDraw   = firstKeyFrame.getObjects().Length;
            this.currentBonesToAnimate = firstKeyFrame.getBones().Length;
            this.transformBones(firstKeyFrame, secondKeyFrame, xOffset, yOffset);
            this.transformObjects(firstKeyFrame, secondKeyFrame, xOffset, yOffset);
        }
Ejemplo n.º 2
0
 protected internal override void step(float xOffset, float yOffset)
 {
     //Fetch information
     IList<Com.Brashmonkey.Spriter.animation.SpriterKeyFrame
         > frameList = this.animation.frames;
     if (this.transitionFixed && this.transitionTempFixed)
     {
         firstKeyFrame = frameList[this.currentKey];
         secondKeyFrame = frameList[(this.currentKey + 1) % frameList.Count];
         //Update
         this.frame += this.frameSpeed;
         if (this.frame >= this.animation.length)
         {
             this.frame = 0;
             this.currentKey = 0;
             firstKeyFrame = frameList[this.currentKey];
             secondKeyFrame = frameList[(this.currentKey + 1) % frameList.Count];
         }
         if (this.frame > secondKeyFrame.getTime() && this.frameSpeed >= 0)
         {
             this.currentKey = (this.currentKey + 1) % frameList.Count;
         }
         else
         {
             if (this.frame < firstKeyFrame.getTime())
             {
                 if (this.frame < 0)
                 {
                     this.frame = this.animation.length;
                     this.currentKey = frameList.Count - 1;
                     firstKeyFrame = frameList[frameList.Count - 1];
                     secondKeyFrame = frameList[0];
                 }
                 else
                 {
                     this.currentKey = ((this.currentKey - 1) + frameList.Count) % frameList.Count;
                 }
             }
         }
     }
     else
     {
         firstKeyFrame = frameList[0];
         secondKeyFrame = this.lastRealFrame;
         float temp = (float)(this.fixCounter) / (float)this.fixMaxSteps;
         this.frame = this.lastRealFrame.getTime() + (long)(this.fixMaxSteps * temp);
         this.fixCounter = System.Math.Min(this.fixCounter + this.transitionSpeed, this.fixMaxSteps
             );
         //Update
         if (this.fixCounter == this.fixMaxSteps)
         {
             this.frame = 0;
             this.fixCounter = 0;
             if (this.lastRealFrame.Equals(this.lastFrame))
             {
                 this.transitionFixed = true;
             }
             else
             {
                 this.transitionTempFixed = true;
             }
             firstKeyFrame.setTime(0);
         }
     }
     //Interpolate
     this.currenObjectsToDraw = firstKeyFrame.getObjects().Length;
     this.currentBonesToAnimate = firstKeyFrame.getBones().Length;
     this.transformBones(firstKeyFrame, secondKeyFrame, xOffset, yOffset);
     this.transformObjects(firstKeyFrame, secondKeyFrame, xOffset, yOffset);
 }