/// <summary>Interpolates the objects of firstFrame and secondFrame.</summary>
        /// <remarks>Interpolates the objects of firstFrame and secondFrame.</remarks>
        /// <param name="currentFrame"></param>
        /// <param name="nextFrame"></param>
        /// <param name="xOffset"></param>
        /// <param name="yOffset"></param>
        protected internal virtual void transformObjects(SpriterKeyFrame
			 currentFrame, SpriterKeyFrame nextFrame, float
			 xOffset, float yOffset)
        {
            this.rect.set(xOffset, yOffset, xOffset, yOffset);
            if (!this.updateObjects)
            {
                return;
            }
            this.updateTransformedTempObjects(nextFrame.getObjects(), this.tempObjects2);
            this.updateTempObjects(currentFrame.getObjects(), this.nonTransformedTempObjects);
            for (int i = 0; i < this.currenObjectsToDraw; i++)
            {
                if (this.tempObjects[i].active)
                {
                    this.tweenObject(this.nonTransformedTempObjects[i], nextFrame.getObjectFor(this.nonTransformedTempObjects
                        [i]), i, currentFrame.getTime(), nextFrame.getTime());
                }
            }
        }
        /// <summary>Interpolates the bones for this animation.</summary>
        /// <remarks>Interpolates the bones for this animation.</remarks>
        /// <param name="currentFrame">first keyframe</param>
        /// <param name="nextFrame">second keyframe</param>
        /// <param name="currentAnimationTime"></param>
        /// <param name="key2StartTime"></param>
        /// <returns>interpolated SpriterBone array</returns>
        protected internal virtual void transformBones(SpriterKeyFrame
			 currentFrame, SpriterKeyFrame nextFrame, float
			 xOffset, float yOffset)
        {
            if (this.rootParent.getParent() != null)
            {
                this.translateRoot();
            }
            else
            {
                this.tempParent.setX(xOffset);
                this.tempParent.setY(yOffset);
                this.tempParent.setAngle(this.angle);
                this.tempParent.setScaleX(this.flippedX);
                this.tempParent.setScaleY(this.flippedY);
            }
            this.setScale(this.scale);
            if (!this.updateBones)
            {
                return;
            }
            this.updateTransformedTempObjects(nextFrame.getBones(), this.tempBones2);
            this.updateTempObjects(currentFrame.getBones(), this.nonTransformedTempBones);
            for (int i = 0; i < this.nonTransformedTempBones.Length; i++)
            {
                if (this.tempBones[i].active)
                {
                    this.tweenBone(this.nonTransformedTempBones[i], nextFrame.getBoneFor(this.nonTransformedTempBones
                        [i]), i, currentFrame.getTime(), nextFrame.getTime());
                }
            }
        }