[libgdx] Skeleton Viewer, allow setting setup pose every frame. Store linear.

This commit is contained in:
Nathan Sweet 2021-09-15 00:07:30 -06:00
parent 91f7969cdc
commit 0e3722861f
2 changed files with 30 additions and 4 deletions

View File

@ -250,6 +250,13 @@ public class SkeletonViewer extends ApplicationAdapter {
if (skeleton.scaleY == 0) skeleton.scaleY = 0.01f;
skeleton.setScale(scaleX, scaleY);
if (ui.setupPoseButton.isChecked())
skeleton.setToSetupPose();
else if (ui.bonesSetupPoseButton.isChecked())
skeleton.setBonesToSetupPose();
else if (ui.slotsSetupPoseButton.isChecked()) //
skeleton.setSlotsToSetupPose();
delta = Math.min(delta, 0.032f) * ui.speedSlider.getValue();
skeleton.update(delta);
state.update(delta);

View File

@ -88,9 +88,9 @@ class SkeletonViewerUI {
CheckBox linearCheckbox = new CheckBox("Linear", skin);
TextButton bonesSetupPoseButton = new TextButton("Bones", skin);
TextButton slotsSetupPoseButton = new TextButton("Slots", skin);
TextButton setupPoseButton = new TextButton("Both", skin);
TextButton bonesSetupPoseButton = new TextButton("Bones", skin, "toggle");
TextButton slotsSetupPoseButton = new TextButton("Slots", skin, "toggle");
TextButton setupPoseButton = new TextButton("Both", skin, "toggle");
List<String> skinList = new List(skin);
ScrollPane skinScroll = new ScrollPane(skinList, skin, "bg");
@ -136,6 +136,8 @@ class SkeletonViewerUI {
linearCheckbox.setChecked(true);
new ButtonGroup(bonesSetupPoseButton, slotsSetupPoseButton, setupPoseButton).setMinCheckCount(0);
loopCheckbox.setChecked(true);
loadScaleSlider.setValue(1);
@ -347,7 +349,6 @@ class SkeletonViewerUI {
});
slotsSetupPoseButton.addListener(new ChangeListener() {
public void changed (ChangeEvent event, Actor actor) {
viewer.skeleton.getRootBone().getChildren();
if (viewer.skeleton != null) viewer.skeleton.setSlotsToSetupPose();
}
});
@ -594,6 +595,10 @@ class SkeletonViewerUI {
debugPointsCheckbox.addListener(savePrefsListener);
debugClippingCheckbox.addListener(savePrefsListener);
pmaCheckbox.addListener(savePrefsListener);
linearCheckbox.addListener(savePrefsListener);
bonesSetupPoseButton.addListener(savePrefsListener);
slotsSetupPoseButton.addListener(savePrefsListener);
setupPoseButton.addListener(savePrefsListener);
loopCheckbox.addListener(savePrefsListener);
addCheckbox.addListener(savePrefsListener);
holdPrevCheckbox.addListener(savePrefsListener);
@ -662,6 +667,15 @@ class SkeletonViewerUI {
prefs.putBoolean("debugPoints", debugPointsCheckbox.isChecked());
prefs.putBoolean("debugClipping", debugClippingCheckbox.isChecked());
prefs.putBoolean("premultiplied", pmaCheckbox.isChecked());
prefs.putBoolean("linear", linearCheckbox.isChecked());
if (bonesSetupPoseButton.isChecked())
prefs.putString("setupPose", "bones");
else if (slotsSetupPoseButton.isChecked())
prefs.putString("setupPose", "slots");
else if (setupPoseButton.isChecked()) //
prefs.putString("setupPose", "both");
else
prefs.remove("setupPose");
prefs.putBoolean("loop", loopCheckbox.isChecked());
prefs.putBoolean("add", addCheckbox.isChecked());
prefs.putBoolean("holdPrev", holdPrevCheckbox.isChecked());
@ -695,6 +709,11 @@ class SkeletonViewerUI {
debugPointsCheckbox.setChecked(prefs.getBoolean("debugPoints", true));
debugClippingCheckbox.setChecked(prefs.getBoolean("debugClipping", true));
pmaCheckbox.setChecked(prefs.getBoolean("premultiplied", true));
linearCheckbox.setChecked(prefs.getBoolean("linear", true));
String setupPose = prefs.getString("setupPose", "");
bonesSetupPoseButton.setChecked(setupPose.equals("bones"));
slotsSetupPoseButton.setChecked(setupPose.equals("slots"));
setupPoseButton.setChecked(setupPose.equals("both"));
loopCheckbox.setChecked(prefs.getBoolean("loop", true));
addCheckbox.setChecked(prefs.getBoolean("add", false));
holdPrevCheckbox.setChecked(prefs.getBoolean("holdPrev", false));