/// <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(com.brashmonkey.spriter.animation.SpriterKeyFrame
			 currentFrame, com.brashmonkey.spriter.animation.SpriterKeyFrame nextFrame, float
			 xOffset, float yOffset)
        {
            this.rect.set(xOffset, yOffset, xOffset, yOffset);
            this.updateTransformedTempObjects(nextFrame.getObjects(), this.tempObjects2);
            this.updateTempObjects(currentFrame.getObjects(), this.nonTransformedTempObjects);
            for (int i = 0; i < this.currenObjectsToDraw; i++)
            {
                if (this.tempObjects[i].tween)
                {
                    this.tweenObject(this.nonTransformedTempObjects[i], nextFrame.getObjectFor(this.nonTransformedTempObjects
                        [i]), i, currentFrame.getTime(), nextFrame.getTime());
                }
                else
                {
                    this.tweenObject(this.animations[0].frames[0].getObjectFor(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(com.brashmonkey.spriter.animation.SpriterKeyFrame
			 currentFrame, com.brashmonkey.spriter.animation.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);
            this.updateTransformedTempObjects(nextFrame.getBones(), this.tempBones2);
            this.updateTempObjects(currentFrame.getBones(), this.nonTransformedTempBones);
            for (int i = 0; i < this.nonTransformedTempBones.Length; i++)
            {
                if (this.tempObjects[i].tween)
                {
                    this.tweenBone(this.nonTransformedTempBones[i], nextFrame.getBoneFor(this.nonTransformedTempBones
                        [i]), i, currentFrame.getTime(), nextFrame.getTime());
                }
                else
                {
                    this.tweenBone(this.nonTransformedTempBones[i], this.animations[0].frames[0].getBoneFor
                        (this.nonTransformedTempBones[i]), i, currentFrame.getTime(), nextFrame.getTime(
                        ));
                }
            }
        }