public virtual void tweenObjects(SpriterAnimation animation) { foreach (SpriterObject key in objectsToTween.Keys) { SpriterObject toTween = key; SpriterKeyFrame frame = animation.frames[objectsToTween[key]]; long time = frame.getTime(); SpriterKeyFrame currentFrame = animation.getPreviousFrameForObject (toTween, time); SpriterKeyFrame nextFrame = animation.getNextFrameFor (toTween, currentFrame, 1); if (nextFrame != currentFrame) { SpriterObject object1 = currentFrame.getObjectFor (toTween); SpriterObject object2 = nextFrame.getObjectFor(toTween ); this.interpolateSpriterObject(toTween, object1, object2, currentFrame.getTime(), nextFrame.getTime(), time); } SpriterObject[] objects = new SpriterObject [frame.getObjects().Length + 1]; for (int i = 0; i < objects.Length - 1; i++) { objects[i] = frame.getObjects()[i]; } objects[objects.Length - 1] = toTween; frame.setObjects(objects); } }
/// <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()); } } }