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 2af49199b..b1471d061 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -446,6 +446,7 @@ public class SkeletonBinary extends SkeletonLoader { default -> null; }; data.property.offset = offset; + data.offset = input.readFloat(); data.scale = input.readFloat(); } 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 038343eeb..ab70f9455 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -413,8 +413,9 @@ public class SkeletonJson extends SkeletonLoader { if (data.bone == null) throw new SerializationException("Slider bone not found: " + boneName); String property = constraintMap.getString("property"); data.property = fromProperty(property); - data.property.offset = constraintMap.getFloat("offset", 0) * propertyScale(property, scale); - data.scale = constraintMap.getFloat("scale"); + data.property.offset = constraintMap.getFloat("from", 0) * propertyScale(property, scale); + data.offset = constraintMap.getFloat("to", 0); + data.scale = constraintMap.getFloat("scale", 1); data.local = constraintMap.getBoolean("local", false); } 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 1e37ee011..9db88fb1e 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slider.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slider.java @@ -65,7 +65,7 @@ public class Slider extends Constraint { if (bone != null) { if (!bone.active) return; if (data.local) bone.applied.validateLocalTransform(skeleton); - p.time = (data.property.value(bone.applied, data.local, offsets) - data.property.offset) * data.scale; + p.time = data.offset + (data.property.value(bone.applied, data.local, offsets) - data.property.offset) * data.scale; if (data.loop) p.time = animation.duration + (p.time % animation.duration); else diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SliderData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SliderData.java index c3506c91e..d51893b6c 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SliderData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SliderData.java @@ -41,7 +41,7 @@ public class SliderData extends ConstraintData { boolean additive, loop; @Null BoneData bone; @Null FromProperty property; - float scale; + float offset, scale; boolean local; public SliderData (String name) { @@ -92,6 +92,14 @@ public class SliderData extends ConstraintData { this.property = property; } + public float getOffset () { + return offset; + } + + public void setOffset (float offset) { + this.offset = offset; + } + public float getScale () { return scale; }