diff --git a/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java index 14e36050d..ac3c71261 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java @@ -26,16 +26,18 @@ package com.esotericsoftware.spine; import com.badlogic.gdx.math.MathUtils; -import com.badlogic.gdx.utils.ObjectMap; /** Stores mixing times between animations and automatically mixes them as animations change. */ public class AnimationState { + private final AnimationStateData data; Animation current, previous; float currentTime, previousTime; boolean currentLoop, previousLoop; float mixTime, mixDuration; - final ObjectMap animationToMixTime = new ObjectMap(); - final Key tempKey = new Key(); + + public AnimationState (AnimationStateData data) { + this.data = data; + } public void apply (Skeleton skeleton) { if (current == null) return; @@ -55,16 +57,6 @@ public class AnimationState { mixTime += delta; } - /** Set the mixing duration between two animations. */ - public void setMixing (Animation from, Animation to, float duration) { - if (from == null) throw new IllegalArgumentException("from cannot be null."); - if (to == null) throw new IllegalArgumentException("to cannot be null."); - Key key = new Key(); - key.a1 = from; - key.a2 = to; - animationToMixTime.put(key, duration); - } - /** Set the current animation. */ public void setAnimation (Animation animation, boolean loop) { setAnimation(animation, loop, 0); @@ -75,10 +67,8 @@ public class AnimationState { public void setAnimation (Animation animation, boolean loop, float time) { previous = null; if (animation != null && current != null) { - tempKey.a1 = current; - tempKey.a2 = animation; - if (animationToMixTime.containsKey(tempKey)) { - mixDuration = animationToMixTime.get(tempKey); + mixDuration = data.getMixing(current, animation); + if (mixDuration > 0) { mixTime = 0; previous = current; } @@ -98,24 +88,7 @@ public class AnimationState { return currentTime; } - static class Key { - Animation a1, a2; - - public int hashCode () { - return 31 * (31 + a1.hashCode()) + a2.hashCode(); - } - - public boolean equals (Object obj) { - if (this == obj) return true; - if (obj == null) return false; - Key other = (Key)obj; - if (a1 == null) { - if (other.a1 != null) return false; - } else if (!a1.equals(other.a1)) return false; - if (a2 == null) { - if (other.a2 != null) return false; - } else if (!a2.equals(other.a2)) return false; - return true; - } + public AnimationStateData getData () { + return data; } } diff --git a/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java b/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java new file mode 100644 index 000000000..1fbbaf488 --- /dev/null +++ b/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java @@ -0,0 +1,73 @@ +/******************************************************************************* + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.utils.ObjectMap; + +/** Stores mixing times between animations. */ +public class AnimationStateData { + final ObjectMap animationToMixTime = new ObjectMap(); + final Key tempKey = new Key(); + + /** Set the mixing duration between two animations. */ + public void setMixing (Animation from, Animation to, float duration) { + if (from == null) throw new IllegalArgumentException("from cannot be null."); + if (to == null) throw new IllegalArgumentException("to cannot be null."); + Key key = new Key(); + key.a1 = from; + key.a2 = to; + animationToMixTime.put(key, duration); + } + + public float getMixing (Animation from, Animation to) { + tempKey.a1 = from; + tempKey.a2 = to; + Float time = animationToMixTime.get(tempKey); + if (time == null) return 0; + return time; + } + + static class Key { + Animation a1, a2; + + public int hashCode () { + return 31 * (31 + a1.hashCode()) + a2.hashCode(); + } + + public boolean equals (Object obj) { + if (this == obj) return true; + if (obj == null) return false; + Key other = (Key)obj; + if (a1 == null) { + if (other.a1 != null) return false; + } else if (!a1.equals(other.a1)) return false; + if (a2 == null) { + if (other.a2 != null) return false; + } else if (!a2.equals(other.a2)) return false; + return true; + } + } +} diff --git a/spine-libgdx/test/goblins-skeleton.json b/spine-libgdx/test/goblins-skeleton.json index 93946c391..be335a530 100644 --- a/spine-libgdx/test/goblins-skeleton.json +++ b/spine-libgdx/test/goblins-skeleton.json @@ -1,28 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. - ******************************************************************************/ - { "bones": [ { "name": "root", "length": 0 }, @@ -224,4 +199,4 @@ } } } -} +} \ No newline at end of file diff --git a/spine-libgdx/test/goblins-walk.anim b/spine-libgdx/test/goblins-walk.anim index 24d73423a..f77b26afd 100644 Binary files a/spine-libgdx/test/goblins-walk.anim and b/spine-libgdx/test/goblins-walk.anim differ diff --git a/spine-libgdx/test/goblins-walk.json b/spine-libgdx/test/goblins-walk.json index 23bd28e95..5dc23cf44 100644 --- a/spine-libgdx/test/goblins-walk.json +++ b/spine-libgdx/test/goblins-walk.json @@ -1,28 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. - ******************************************************************************/ - { "bones": { "left upper leg": { @@ -310,4 +285,4 @@ ] } } -} +} \ No newline at end of file diff --git a/spine-libgdx/test/goblins.atlas b/spine-libgdx/test/goblins.atlas index 2e43a9996..4638120bf 100644 --- a/spine-libgdx/test/goblins.atlas +++ b/spine-libgdx/test/goblins.atlas @@ -1,27 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. - ******************************************************************************/ goblins.png format: RGBA8888 diff --git a/spine-libgdx/test/goblins.png b/spine-libgdx/test/goblins.png index bcde20853..05a15f299 100644 Binary files a/spine-libgdx/test/goblins.png and b/spine-libgdx/test/goblins.png differ diff --git a/spine-libgdx/test/goblins.skel b/spine-libgdx/test/goblins.skel index e005f3e3d..6b9e70b10 100644 Binary files a/spine-libgdx/test/goblins.skel and b/spine-libgdx/test/goblins.skel differ diff --git a/spine-libgdx/test/goblins2.png b/spine-libgdx/test/goblins2.png index 83210497a..f90ce4753 100644 Binary files a/spine-libgdx/test/goblins2.png and b/spine-libgdx/test/goblins2.png differ diff --git a/spine-libgdx/test/spineboy-jump.anim b/spine-libgdx/test/spineboy-jump.anim index e460d343c..966f8a03c 100644 Binary files a/spine-libgdx/test/spineboy-jump.anim and b/spine-libgdx/test/spineboy-jump.anim differ diff --git a/spine-libgdx/test/spineboy-jump.json b/spine-libgdx/test/spineboy-jump.json index 343a3c1c3..4ec271f64 100644 --- a/spine-libgdx/test/spineboy-jump.json +++ b/spine-libgdx/test/spineboy-jump.json @@ -1,28 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. - ******************************************************************************/ - { "bones": { "hip": { @@ -432,4 +407,4 @@ ] } } -} +} \ No newline at end of file diff --git a/spine-libgdx/test/spineboy-skeleton.json b/spine-libgdx/test/spineboy-skeleton.json index c8d147402..e6df6f99a 100644 --- a/spine-libgdx/test/spineboy-skeleton.json +++ b/spine-libgdx/test/spineboy-skeleton.json @@ -1,28 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. - ******************************************************************************/ - { "bones": [ { "name": "root", "length": 0 }, @@ -120,4 +95,4 @@ } } } -} +} \ No newline at end of file diff --git a/spine-libgdx/test/spineboy-walk.anim b/spine-libgdx/test/spineboy-walk.anim index c9e3a5237..077f20f5a 100644 Binary files a/spine-libgdx/test/spineboy-walk.anim and b/spine-libgdx/test/spineboy-walk.anim differ diff --git a/spine-libgdx/test/spineboy-walk.json b/spine-libgdx/test/spineboy-walk.json index 9ea9d1ef3..b40e53a95 100644 --- a/spine-libgdx/test/spineboy-walk.json +++ b/spine-libgdx/test/spineboy-walk.json @@ -1,28 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. - ******************************************************************************/ - { "bones": { "left upper leg": { @@ -300,4 +275,4 @@ ] } } -} +} \ No newline at end of file diff --git a/spine-libgdx/test/spineboy.atlas b/spine-libgdx/test/spineboy.atlas index f66b9a075..88fb3e0b5 100644 --- a/spine-libgdx/test/spineboy.atlas +++ b/spine-libgdx/test/spineboy.atlas @@ -1,27 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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. - ******************************************************************************/ spineboy.png format: RGBA8888 diff --git a/spine-libgdx/test/spineboy.png b/spine-libgdx/test/spineboy.png index 2023cff95..b8b493dfd 100644 Binary files a/spine-libgdx/test/spineboy.png and b/spine-libgdx/test/spineboy.png differ diff --git a/spine-libgdx/test/spineboy.skel b/spine-libgdx/test/spineboy.skel index 981dc6caa..71f85c395 100644 Binary files a/spine-libgdx/test/spineboy.skel and b/spine-libgdx/test/spineboy.skel differ