mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[libgdx] Finished sliders.
This commit is contained in:
parent
ac1c5ecb68
commit
6d3b6ebf0b
@ -893,7 +893,7 @@ public class Animation {
|
|||||||
return ENTRIES;
|
return ENTRIES;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets the transform mode for the specified frame.
|
/** Sets the inherit transform mode for the specified frame.
|
||||||
* @param frame Between 0 and <code>frameCount</code>, inclusive.
|
* @param frame Between 0 and <code>frameCount</code>, inclusive.
|
||||||
* @param time The frame time in seconds. */
|
* @param time The frame time in seconds. */
|
||||||
public void setFrame (int frame, float time, Inherit inherit) {
|
public void setFrame (int frame, float time, Inherit inherit) {
|
||||||
@ -917,9 +917,8 @@ public class Animation {
|
|||||||
float[] frames = this.frames;
|
float[] frames = this.frames;
|
||||||
if (time < frames[0]) {
|
if (time < frames[0]) {
|
||||||
if (blend == setup || blend == first) pose.inherit = bone.data.setup.inherit;
|
if (blend == setup || blend == first) pose.inherit = bone.data.setup.inherit;
|
||||||
return;
|
} else
|
||||||
}
|
pose.inherit = Inherit.values[(int)frames[search(frames, time, ENTRIES) + INHERIT]];
|
||||||
pose.inherit = Inherit.values[(int)frames[search(frames, time, ENTRIES) + INHERIT]];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1733,7 +1732,7 @@ public class Animation {
|
|||||||
|
|
||||||
/** Sets the time, mode, index, and frame time for the specified frame.
|
/** Sets the time, mode, index, and frame time for the specified frame.
|
||||||
* @param frame Between 0 and <code>frameCount</code>, inclusive.
|
* @param frame Between 0 and <code>frameCount</code>, inclusive.
|
||||||
* @param time Seconds between frames. */
|
* @param delay Seconds between frames. */
|
||||||
public void setFrame (int frame, float time, SequenceMode mode, int index, float delay) {
|
public void setFrame (int frame, float time, SequenceMode mode, int index, float delay) {
|
||||||
frame *= ENTRIES;
|
frame *= ENTRIES;
|
||||||
frames[frame] = time;
|
frames[frame] = time;
|
||||||
|
|||||||
@ -420,8 +420,8 @@ public class SkeletonBinary extends SkeletonLoader {
|
|||||||
data.skinRequired = (nn & 1) != 0;
|
data.skinRequired = (nn & 1) != 0;
|
||||||
data.loop = (nn & 2) != 0;
|
data.loop = (nn & 2) != 0;
|
||||||
data.additive = (nn & 4) != 0;
|
data.additive = (nn & 4) != 0;
|
||||||
if ((nn & 8) != 0) data.setup.mix = (nn & 16) != 0 ? input.readFloat() : 1;
|
if ((nn & 8) != 0) data.setup.time = input.readFloat();
|
||||||
if ((nn & 32) != 0) data.setup.time = input.readFloat();
|
if ((nn & 16) != 0) data.setup.mix = (nn & 32) != 0 ? input.readFloat() : 1;
|
||||||
constraints[i] = data;
|
constraints[i] = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -895,8 +895,8 @@ public class SkeletonJson extends SkeletonLoader {
|
|||||||
case "inherit" -> {
|
case "inherit" -> {
|
||||||
var timeline = new InheritTimeline(frames, bone.index);
|
var timeline = new InheritTimeline(frames, bone.index);
|
||||||
for (int frame = 0; keyMap != null; keyMap = keyMap.next, frame++) {
|
for (int frame = 0; keyMap != null; keyMap = keyMap.next, frame++) {
|
||||||
float time = keyMap.getFloat("time", 0);
|
timeline.setFrame(frame, keyMap.getFloat("time", 0),
|
||||||
timeline.setFrame(frame, time, Inherit.valueOf(keyMap.getString("inherit", Inherit.normal.name())));
|
Inherit.valueOf(keyMap.getString("inherit", Inherit.normal.name())));
|
||||||
}
|
}
|
||||||
timelines.add(timeline);
|
timelines.add(timeline);
|
||||||
}
|
}
|
||||||
@ -1154,8 +1154,8 @@ public class SkeletonJson extends SkeletonLoader {
|
|||||||
float lastDelay = 0;
|
float lastDelay = 0;
|
||||||
for (int frame = 0; keyMap != null; keyMap = keyMap.next, frame++) {
|
for (int frame = 0; keyMap != null; keyMap = keyMap.next, frame++) {
|
||||||
float delay = keyMap.getFloat("delay", lastDelay);
|
float delay = keyMap.getFloat("delay", lastDelay);
|
||||||
timeline.setFrame(frame, keyMap.getFloat("time", 0),
|
timeline.setFrame(frame, keyMap.getFloat("time", 0), SequenceMode.valueOf(keyMap.getString("mode", "hold")),
|
||||||
SequenceMode.valueOf(keyMap.getString("mode", "hold")), keyMap.getInt("index", 0), delay);
|
keyMap.getInt("index", 0), delay);
|
||||||
lastDelay = delay;
|
lastDelay = delay;
|
||||||
}
|
}
|
||||||
timelines.add(timeline);
|
timelines.add(timeline);
|
||||||
|
|||||||
@ -54,6 +54,7 @@ public class Slider extends Constraint<Slider, SliderData, SliderPose> {
|
|||||||
public void update (Skeleton skeleton, Physics physics) {
|
public void update (Skeleton skeleton, Physics physics) {
|
||||||
if (pose.mix == 0) return;
|
if (pose.mix == 0) return;
|
||||||
|
|
||||||
|
SliderData data = this.data;
|
||||||
Timeline[] timelines = data.animation.timelines.items;
|
Timeline[] timelines = data.animation.timelines.items;
|
||||||
int timelineCount = data.animation.timelines.size;
|
int timelineCount = data.animation.timelines.size;
|
||||||
Bone[] bones = skeleton.bones.items;
|
Bone[] bones = skeleton.bones.items;
|
||||||
@ -85,6 +86,9 @@ public class Slider extends Constraint<Slider, SliderData, SliderPose> {
|
|||||||
skeleton.updateCache.add(this);
|
skeleton.updateCache.add(this);
|
||||||
|
|
||||||
Slot[] slots = skeleton.slots.items;
|
Slot[] slots = skeleton.slots.items;
|
||||||
|
Constraint[] constraints = skeleton.constraints.items;
|
||||||
|
PhysicsConstraint[] physics = skeleton.physics.items;
|
||||||
|
int physicsCount = skeleton.physics.size;
|
||||||
for (int i = 0; i < timelineCount; i++) {
|
for (int i = 0; i < timelineCount; i++) {
|
||||||
Timeline t = timelines[i];
|
Timeline t = timelines[i];
|
||||||
if (t instanceof BoneTimeline timeline) {
|
if (t instanceof BoneTimeline timeline) {
|
||||||
@ -96,13 +100,12 @@ public class Slider extends Constraint<Slider, SliderData, SliderPose> {
|
|||||||
skeleton.resetCache(slots[timeline.getSlotIndex()]);
|
skeleton.resetCache(slots[timeline.getSlotIndex()]);
|
||||||
else if (t instanceof PhysicsConstraintTimeline timeline) {
|
else if (t instanceof PhysicsConstraintTimeline timeline) {
|
||||||
if (timeline.constraintIndex == -1) {
|
if (timeline.constraintIndex == -1) {
|
||||||
PhysicsConstraint[] constraints = skeleton.physics.items;
|
for (int ii = 0; ii < physicsCount; ii++)
|
||||||
for (int ii = 0, nn = skeleton.physics.size; ii < nn; ii++)
|
skeleton.resetCache(physics[ii]);
|
||||||
skeleton.resetCache(constraints[ii]);
|
|
||||||
} else
|
} else
|
||||||
skeleton.resetCache(skeleton.constraints.items[timeline.constraintIndex]);
|
skeleton.resetCache(constraints[timeline.constraintIndex]);
|
||||||
} else if (t instanceof ConstraintTimeline timeline) //
|
} else if (t instanceof ConstraintTimeline timeline) //
|
||||||
skeleton.resetCache(skeleton.constraints.items[timeline.getConstraintIndex()]);
|
skeleton.resetCache(constraints[timeline.getConstraintIndex()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user