[libgdx] Added slider additive property.

This commit is contained in:
Nathan Sweet 2025-04-22 19:38:41 -04:00
parent ac656fc8a9
commit 6793861875
4 changed files with 15 additions and 3 deletions

View File

@ -418,8 +418,9 @@ public class SkeletonBinary extends SkeletonLoader {
case CONSTRAINT_SLIDER -> {
var data = new SliderData(name);
data.skinRequired = (nn & 1) != 0;
if ((nn & 2) != 0) data.setup.mix = (nn & 4) != 0 ? input.readFloat() : 1;
if ((nn & 8) != 0) data.setup.time = input.readFloat();
data.additive = (nn & 2) != 0;
if ((nn & 4) != 0) data.setup.mix = (nn & 8) != 0 ? input.readFloat() : 1;
if ((nn & 16) != 0) data.setup.time = input.readFloat();
constraints[i] = data;
}
}

View File

@ -408,6 +408,7 @@ public class SkeletonJson extends SkeletonLoader {
case "slider" -> {
var data = new SliderData(name);
data.skinRequired = skinRequired;
data.additive = constraintMap.getBoolean("additive", false);
data.setup.time = constraintMap.getFloat("time", 0);
data.setup.mix = constraintMap.getFloat("mix", 1);
skeletonData.constraints.add(data);

View File

@ -71,7 +71,8 @@ public class Slider extends Constraint<Slider, SliderData, SliderPose> {
}
SliderPose pose = applied;
data.animation.apply(skeleton, pose.time, pose.time, false, null, pose.mix, MixBlend.replace, MixDirection.in, true);
data.animation.apply(skeleton, pose.time, pose.time, false, null, pose.mix, data.additive ? MixBlend.add : MixBlend.replace,
MixDirection.in, true);
}
void sort (Skeleton skeleton) {

View File

@ -34,6 +34,7 @@ package com.esotericsoftware.spine;
* See <a href="https://esotericsoftware.com/spine-physics-constraints">Physics constraints</a> in the Spine User Guide. */
public class SliderData extends ConstraintData<Slider, SliderPose> {
Animation animation;
boolean additive;
public SliderData (String name) {
super(name, new SliderPose());
@ -50,4 +51,12 @@ public class SliderData extends ConstraintData<Slider, SliderPose> {
public void setAnimation (Animation animation) {
this.animation = animation;
}
public boolean getAdditive () {
return additive;
}
public void setAdditive (boolean additive) {
this.additive = additive;
}
}