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 b1471d061..6f7a96d14 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -430,14 +430,15 @@ public class SkeletonBinary extends SkeletonLoader { data.local = (nn & 128) != 0; data.bone = bones[input.readInt(true)]; float offset = input.readFloat(); + float propertyScale = 1; data.property = switch (input.readByte()) { case 0 -> new FromRotate(); case 1 -> { - offset *= scale; + propertyScale = scale; yield new FromX(); } case 2 -> { - offset *= scale; + propertyScale = scale; yield new FromY(); } case 3 -> new FromScaleX(); @@ -445,9 +446,9 @@ public class SkeletonBinary extends SkeletonLoader { case 5 -> new FromShearY(); default -> null; }; - data.property.offset = offset; + data.property.offset = offset * propertyScale; data.offset = input.readFloat(); - data.scale = input.readFloat(); + data.scale = input.readFloat() / propertyScale; } 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 2f6b45bc0..dd9177f26 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -413,9 +413,10 @@ 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("from", 0) * propertyScale(property, scale); + float propertyScale = propertyScale(property, scale); + data.property.offset = constraintMap.getFloat("from", 0) * propertyScale; data.offset = constraintMap.getFloat("to", 0); - data.scale = constraintMap.getFloat("scale", 1); + data.scale = constraintMap.getFloat("scale", 1) / propertyScale; data.local = constraintMap.getBoolean("local", false); }