[libgdx] Fixed slider bone "to" minimum value not being applied.

This commit is contained in:
Nathan Sweet 2025-06-18 13:22:27 -04:00
parent 3b2d01d1af
commit 3ec7121388
4 changed files with 14 additions and 4 deletions

View File

@ -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;

View File

@ -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);
}

View File

@ -65,7 +65,7 @@ public class Slider extends Constraint<Slider, SliderData, SliderPose> {
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

View File

@ -41,7 +41,7 @@ public class SliderData extends ConstraintData<Slider, SliderPose> {
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<Slider, SliderPose> {
this.property = property;
}
public float getOffset () {
return offset;
}
public void setOffset (float offset) {
this.offset = offset;
}
public float getScale () {
return scale;
}