[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; if (skeleton.scaleY == 0) skeleton.scaleY = 0.01f;
skeleton.setScale(scaleX, scaleY); 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(); delta = Math.min(delta, 0.032f) * ui.speedSlider.getValue();
skeleton.update(delta); skeleton.update(delta);
state.update(delta); state.update(delta);

View File

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