|
@@ -192,11 +192,11 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
String extension = skeletonFile.extension();
|
|
String extension = skeletonFile.extension();
|
|
if (extension.equalsIgnoreCase("json") || extension.equalsIgnoreCase("txt")) {
|
|
if (extension.equalsIgnoreCase("json") || extension.equalsIgnoreCase("txt")) {
|
|
SkeletonJson json = new SkeletonJson(atlas);
|
|
SkeletonJson json = new SkeletonJson(atlas);
|
|
- json.setScale(ui.scaleSlider.getValue());
|
|
|
|
|
|
+ json.setScale(ui.loadScaleSlider.getValue());
|
|
skeletonData = json.readSkeletonData(skeletonFile);
|
|
skeletonData = json.readSkeletonData(skeletonFile);
|
|
} else {
|
|
} else {
|
|
SkeletonBinary binary = new SkeletonBinary(atlas);
|
|
SkeletonBinary binary = new SkeletonBinary(atlas);
|
|
- binary.setScale(ui.scaleSlider.getValue());
|
|
|
|
|
|
+ binary.setScale(ui.loadScaleSlider.getValue());
|
|
skeletonData = binary.readSkeletonData(skeletonFile);
|
|
skeletonData = binary.readSkeletonData(skeletonFile);
|
|
if (skeletonData.getBones().size == 0) throw new Exception("No bones in skeleton data.");
|
|
if (skeletonData.getBones().size == 0) throw new Exception("No bones in skeleton data.");
|
|
}
|
|
}
|
|
@@ -311,7 +311,10 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
renderer.setPremultipliedAlpha(ui.premultipliedCheckbox.isChecked());
|
|
renderer.setPremultipliedAlpha(ui.premultipliedCheckbox.isChecked());
|
|
batch.setPremultipliedAlpha(ui.premultipliedCheckbox.isChecked());
|
|
batch.setPremultipliedAlpha(ui.premultipliedCheckbox.isChecked());
|
|
|
|
|
|
- skeleton.setFlip(ui.flipXCheckbox.isChecked(), ui.flipYCheckbox.isChecked());
|
|
|
|
|
|
+ float scaleX = ui.xScaleSlider.getValue(), scaleY = ui.yScaleSlider.getValue();
|
|
|
|
+ if (skeleton.scaleX == 0) skeleton.scaleX = 0.01f;
|
|
|
|
+ if (skeleton.scaleY == 0) skeleton.scaleY = 0.01f;
|
|
|
|
+ skeleton.setScale(scaleX, scaleY);
|
|
|
|
|
|
delta = Math.min(delta, 0.032f) * ui.speedSlider.getValue();
|
|
delta = Math.min(delta, 0.032f) * ui.speedSlider.getValue();
|
|
skeleton.update(delta);
|
|
skeleton.update(delta);
|
|
@@ -412,16 +415,21 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
TextButton openButton = new TextButton("Open", skin);
|
|
TextButton openButton = new TextButton("Open", skin);
|
|
TextButton minimizeButton = new TextButton("-", skin);
|
|
TextButton minimizeButton = new TextButton("-", skin);
|
|
|
|
|
|
- Slider scaleSlider = new Slider(0.1f, 3, 0.01f, false, skin);
|
|
|
|
- Label scaleLabel = new Label("1.0", skin);
|
|
|
|
- TextButton scaleResetButton = new TextButton("Reset", skin);
|
|
|
|
|
|
+ Slider loadScaleSlider = new Slider(0.1f, 3, 0.01f, false, skin);
|
|
|
|
+ Label loadScaleLabel = new Label("100%", skin);
|
|
|
|
+ TextButton loadScaleResetButton = new TextButton("Reset", skin);
|
|
|
|
|
|
Slider zoomSlider = new Slider(0.01f, 10, 0.01f, false, skin);
|
|
Slider zoomSlider = new Slider(0.01f, 10, 0.01f, false, skin);
|
|
- Label zoomLabel = new Label("1.0", skin);
|
|
|
|
|
|
+ Label zoomLabel = new Label("100%", skin);
|
|
TextButton zoomResetButton = new TextButton("Reset", skin);
|
|
TextButton zoomResetButton = new TextButton("Reset", skin);
|
|
|
|
|
|
- CheckBox flipXCheckbox = new CheckBox("X", skin);
|
|
|
|
- CheckBox flipYCheckbox = new CheckBox("Y", skin);
|
|
|
|
|
|
+ Slider xScaleSlider = new Slider(-2, 2, 0.01f, false, skin);
|
|
|
|
+ Label xScaleLabel = new Label("100%", skin);
|
|
|
|
+ TextButton xScaleResetButton = new TextButton("Reset", skin);
|
|
|
|
+
|
|
|
|
+ Slider yScaleSlider = new Slider(-2, 2, 0.01f, false, skin);
|
|
|
|
+ Label yScaleLabel = new Label("100%", skin);
|
|
|
|
+ TextButton yScaleResetButton = new TextButton("Reset", skin);
|
|
|
|
|
|
CheckBox debugBonesCheckbox = new CheckBox("Bones", skin);
|
|
CheckBox debugBonesCheckbox = new CheckBox("Bones", skin);
|
|
CheckBox debugRegionsCheckbox = new CheckBox("Regions", skin);
|
|
CheckBox debugRegionsCheckbox = new CheckBox("Regions", skin);
|
|
@@ -448,17 +456,17 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
CheckBox addCheckbox = new CheckBox("Add", skin);
|
|
CheckBox addCheckbox = new CheckBox("Add", skin);
|
|
|
|
|
|
Slider alphaSlider = new Slider(0, 1, 0.01f, false, skin);
|
|
Slider alphaSlider = new Slider(0, 1, 0.01f, false, skin);
|
|
- Label alphaLabel = new Label("1.0", skin);
|
|
|
|
|
|
+ Label alphaLabel = new Label("100%", skin);
|
|
|
|
|
|
List<String> animationList = new List(skin);
|
|
List<String> animationList = new List(skin);
|
|
ScrollPane animationScroll = new ScrollPane(animationList, skin, "bg");
|
|
ScrollPane animationScroll = new ScrollPane(animationList, skin, "bg");
|
|
|
|
|
|
Slider speedSlider = new Slider(0, 3, 0.01f, false, skin);
|
|
Slider speedSlider = new Slider(0, 3, 0.01f, false, skin);
|
|
- Label speedLabel = new Label("1.0", skin);
|
|
|
|
|
|
+ Label speedLabel = new Label("1.0x", skin);
|
|
TextButton speedResetButton = new TextButton("Reset", skin);
|
|
TextButton speedResetButton = new TextButton("Reset", skin);
|
|
|
|
|
|
Slider mixSlider = new Slider(0, 4, 0.01f, false, skin);
|
|
Slider mixSlider = new Slider(0, 4, 0.01f, false, skin);
|
|
- Label mixLabel = new Label("0.3", skin);
|
|
|
|
|
|
+ Label mixLabel = new Label("0.3s", skin);
|
|
|
|
|
|
Label statusLabel = new Label("", skin);
|
|
Label statusLabel = new Label("", skin);
|
|
WidgetGroup toasts = new WidgetGroup();
|
|
WidgetGroup toasts = new WidgetGroup();
|
|
@@ -483,21 +491,27 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
|
|
|
|
loopCheckbox.setChecked(true);
|
|
loopCheckbox.setChecked(true);
|
|
|
|
|
|
- scaleSlider.setValue(1);
|
|
|
|
- scaleSlider.setSnapToValues(new float[] {0.5f, 1, 1.5f, 2, 2.5f, 3, 3.5f}, 0.01f);
|
|
|
|
|
|
+ loadScaleSlider.setValue(1);
|
|
|
|
+ loadScaleSlider.setSnapToValues(new float[] {0.5f, 1, 1.5f, 2, 2.5f}, 0.09f);
|
|
|
|
|
|
zoomSlider.setValue(1);
|
|
zoomSlider.setValue(1);
|
|
- zoomSlider.setSnapToValues(new float[] {0.5f, 1, 1.5f, 2, 2.5f, 3, 3.5f}, 0.01f);
|
|
|
|
|
|
+ zoomSlider.setSnapToValues(new float[] {1, 2}, 0.30f);
|
|
|
|
+
|
|
|
|
+ xScaleSlider.setValue(1);
|
|
|
|
+ xScaleSlider.setSnapToValues(new float[] {-1.5f, -1, -0.5f, 0.5f, 1, 1.5f}, 0.12f);
|
|
|
|
+
|
|
|
|
+ yScaleSlider.setValue(1);
|
|
|
|
+ yScaleSlider.setSnapToValues(new float[] {-1.5f, -1, -0.5f, 0.5f, 1, 1.5f}, 0.12f);
|
|
|
|
|
|
mixSlider.setValue(0.3f);
|
|
mixSlider.setValue(0.3f);
|
|
- mixSlider.setSnapToValues(new float[] {1, 1.5f, 2, 2.5f, 3, 3.5f}, 0.1f);
|
|
|
|
|
|
+ mixSlider.setSnapToValues(new float[] {1, 1.5f, 2, 2.5f, 3, 3.5f}, 0.12f);
|
|
|
|
|
|
speedSlider.setValue(1);
|
|
speedSlider.setValue(1);
|
|
- speedSlider.setSnapToValues(new float[] {0.5f, 0.75f, 1, 1.25f, 1.5f, 2, 2.5f}, 0.01f);
|
|
|
|
|
|
+ speedSlider.setSnapToValues(new float[] {0.5f, 0.75f, 1, 1.25f, 1.5f, 2, 2.5f}, 0.09f);
|
|
|
|
|
|
alphaSlider.setValue(1);
|
|
alphaSlider.setValue(1);
|
|
alphaSlider.setDisabled(true);
|
|
alphaSlider.setDisabled(true);
|
|
-
|
|
|
|
|
|
+
|
|
addCheckbox.setDisabled(true);
|
|
addCheckbox.setDisabled(true);
|
|
|
|
|
|
window.setMovable(false);
|
|
window.setMovable(false);
|
|
@@ -519,12 +533,12 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
root.defaults().space(6);
|
|
root.defaults().space(6);
|
|
root.columnDefaults(0).top().right().padTop(3);
|
|
root.columnDefaults(0).top().right().padTop(3);
|
|
root.columnDefaults(1).left();
|
|
root.columnDefaults(1).left();
|
|
- root.add("Scale:");
|
|
|
|
|
|
+ root.add("Load scale:");
|
|
{
|
|
{
|
|
Table table = table();
|
|
Table table = table();
|
|
- table.add(scaleLabel).width(29);
|
|
|
|
- table.add(scaleSlider).growX();
|
|
|
|
- table.add(scaleResetButton);
|
|
|
|
|
|
+ table.add(loadScaleLabel).width(29);
|
|
|
|
+ table.add(loadScaleSlider).growX();
|
|
|
|
+ table.add(loadScaleResetButton);
|
|
root.add(table).fill().row();
|
|
root.add(table).fill().row();
|
|
}
|
|
}
|
|
root.add("Zoom:");
|
|
root.add("Zoom:");
|
|
@@ -535,8 +549,22 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
table.add(zoomResetButton);
|
|
table.add(zoomResetButton);
|
|
root.add(table).fill().row();
|
|
root.add(table).fill().row();
|
|
}
|
|
}
|
|
- root.add("Flip:");
|
|
|
|
- root.add(table(flipXCheckbox, flipYCheckbox)).row();
|
|
|
|
|
|
+ root.add("Scale X:");
|
|
|
|
+ {
|
|
|
|
+ Table table = table();
|
|
|
|
+ table.add(xScaleLabel).width(29);
|
|
|
|
+ table.add(xScaleSlider).growX();
|
|
|
|
+ table.add(xScaleResetButton).row();
|
|
|
|
+ root.add(table).fill().row();
|
|
|
|
+ }
|
|
|
|
+ root.add("Scale Y:");
|
|
|
|
+ {
|
|
|
|
+ Table table = table();
|
|
|
|
+ table.add(yScaleLabel).width(29);
|
|
|
|
+ table.add(yScaleSlider).growX();
|
|
|
|
+ table.add(yScaleResetButton);
|
|
|
|
+ root.add(table).fill().row();
|
|
|
|
+ }
|
|
root.add("Debug:");
|
|
root.add("Debug:");
|
|
root.add(table(debugBonesCheckbox, debugRegionsCheckbox, debugBoundingBoxesCheckbox)).row();
|
|
root.add(table(debugBonesCheckbox, debugRegionsCheckbox, debugBoundingBoxesCheckbox)).row();
|
|
root.add();
|
|
root.add();
|
|
@@ -677,25 +705,25 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
- scaleSlider.addListener(new ChangeListener() {
|
|
|
|
|
|
+ loadScaleSlider.addListener(new ChangeListener() {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
- scaleLabel.setText(Float.toString((int)(scaleSlider.getValue() * 100) / 100f));
|
|
|
|
- if (!scaleSlider.isDragging()) loadSkeleton(skeletonFile);
|
|
|
|
|
|
+ loadScaleLabel.setText(Integer.toString((int)(loadScaleSlider.getValue() * 100)) + "%");
|
|
|
|
+ if (!loadScaleSlider.isDragging()) loadSkeleton(skeletonFile);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- scaleResetButton.addListener(new ChangeListener() {
|
|
|
|
|
|
+ loadScaleResetButton.addListener(new ChangeListener() {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
resetCameraPosition();
|
|
resetCameraPosition();
|
|
- if (scaleSlider.getValue() == 1)
|
|
|
|
|
|
+ if (loadScaleSlider.getValue() == 1)
|
|
loadSkeleton(skeletonFile);
|
|
loadSkeleton(skeletonFile);
|
|
else
|
|
else
|
|
- scaleSlider.setValue(1);
|
|
|
|
|
|
+ loadScaleSlider.setValue(1);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
zoomSlider.addListener(new ChangeListener() {
|
|
zoomSlider.addListener(new ChangeListener() {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
- zoomLabel.setText(Float.toString((int)(zoomSlider.getValue() * 100) / 100f));
|
|
|
|
|
|
+ zoomLabel.setText(Integer.toString((int)(zoomSlider.getValue() * 100)) + "%");
|
|
float newZoom = 1 / zoomSlider.getValue();
|
|
float newZoom = 1 / zoomSlider.getValue();
|
|
camera.position.x -= window.getWidth() / 2 * (newZoom - camera.zoom);
|
|
camera.position.x -= window.getWidth() / 2 * (newZoom - camera.zoom);
|
|
camera.zoom = newZoom;
|
|
camera.zoom = newZoom;
|
|
@@ -710,9 +738,33 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ xScaleSlider.addListener(new ChangeListener() {
|
|
|
|
+ public void changed (ChangeEvent event, Actor actor) {
|
|
|
|
+ if (xScaleSlider.getValue() == 0) xScaleSlider.setValue(0.01f);
|
|
|
|
+ xScaleLabel.setText(Integer.toString((int)(xScaleSlider.getValue() * 100)) + "%");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ xScaleResetButton.addListener(new ChangeListener() {
|
|
|
|
+ public void changed (ChangeEvent event, Actor actor) {
|
|
|
|
+ xScaleSlider.setValue(1);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ yScaleSlider.addListener(new ChangeListener() {
|
|
|
|
+ public void changed (ChangeEvent event, Actor actor) {
|
|
|
|
+ if (yScaleSlider.getValue() == 0) yScaleSlider.setValue(0.01f);
|
|
|
|
+ yScaleLabel.setText(Integer.toString((int)(yScaleSlider.getValue() * 100)) + "%");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ yScaleResetButton.addListener(new ChangeListener() {
|
|
|
|
+ public void changed (ChangeEvent event, Actor actor) {
|
|
|
|
+ yScaleSlider.setValue(1);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
speedSlider.addListener(new ChangeListener() {
|
|
speedSlider.addListener(new ChangeListener() {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
- speedLabel.setText(Float.toString((int)(speedSlider.getValue() * 100) / 100f));
|
|
|
|
|
|
+ speedLabel.setText(Float.toString((int)(speedSlider.getValue() * 100) / 100f) + "x");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
speedResetButton.addListener(new ChangeListener() {
|
|
speedResetButton.addListener(new ChangeListener() {
|
|
@@ -723,7 +775,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
|
|
|
|
alphaSlider.addListener(new ChangeListener() {
|
|
alphaSlider.addListener(new ChangeListener() {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
- alphaLabel.setText(Float.toString((int)(alphaSlider.getValue() * 100) / 100f));
|
|
|
|
|
|
+ alphaLabel.setText(Integer.toString((int)(alphaSlider.getValue() * 100)) + "%");
|
|
int track = trackButtons.getCheckedIndex();
|
|
int track = trackButtons.getCheckedIndex();
|
|
if (track > 0) {
|
|
if (track > 0) {
|
|
TrackEntry current = state.getCurrent(track);
|
|
TrackEntry current = state.getCurrent(track);
|
|
@@ -737,7 +789,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
|
|
|
|
mixSlider.addListener(new ChangeListener() {
|
|
mixSlider.addListener(new ChangeListener() {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
public void changed (ChangeEvent event, Actor actor) {
|
|
- mixLabel.setText(Float.toString((int)(mixSlider.getValue() * 100) / 100f));
|
|
|
|
|
|
+ mixLabel.setText(Float.toString((int)(mixSlider.getValue() * 100) / 100f) + "s");
|
|
if (state != null) state.getData().setDefaultMix(mixSlider.getValue());
|
|
if (state != null) state.getData().setDefaultMix(mixSlider.getValue());
|
|
}
|
|
}
|
|
});
|
|
});
|
|
@@ -878,8 +930,8 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
speedSlider.addListener(savePrefsListener);
|
|
speedSlider.addListener(savePrefsListener);
|
|
speedResetButton.addListener(savePrefsListener);
|
|
speedResetButton.addListener(savePrefsListener);
|
|
mixSlider.addListener(savePrefsListener);
|
|
mixSlider.addListener(savePrefsListener);
|
|
- scaleSlider.addListener(savePrefsListener);
|
|
|
|
- scaleResetButton.addListener(savePrefsListener);
|
|
|
|
|
|
+ loadScaleSlider.addListener(savePrefsListener);
|
|
|
|
+ loadScaleResetButton.addListener(savePrefsListener);
|
|
zoomSlider.addListener(savePrefsListener);
|
|
zoomSlider.addListener(savePrefsListener);
|
|
zoomResetButton.addListener(savePrefsListener);
|
|
zoomResetButton.addListener(savePrefsListener);
|
|
animationList.addListener(savePrefsListener);
|
|
animationList.addListener(savePrefsListener);
|
|
@@ -942,7 +994,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
prefs.putBoolean("add", addCheckbox.isChecked());
|
|
prefs.putBoolean("add", addCheckbox.isChecked());
|
|
prefs.putFloat("speed", speedSlider.getValue());
|
|
prefs.putFloat("speed", speedSlider.getValue());
|
|
prefs.putFloat("mix", mixSlider.getValue());
|
|
prefs.putFloat("mix", mixSlider.getValue());
|
|
- prefs.putFloat("scale", scaleSlider.getValue());
|
|
|
|
|
|
+ prefs.putFloat("scale", loadScaleSlider.getValue());
|
|
prefs.putFloat("zoom", zoomSlider.getValue());
|
|
prefs.putFloat("zoom", zoomSlider.getValue());
|
|
prefs.putFloat("x", camera.position.x);
|
|
prefs.putFloat("x", camera.position.x);
|
|
prefs.putFloat("y", camera.position.y);
|
|
prefs.putFloat("y", camera.position.y);
|
|
@@ -978,7 +1030,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|
camera.position.x = prefs.getFloat("x", 0);
|
|
camera.position.x = prefs.getFloat("x", 0);
|
|
camera.position.y = prefs.getFloat("y", 0);
|
|
camera.position.y = prefs.getFloat("y", 0);
|
|
|
|
|
|
- scaleSlider.setValue(prefs.getFloat("scale", 1));
|
|
|
|
|
|
+ loadScaleSlider.setValue(prefs.getFloat("scale", 1));
|
|
animationList.setSelected(prefs.getString("animationName", null));
|
|
animationList.setSelected(prefs.getString("animationName", null));
|
|
skinList.setSelected(prefs.getString("skinName", null));
|
|
skinList.setSelected(prefs.getString("skinName", null));
|
|
} catch (Exception ex) {
|
|
} catch (Exception ex) {
|