|
@@ -224,7 +224,7 @@ public class AnimationState {
|
|
float animationLast = current.animationLast, animationTime = current.getAnimationTime();
|
|
float animationLast = current.animationLast, animationTime = current.getAnimationTime();
|
|
int timelineCount = current.animation.timelines.size;
|
|
int timelineCount = current.animation.timelines.size;
|
|
Object[] timelines = current.animation.timelines.items;
|
|
Object[] timelines = current.animation.timelines.items;
|
|
- if (i == 0 && (mix == 1 || blend == MixBlend.add)) {
|
|
|
|
|
|
+ if ((i == 0 && mix == 1) || blend == MixBlend.add) {
|
|
for (int ii = 0; ii < timelineCount; ii++)
|
|
for (int ii = 0; ii < timelineCount; ii++)
|
|
((Timeline)timelines[ii]).apply(skeleton, animationLast, animationTime, events, mix, blend, MixDirection.in);
|
|
((Timeline)timelines[ii]).apply(skeleton, animationLast, animationTime, events, mix, blend, MixDirection.in);
|
|
} else {
|
|
} else {
|
|
@@ -238,8 +238,8 @@ public class AnimationState {
|
|
Timeline timeline = (Timeline)timelines[ii];
|
|
Timeline timeline = (Timeline)timelines[ii];
|
|
MixBlend timelineBlend = (timelineMode[ii] & NOT_LAST - 1) == SUBSEQUENT ? blend : MixBlend.setup;
|
|
MixBlend timelineBlend = (timelineMode[ii] & NOT_LAST - 1) == SUBSEQUENT ? blend : MixBlend.setup;
|
|
if (timeline instanceof RotateTimeline) {
|
|
if (timeline instanceof RotateTimeline) {
|
|
- applyRotateTimeline(timeline, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1,
|
|
|
|
- firstFrame);
|
|
|
|
|
|
+ applyRotateTimeline((RotateTimeline)timeline, skeleton, animationTime, mix, timelineBlend, timelinesRotation,
|
|
|
|
+ ii << 1, firstFrame);
|
|
} else
|
|
} else
|
|
timeline.apply(skeleton, animationLast, animationTime, events, mix, timelineBlend, MixDirection.in);
|
|
timeline.apply(skeleton, animationLast, animationTime, events, mix, timelineBlend, MixDirection.in);
|
|
}
|
|
}
|
|
@@ -315,8 +315,8 @@ public class AnimationState {
|
|
}
|
|
}
|
|
from.totalAlpha += alpha;
|
|
from.totalAlpha += alpha;
|
|
if (timeline instanceof RotateTimeline) {
|
|
if (timeline instanceof RotateTimeline) {
|
|
- applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1,
|
|
|
|
- firstFrame);
|
|
|
|
|
|
+ applyRotateTimeline((RotateTimeline)timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation,
|
|
|
|
+ i << 1, firstFrame);
|
|
} else {
|
|
} else {
|
|
if (timelineBlend == MixBlend.setup) {
|
|
if (timelineBlend == MixBlend.setup) {
|
|
if (timeline instanceof AttachmentTimeline) {
|
|
if (timeline instanceof AttachmentTimeline) {
|
|
@@ -338,7 +338,7 @@ public class AnimationState {
|
|
return mix;
|
|
return mix;
|
|
}
|
|
}
|
|
|
|
|
|
- private void applyRotateTimeline (Timeline timeline, Skeleton skeleton, float time, float alpha, MixBlend blend,
|
|
|
|
|
|
+ private void applyRotateTimeline (RotateTimeline timeline, Skeleton skeleton, float time, float alpha, MixBlend blend,
|
|
float[] timelinesRotation, int i, boolean firstFrame) {
|
|
float[] timelinesRotation, int i, boolean firstFrame) {
|
|
|
|
|
|
if (firstFrame) timelinesRotation[i] = 0;
|
|
if (firstFrame) timelinesRotation[i] = 0;
|
|
@@ -348,9 +348,8 @@ public class AnimationState {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- RotateTimeline rotateTimeline = (RotateTimeline)timeline;
|
|
|
|
- Bone bone = skeleton.bones.get(rotateTimeline.boneIndex);
|
|
|
|
- float[] frames = rotateTimeline.frames;
|
|
|
|
|
|
+ Bone bone = skeleton.bones.get(timeline.boneIndex);
|
|
|
|
+ float[] frames = timeline.frames;
|
|
float r1, r2;
|
|
float r1, r2;
|
|
if (time < frames[0]) { // Time is before first frame.
|
|
if (time < frames[0]) { // Time is before first frame.
|
|
switch (blend) {
|
|
switch (blend) {
|
|
@@ -372,7 +371,7 @@ public class AnimationState {
|
|
int frame = Animation.binarySearch(frames, time, ENTRIES);
|
|
int frame = Animation.binarySearch(frames, time, ENTRIES);
|
|
float prevRotation = frames[frame + PREV_ROTATION];
|
|
float prevRotation = frames[frame + PREV_ROTATION];
|
|
float frameTime = frames[frame];
|
|
float frameTime = frames[frame];
|
|
- float percent = rotateTimeline.getCurvePercent((frame >> 1) - 1,
|
|
|
|
|
|
+ float percent = timeline.getCurvePercent((frame >> 1) - 1,
|
|
1 - (time - frameTime) / (frames[frame + PREV_TIME] - frameTime));
|
|
1 - (time - frameTime) / (frames[frame + PREV_TIME] - frameTime));
|
|
|
|
|
|
r2 = frames[frame + ROTATION] - prevRotation;
|
|
r2 = frames[frame + ROTATION] - prevRotation;
|