|
@@ -373,8 +373,8 @@ public class Animation {
|
|
|
|
|
|
Bone bone = skeleton.bones.get(boneIndex);
|
|
Bone bone = skeleton.bones.get(boneIndex);
|
|
if (time >= frames[frames.length - 3]) { // Time is after last frame.
|
|
if (time >= frames[frames.length - 3]) { // Time is after last frame.
|
|
- bone.scaleX += (bone.data.scaleX - 1 + frames[frames.length - 2] - bone.scaleX) * alpha;
|
|
|
|
- bone.scaleY += (bone.data.scaleY - 1 + frames[frames.length - 1] - bone.scaleY) * alpha;
|
|
|
|
|
|
+ bone.scaleX += (bone.data.scaleX * frames[frames.length - 2] - bone.scaleX) * alpha;
|
|
|
|
+ bone.scaleY += (bone.data.scaleY * frames[frames.length - 1] - bone.scaleY) * alpha;
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -386,9 +386,9 @@ public class Animation {
|
|
float percent = MathUtils.clamp(1 - (time - frameTime) / (frames[frameIndex + PREV_FRAME_TIME] - frameTime), 0, 1);
|
|
float percent = MathUtils.clamp(1 - (time - frameTime) / (frames[frameIndex + PREV_FRAME_TIME] - frameTime), 0, 1);
|
|
percent = getCurvePercent(frameIndex / 3 - 1, percent);
|
|
percent = getCurvePercent(frameIndex / 3 - 1, percent);
|
|
|
|
|
|
- bone.scaleX += (bone.data.scaleX - 1 + prevFrameX + (frames[frameIndex + FRAME_X] - prevFrameX) * percent - bone.scaleX)
|
|
|
|
|
|
+ bone.scaleX += (bone.data.scaleX * (prevFrameX + (frames[frameIndex + FRAME_X] - prevFrameX) * percent) - bone.scaleX)
|
|
* alpha;
|
|
* alpha;
|
|
- bone.scaleY += (bone.data.scaleY - 1 + prevFrameY + (frames[frameIndex + FRAME_Y] - prevFrameY) * percent - bone.scaleY)
|
|
|
|
|
|
+ bone.scaleY += (bone.data.scaleY * (prevFrameY + (frames[frameIndex + FRAME_Y] - prevFrameY) * percent) - bone.scaleY)
|
|
* alpha;
|
|
* alpha;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -719,8 +719,9 @@ public class Animation {
|
|
|
|
|
|
static public class IkConstraintTimeline extends CurveTimeline {
|
|
static public class IkConstraintTimeline extends CurveTimeline {
|
|
static private final int PREV_FRAME_TIME = -3;
|
|
static private final int PREV_FRAME_TIME = -3;
|
|
|
|
+ static private final int PREV_FRAME_MIX = -2;
|
|
|
|
+ static private final int PREV_FRAME_BEND_DIRECTION = -1;
|
|
static private final int FRAME_MIX = 1;
|
|
static private final int FRAME_MIX = 1;
|
|
- static private final int FRAME_BEND_DIRECTION = 2;
|
|
|
|
|
|
|
|
int ikConstraintIndex;
|
|
int ikConstraintIndex;
|
|
private final float[] frames; // time, mix, bendDirection, ...
|
|
private final float[] frames; // time, mix, bendDirection, ...
|
|
@@ -764,14 +765,14 @@ public class Animation {
|
|
|
|
|
|
// Interpolate between the previous frame and the current frame.
|
|
// Interpolate between the previous frame and the current frame.
|
|
int frameIndex = binarySearch(frames, time, 3);
|
|
int frameIndex = binarySearch(frames, time, 3);
|
|
- float prevFrameMix = frames[frameIndex - 2];
|
|
|
|
|
|
+ float prevFrameMix = frames[frameIndex + PREV_FRAME_MIX];
|
|
float frameTime = frames[frameIndex];
|
|
float frameTime = frames[frameIndex];
|
|
float percent = MathUtils.clamp(1 - (time - frameTime) / (frames[frameIndex + PREV_FRAME_TIME] - frameTime), 0, 1);
|
|
float percent = MathUtils.clamp(1 - (time - frameTime) / (frames[frameIndex + PREV_FRAME_TIME] - frameTime), 0, 1);
|
|
percent = getCurvePercent(frameIndex / 3 - 1, percent);
|
|
percent = getCurvePercent(frameIndex / 3 - 1, percent);
|
|
|
|
|
|
float mix = prevFrameMix + (frames[frameIndex + FRAME_MIX] - prevFrameMix) * percent;
|
|
float mix = prevFrameMix + (frames[frameIndex + FRAME_MIX] - prevFrameMix) * percent;
|
|
ikConstraint.mix += (mix - ikConstraint.mix) * alpha;
|
|
ikConstraint.mix += (mix - ikConstraint.mix) * alpha;
|
|
- ikConstraint.bendDirection = (int)frames[frameIndex + FRAME_BEND_DIRECTION];
|
|
|
|
|
|
+ ikConstraint.bendDirection = (int)frames[frameIndex + PREV_FRAME_BEND_DIRECTION];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|