diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest4.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest4.java new file mode 100644 index 000000000..bd9973359 --- /dev/null +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest4.java @@ -0,0 +1,116 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated May 1, 2019. Replaces all prior versions. + * + * Copyright (c) 2013-2019, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "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 SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS + * INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) 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.TextureAtlas; +import com.esotericsoftware.spine.utils.TwoColorPolygonBatch; + +public class SimpleTest4 extends ApplicationAdapter { + OrthographicCamera camera; + TwoColorPolygonBatch batch; + SkeletonRenderer renderer; + SkeletonRendererDebug debugRenderer; + + TextureAtlas atlas; + Skeleton skeleton; + AnimationState state; + + public void create () { + camera = new OrthographicCamera(); + batch = new TwoColorPolygonBatch(); + renderer = new SkeletonRenderer(); + renderer.setPremultipliedAlpha(true); // PMA results in correct blending without outlines. + debugRenderer = new SkeletonRendererDebug(); + debugRenderer.setBoundingBoxes(false); + debugRenderer.setRegionAttachments(false); + + atlas = new TextureAtlas(Gdx.files.internal("goblins/goblins-pma.atlas")); + SkeletonJson json = new SkeletonJson(atlas); // This loads skeleton JSON data, which is stateless. + json.setScale(0.6f); // Load the skeleton at 60% the size it was in Spine. + SkeletonData skeletonData = json.readSkeletonData(Gdx.files.internal("goblins/goblins-pro.json")); + + skeleton = new Skeleton(skeletonData); // Skeleton holds skeleton state (bone positions, slot attachments, etc). + skeleton.setPosition(250, 20); + + AnimationStateData stateData = new AnimationStateData(skeletonData); // Defines mixing (crossfading) between animations. +// stateData.setMix("run", "jump", 0.2f); +// stateData.setMix("jump", "run", 0.2f); + + state = new AnimationState(stateData); // Holds the animation state for a skeleton (current animation, time, etc). + state.setTimeScale(0.5f); // Slow all animations down to 50% speed. + + // Queue animations on track 0. + state.setAnimation(0, "walk", true); +// state.addAnimation(0, "jump", false, 2); // Jump after 2 seconds. +// state.addAnimation(0, "run", true, 0); // Run after the jump. + + Skin skin = new Skin("test"); + skin.copySkin(skeletonData.findSkin("goblingirl")); + skeleton.setSkin(skin); + skeleton.setSlotsToSetupPose(); + } + + 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().setProjectionMatrix(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 SimpleTest4()); + } +} diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/MeshAttachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/MeshAttachment.java index d37170efa..e69016afa 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/MeshAttachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/MeshAttachment.java @@ -239,7 +239,6 @@ public class MeshAttachment extends VertexAttachment { copy.region = region; copy.path = path; copy.color.set(color); - copy.deformAttachment = deformAttachment; copyTo(copy); copy.regionUVs = new float[regionUVs.length]; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/VertexAttachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/VertexAttachment.java index 3df2beb3a..187539d55 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/VertexAttachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/VertexAttachment.java @@ -30,7 +30,6 @@ package com.esotericsoftware.spine.attachments; import com.badlogic.gdx.utils.FloatArray; - import com.esotericsoftware.spine.Bone; import com.esotericsoftware.spine.Skeleton; import com.esotericsoftware.spine.Slot; @@ -182,6 +181,7 @@ abstract public class VertexAttachment extends Attachment { attachment.vertices = null; attachment.worldVerticesLength = worldVerticesLength; + attachment.deformAttachment = deformAttachment; } static private synchronized int nextID () {