From 6d3b6ebf0b1a9a942b330fe0cd4f54d891ddeace Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Sun, 27 Apr 2025 14:57:51 -0400 Subject: [PATCH] [libgdx] Finished sliders. --- .../src/com/esotericsoftware/spine/Animation.java | 9 ++++----- .../com/esotericsoftware/spine/SkeletonBinary.java | 4 ++-- .../com/esotericsoftware/spine/SkeletonJson.java | 8 ++++---- .../src/com/esotericsoftware/spine/Slider.java | 13 ++++++++----- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java index 94479cfa5..1edef2308 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java @@ -893,7 +893,7 @@ public class Animation { return ENTRIES; } - /** Sets the transform mode for the specified frame. + /** Sets the inherit transform mode for the specified frame. * @param frame Between 0 and frameCount, inclusive. * @param time The frame time in seconds. */ public void setFrame (int frame, float time, Inherit inherit) { @@ -917,9 +917,8 @@ public class Animation { float[] frames = this.frames; if (time < frames[0]) { if (blend == setup || blend == first) pose.inherit = bone.data.setup.inherit; - return; - } - pose.inherit = Inherit.values[(int)frames[search(frames, time, ENTRIES) + INHERIT]]; + } else + 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. * @param frame Between 0 and frameCount, inclusive. - * @param time Seconds between frames. */ + * @param delay Seconds between frames. */ public void setFrame (int frame, float time, SequenceMode mode, int index, float delay) { frame *= ENTRIES; frames[frame] = time; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java index eb7d0850d..eb619c648 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -420,8 +420,8 @@ public class SkeletonBinary extends SkeletonLoader { data.skinRequired = (nn & 1) != 0; data.loop = (nn & 2) != 0; data.additive = (nn & 4) != 0; - if ((nn & 8) != 0) data.setup.mix = (nn & 16) != 0 ? input.readFloat() : 1; - if ((nn & 32) != 0) data.setup.time = input.readFloat(); + if ((nn & 8) != 0) data.setup.time = input.readFloat(); + if ((nn & 16) != 0) data.setup.mix = (nn & 32) != 0 ? input.readFloat() : 1; constraints[i] = data; } } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java index 03a60f2b0..1b4de3619 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -895,8 +895,8 @@ public class SkeletonJson extends SkeletonLoader { case "inherit" -> { var timeline = new InheritTimeline(frames, bone.index); for (int frame = 0; keyMap != null; keyMap = keyMap.next, frame++) { - float time = keyMap.getFloat("time", 0); - timeline.setFrame(frame, time, Inherit.valueOf(keyMap.getString("inherit", Inherit.normal.name()))); + timeline.setFrame(frame, keyMap.getFloat("time", 0), + Inherit.valueOf(keyMap.getString("inherit", Inherit.normal.name()))); } timelines.add(timeline); } @@ -1154,8 +1154,8 @@ public class SkeletonJson extends SkeletonLoader { float lastDelay = 0; for (int frame = 0; keyMap != null; keyMap = keyMap.next, frame++) { float delay = keyMap.getFloat("delay", lastDelay); - timeline.setFrame(frame, keyMap.getFloat("time", 0), - SequenceMode.valueOf(keyMap.getString("mode", "hold")), keyMap.getInt("index", 0), delay); + timeline.setFrame(frame, keyMap.getFloat("time", 0), SequenceMode.valueOf(keyMap.getString("mode", "hold")), + keyMap.getInt("index", 0), delay); lastDelay = delay; } timelines.add(timeline); diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slider.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slider.java index 6a1eb572a..aaa51b5f8 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slider.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slider.java @@ -54,6 +54,7 @@ public class Slider extends Constraint { public void update (Skeleton skeleton, Physics physics) { if (pose.mix == 0) return; + SliderData data = this.data; Timeline[] timelines = data.animation.timelines.items; int timelineCount = data.animation.timelines.size; Bone[] bones = skeleton.bones.items; @@ -85,6 +86,9 @@ public class Slider extends Constraint { skeleton.updateCache.add(this); 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++) { Timeline t = timelines[i]; if (t instanceof BoneTimeline timeline) { @@ -96,13 +100,12 @@ public class Slider extends Constraint { skeleton.resetCache(slots[timeline.getSlotIndex()]); else if (t instanceof PhysicsConstraintTimeline timeline) { if (timeline.constraintIndex == -1) { - PhysicsConstraint[] constraints = skeleton.physics.items; - for (int ii = 0, nn = skeleton.physics.size; ii < nn; ii++) - skeleton.resetCache(constraints[ii]); + for (int ii = 0; ii < physicsCount; ii++) + skeleton.resetCache(physics[ii]); } else - skeleton.resetCache(skeleton.constraints.items[timeline.constraintIndex]); + skeleton.resetCache(constraints[timeline.constraintIndex]); } else if (t instanceof ConstraintTimeline timeline) // - skeleton.resetCache(skeleton.constraints.items[timeline.getConstraintIndex()]); + skeleton.resetCache(constraints[timeline.getConstraintIndex()]); } } }