From 579564906d0893c8326c45e992bcaa5ea5226b55 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Sun, 9 Mar 2014 12:15:53 +0100 Subject: [PATCH] Simpler test. --- .../esotericsoftware/spine/SimpleTest1.java | 106 ++++++++++++++++++ ...imationStateTest.java => SimpleTest2.java} | 8 +- 2 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 spine-libgdx/test/com/esotericsoftware/spine/SimpleTest1.java rename spine-libgdx/test/com/esotericsoftware/spine/{AnimationStateTest.java => SimpleTest2.java} (96%) diff --git a/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest1.java b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest1.java new file mode 100644 index 000000000..544c0d178 --- /dev/null +++ b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest1.java @@ -0,0 +1,106 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software, you may not (a) modify, translate, adapt or + * otherwise create derivative works, improvements of the Software or develop + * new applications using the Software or (b) remove, delete, alter or obscure + * any trademarks or any copyright, trademark, patent or other intellectual + * property or proprietary rights notices on or in the Software, including + * any copy thereof. Redistributions in binary or source form must include + * this license and terms. THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +package com.esotericsoftware.spine; + +import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.backends.lwjgl.LwjglApplication; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; + +public class SimpleTest1 extends ApplicationAdapter { + OrthographicCamera camera; + SpriteBatch batch; + SkeletonRenderer renderer; + SkeletonRendererDebug debugRenderer; + + TextureAtlas atlas; + Skeleton skeleton; + AnimationState state; + + public void create () { + camera = new OrthographicCamera(); + batch = new SpriteBatch(); + renderer = new SkeletonRenderer(); + renderer.setPremultipliedAlpha(true); + debugRenderer = new SkeletonRendererDebug(); + debugRenderer.setBoundingBoxes(false); + debugRenderer.setRegionAttachments(false); + + atlas = new TextureAtlas(Gdx.files.internal("spineboy/spineboy.atlas")); + SkeletonJson json = new SkeletonJson(atlas); // This loads skeleton JSON data, which is stateless. + SkeletonData skeletonData = json.readSkeletonData(Gdx.files.internal("spineboy/spineboy.json")); + + skeleton = new Skeleton(skeletonData); // Skeleton holds skeleton state (bone positions, slot attachments, etc). + skeleton.setX(250); + skeleton.setY(20); + + AnimationStateData stateData = new AnimationStateData(skeletonData); // Defines mixing (crossfading) between animations. + stateData.setMix("walk", "jump", 0.2f); + stateData.setMix("jump", "walk", 0.4f); + + state = new AnimationState(stateData); // Holds the animation state for a skeleton (current animation, time, etc). + state.setAnimation(0, "jump", false); + state.addAnimation(0, "walk", true, 0); + } + + public void render () { + state.update(Gdx.graphics.getDeltaTime()); // Update the animation time. + + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + + state.apply(skeleton); // Poses skeleton using current animations. This sets the bones' local SRT. + skeleton.updateWorldTransform(); // Uses the bones' local SRT to compute their world SRT. + + // Configure the camera, SpriteBatch, and SkeletonRendererDebug. + camera.update(); + batch.getProjectionMatrix().set(camera.combined); + debugRenderer.getShapeRenderer().getProjectionMatrix().set(camera.combined); + + batch.begin(); + renderer.draw(batch, skeleton); // Draw the skeleton images. + batch.end(); + + debugRenderer.draw(skeleton); // Draw debug lines. + } + + public void resize (int width, int height) { + camera.setToOrtho(false); // Update camera with new size. + } + + public void dispose () { + atlas.dispose(); + } + + public static void main (String[] args) throws Exception { + new LwjglApplication(new SimpleTest1()); + } +} diff --git a/spine-libgdx/test/com/esotericsoftware/spine/AnimationStateTest.java b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest2.java similarity index 96% rename from spine-libgdx/test/com/esotericsoftware/spine/AnimationStateTest.java rename to spine-libgdx/test/com/esotericsoftware/spine/SimpleTest2.java index 43e531b71..ea901698e 100644 --- a/spine-libgdx/test/com/esotericsoftware/spine/AnimationStateTest.java +++ b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest2.java @@ -42,7 +42,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.math.Vector3; -public class AnimationStateTest extends ApplicationAdapter { +public class SimpleTest2 extends ApplicationAdapter { OrthographicCamera camera; SpriteBatch batch; SkeletonRenderer renderer; @@ -129,8 +129,8 @@ public class AnimationStateTest extends ApplicationAdapter { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - state.apply(skeleton); // Poses skeleton using current animations. This sets the bone's local SRT. - skeleton.updateWorldTransform(); // Uses the bone's local SRT to set their world SRT. + state.apply(skeleton); // Poses skeleton using current animations. This sets the bones' local SRT. + skeleton.updateWorldTransform(); // Uses the bones' local SRT to compute their world SRT. // Configure the camera, SpriteBatch, and SkeletonRendererDebug. camera.update(); @@ -153,6 +153,6 @@ public class AnimationStateTest extends ApplicationAdapter { } public static void main (String[] args) throws Exception { - new LwjglApplication(new AnimationStateTest()); + new LwjglApplication(new SimpleTest2()); } }