diff --git a/.gitignore b/.gitignore index 95de41fbe..fef1cd2a2 100644 --- a/.gitignore +++ b/.gitignore @@ -64,6 +64,7 @@ spine-unity/ProjectSettings spine-unity/Temp spine-unity/Library spine-unity/*.sln +spine-unity/obj Assembly-*.csproj Assembly-*.pidb AssetStoreTools* diff --git a/LICENSE b/LICENSE index 148461ab5..815ec1ca1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,28 +1,28 @@ Spine Runtimes Software License -Version 2.2 +Version 2.3 -Copyright (c) 2013, Esoteric Software +Copyright (c) 2013-2015, Esoteric Software All rights reserved. You are granted a perpetual, non-exclusive, non-sublicensable and non-transferable license to use, install, execute and perform the Spine -Runtimes Software (the "Software") and derivative works solely for personal or -internal use. Without the written permission of Esoteric Software (typically -granted by licensing Spine), 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. +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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, +EVENT SHALL ESOTERIC SOFTWARE 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. +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/README.md b/README.md index e8f355026..32a450a80 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,17 @@ # Spine Runtimes -This project hosts the runtimes needed to use [Spine](http://esotericsoftware.com/) 2D skeletal animations with various game toolkits. +This GitHub project hosts the Spine Runtimes which are needed to use [Spine](http://esotericsoftware.com/) 2D skeletal animation with various game toolkits. -The code provided here is currently under development and is subject to change. +## Licensing -Documentation is being worked on and will be provided as soon as possible. \ No newline at end of file +The Spine Runtimes may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate the Spine Runtimes into your applications, distribute software containing the Spine Runtimes, or modify the Spine Runtimes, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + +## Documentation + +See the Spine [runtime documentation](http://esotericsoftware.com/spine-documentation#runtimesTitle) for documentation applicable to all runtimes. See each runtime's `README.md` for runtime specific documentation. + +## Versioning + +The code provided here is continuously under development. Generally the latest Git `master` source works with the data exported from the latest version of Spine. The Spine version can be [frozen](http://esotericsoftware.com/spine-settings#Version) at a specific Spine version that matches the Spine Runtimes source being used. Occaisionally the Spine Runtimes are [tagged](https://github.com/EsotericSoftware/spine-runtimes/releases) to work with a specific Spine version. diff --git a/spine-as3/LICENSE b/spine-as3/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-as3/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-as3/README.md b/spine-as3/README.md index 2de67af4e..be6b96882 100644 --- a/spine-as3/README.md +++ b/spine-as3/README.md @@ -2,6 +2,12 @@ The spine-as3 runtime provides functionality to load and manipulate [Spine](http://esotericsoftware.com) skeletal animation data using Adobe's ActionScript 3.0 (AS3). The [`spine.flash` package](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-as3/spine-as3/src/spine/flash) can be used to render Spine animations using Flash. spine-as3 can be extended to enable Spine animations for other AS3 projects, such as [Starling](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-starling). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-as3/spine-as3-example/src/spine/Main.as b/spine-as3/spine-as3-example/src/spine/Main.as index bf8c1c6fa..085ad976e 100644 --- a/spine-as3/spine-as3-example/src/spine/Main.as +++ b/spine-as3/spine-as3-example/src/spine/Main.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3-example/src/spineboy.json b/spine-as3/spine-as3-example/src/spineboy.json index 7b4497712..1bd1b64c1 100644 --- a/spine-as3/spine-as3-example/src/spineboy.json +++ b/spine-as3/spine-as3-example/src/spineboy.json @@ -54,7 +54,7 @@ { "name": "goggles", "bone": "head", "attachment": "goggles" }, { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "additive": true }, + { "name": "muzzle", "bone": "gunTip", "blend": "additive" }, { "name": "head-bb", "bone": "head" } ], "skins": { diff --git a/spine-as3/spine-as3/src/spine/BlendMode.as b/spine-as3/spine-as3/src/spine/BlendMode.as new file mode 100644 index 000000000..49f05bd92 --- /dev/null +++ b/spine-as3/spine-as3/src/spine/BlendMode.as @@ -0,0 +1,47 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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 spine { + +public class BlendMode { + public static const normal:BlendMode = new BlendMode(0); + public static const additive:BlendMode = new BlendMode(1); + public static const multiply:BlendMode = new BlendMode(2); + public static const screen:BlendMode = new BlendMode(3); + + public var ordinal:int; + + public function BlendMode (ordinal:int) { + this.ordinal = ordinal; + } +} + +} diff --git a/spine-as3/spine-as3/src/spine/Bone.as b/spine-as3/spine-as3/src/spine/Bone.as index c548b36e0..de948a1c9 100644 --- a/spine-as3/spine-as3/src/spine/Bone.as +++ b/spine-as3/spine-as3/src/spine/Bone.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/BoneData.as b/spine-as3/spine-as3/src/spine/BoneData.as index a5cc2546e..418c5926d 100644 --- a/spine-as3/spine-as3/src/spine/BoneData.as +++ b/spine-as3/spine-as3/src/spine/BoneData.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/Event.as b/spine-as3/spine-as3/src/spine/Event.as index e33e75022..2199ae3d6 100644 --- a/spine-as3/spine-as3/src/spine/Event.as +++ b/spine-as3/spine-as3/src/spine/Event.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/EventData.as b/spine-as3/spine-as3/src/spine/EventData.as index b2896a5fe..2077b52ca 100644 --- a/spine-as3/spine-as3/src/spine/EventData.as +++ b/spine-as3/spine-as3/src/spine/EventData.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/IkConstraint.as b/spine-as3/spine-as3/src/spine/IkConstraint.as index f51070e0c..6b055657b 100644 --- a/spine-as3/spine-as3/src/spine/IkConstraint.as +++ b/spine-as3/spine-as3/src/spine/IkConstraint.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/IkConstraintData.as b/spine-as3/spine-as3/src/spine/IkConstraintData.as index 4a3e64782..04f3ea099 100644 --- a/spine-as3/spine-as3/src/spine/IkConstraintData.as +++ b/spine-as3/spine-as3/src/spine/IkConstraintData.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/Polygon.as b/spine-as3/spine-as3/src/spine/Polygon.as index cfa5b1cd9..ae459c587 100644 --- a/spine-as3/spine-as3/src/spine/Polygon.as +++ b/spine-as3/spine-as3/src/spine/Polygon.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/Skeleton.as b/spine-as3/spine-as3/src/spine/Skeleton.as index fd17d693a..94272c982 100644 --- a/spine-as3/spine-as3/src/spine/Skeleton.as +++ b/spine-as3/spine-as3/src/spine/Skeleton.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/SkeletonBounds.as b/spine-as3/spine-as3/src/spine/SkeletonBounds.as index 6335840fd..f06d33ea4 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonBounds.as +++ b/spine-as3/spine-as3/src/spine/SkeletonBounds.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/SkeletonData.as b/spine-as3/spine-as3/src/spine/SkeletonData.as index 158a1f687..e9ea809b8 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonData.as +++ b/spine-as3/spine-as3/src/spine/SkeletonData.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/SkeletonJson.as b/spine-as3/spine-as3/src/spine/SkeletonJson.as index 9bceb7bf9..d26a0fd72 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonJson.as +++ b/spine-as3/spine-as3/src/spine/SkeletonJson.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -145,7 +146,7 @@ public class SkeletonJson { } slotData.attachmentName = slotMap["attachment"]; - slotData.additiveBlending = slotMap["additive"]; + slotData.blendMode = BlendMode[slotMap["blend"] || "normal"]; skeletonData.slots[skeletonData.slots.length] = slotData; } diff --git a/spine-as3/spine-as3/src/spine/Skin.as b/spine-as3/spine-as3/src/spine/Skin.as index 45f6e4b94..020b60760 100644 --- a/spine-as3/spine-as3/src/spine/Skin.as +++ b/spine-as3/spine-as3/src/spine/Skin.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/Slot.as b/spine-as3/spine-as3/src/spine/Slot.as index ea32a5d80..e621f0d66 100644 --- a/spine-as3/spine-as3/src/spine/Slot.as +++ b/spine-as3/spine-as3/src/spine/Slot.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/SlotData.as b/spine-as3/spine-as3/src/spine/SlotData.as index 2cba62223..609edabaa 100644 --- a/spine-as3/spine-as3/src/spine/SlotData.as +++ b/spine-as3/spine-as3/src/spine/SlotData.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -38,7 +39,7 @@ public class SlotData { public var b:Number = 1; public var a:Number = 1; public var attachmentName:String; - public var additiveBlending:Boolean; + public var blendMode:BlendMode; public function SlotData (name:String, boneData:BoneData) { if (name == null) throw new ArgumentError("name cannot be null."); diff --git a/spine-as3/spine-as3/src/spine/animation/Animation.as b/spine-as3/spine-as3/src/spine/animation/Animation.as index 244b819d6..fbf3734bd 100644 --- a/spine-as3/spine-as3/src/spine/animation/Animation.as +++ b/spine-as3/spine-as3/src/spine/animation/Animation.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/AnimationState.as b/spine-as3/spine-as3/src/spine/animation/AnimationState.as index 85a27698e..420663a18 100644 --- a/spine-as3/spine-as3/src/spine/animation/AnimationState.as +++ b/spine-as3/spine-as3/src/spine/animation/AnimationState.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/AnimationStateData.as b/spine-as3/spine-as3/src/spine/animation/AnimationStateData.as index 15ca733c4..b304fe461 100644 --- a/spine-as3/spine-as3/src/spine/animation/AnimationStateData.as +++ b/spine-as3/spine-as3/src/spine/animation/AnimationStateData.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/AttachmentTimeline.as b/spine-as3/spine-as3/src/spine/animation/AttachmentTimeline.as index bcc807b0c..85dfc212c 100644 --- a/spine-as3/spine-as3/src/spine/animation/AttachmentTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/AttachmentTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/ColorTimeline.as b/spine-as3/spine-as3/src/spine/animation/ColorTimeline.as index 12e6a9202..eec6b79b9 100644 --- a/spine-as3/spine-as3/src/spine/animation/ColorTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ColorTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/CurveTimeline.as b/spine-as3/spine-as3/src/spine/animation/CurveTimeline.as index 4f54c0134..84539f0ce 100644 --- a/spine-as3/spine-as3/src/spine/animation/CurveTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/CurveTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/DrawOrderTimeline.as b/spine-as3/spine-as3/src/spine/animation/DrawOrderTimeline.as index ed3340ada..ef8b82723 100644 --- a/spine-as3/spine-as3/src/spine/animation/DrawOrderTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/DrawOrderTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/EventTimeline.as b/spine-as3/spine-as3/src/spine/animation/EventTimeline.as index 606f29be9..3c5c8bfb3 100644 --- a/spine-as3/spine-as3/src/spine/animation/EventTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/EventTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/FfdTimeline.as b/spine-as3/spine-as3/src/spine/animation/FfdTimeline.as index 18ef9eb99..062e41bbd 100644 --- a/spine-as3/spine-as3/src/spine/animation/FfdTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/FfdTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/FlipXTimeline.as b/spine-as3/spine-as3/src/spine/animation/FlipXTimeline.as index c69180d0d..f6dfeeddc 100644 --- a/spine-as3/spine-as3/src/spine/animation/FlipXTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/FlipXTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/FlipYTimeline.as b/spine-as3/spine-as3/src/spine/animation/FlipYTimeline.as index 827ae0ed6..f5dd7ac09 100644 --- a/spine-as3/spine-as3/src/spine/animation/FlipYTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/FlipYTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -41,4 +42,4 @@ public class FlipYTimeline extends FlipXTimeline { } } -} \ No newline at end of file +} diff --git a/spine-as3/spine-as3/src/spine/animation/IkConstraintTimeline.as b/spine-as3/spine-as3/src/spine/animation/IkConstraintTimeline.as index e0baf05e6..ad6f6014f 100644 --- a/spine-as3/spine-as3/src/spine/animation/IkConstraintTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/IkConstraintTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/Listeners.as b/spine-as3/spine-as3/src/spine/animation/Listeners.as index 37fc18f92..f517c40e6 100644 --- a/spine-as3/spine-as3/src/spine/animation/Listeners.as +++ b/spine-as3/spine-as3/src/spine/animation/Listeners.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/RotateTimeline.as b/spine-as3/spine-as3/src/spine/animation/RotateTimeline.as index d3e21d19d..765fb5a21 100644 --- a/spine-as3/spine-as3/src/spine/animation/RotateTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/RotateTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as b/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as index d789af9c6..5c3004ae5 100644 --- a/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/Timeline.as b/spine-as3/spine-as3/src/spine/animation/Timeline.as index e99c66ca1..f871c46a7 100644 --- a/spine-as3/spine-as3/src/spine/animation/Timeline.as +++ b/spine-as3/spine-as3/src/spine/animation/Timeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/TrackEntry.as b/spine-as3/spine-as3/src/spine/animation/TrackEntry.as index 99553f957..795671dc3 100644 --- a/spine-as3/spine-as3/src/spine/animation/TrackEntry.as +++ b/spine-as3/spine-as3/src/spine/animation/TrackEntry.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/animation/TranslateTimeline.as b/spine-as3/spine-as3/src/spine/animation/TranslateTimeline.as index d1423fc3f..9e49eb923 100644 --- a/spine-as3/spine-as3/src/spine/animation/TranslateTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/TranslateTimeline.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/atlas/Atlas.as b/spine-as3/spine-as3/src/spine/atlas/Atlas.as index d2fc0ab6e..13e3658ad 100644 --- a/spine-as3/spine-as3/src/spine/atlas/Atlas.as +++ b/spine-as3/spine-as3/src/spine/atlas/Atlas.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/atlas/AtlasPage.as b/spine-as3/spine-as3/src/spine/atlas/AtlasPage.as index 5501597f5..e11edacd2 100644 --- a/spine-as3/spine-as3/src/spine/atlas/AtlasPage.as +++ b/spine-as3/spine-as3/src/spine/atlas/AtlasPage.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/atlas/AtlasRegion.as b/spine-as3/spine-as3/src/spine/atlas/AtlasRegion.as index cf0bf99c3..553d2abfa 100644 --- a/spine-as3/spine-as3/src/spine/atlas/AtlasRegion.as +++ b/spine-as3/spine-as3/src/spine/atlas/AtlasRegion.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/atlas/Format.as b/spine-as3/spine-as3/src/spine/atlas/Format.as index cc02183f6..11828e92a 100644 --- a/spine-as3/spine-as3/src/spine/atlas/Format.as +++ b/spine-as3/spine-as3/src/spine/atlas/Format.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/atlas/TextureFilter.as b/spine-as3/spine-as3/src/spine/atlas/TextureFilter.as index 16687dc49..9d64dde21 100644 --- a/spine-as3/spine-as3/src/spine/atlas/TextureFilter.as +++ b/spine-as3/spine-as3/src/spine/atlas/TextureFilter.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/atlas/TextureLoader.as b/spine-as3/spine-as3/src/spine/atlas/TextureLoader.as index 7e4716df8..36a413195 100644 --- a/spine-as3/spine-as3/src/spine/atlas/TextureLoader.as +++ b/spine-as3/spine-as3/src/spine/atlas/TextureLoader.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/atlas/TextureWrap.as b/spine-as3/spine-as3/src/spine/atlas/TextureWrap.as index 7ed717548..744e3b08c 100644 --- a/spine-as3/spine-as3/src/spine/atlas/TextureWrap.as +++ b/spine-as3/spine-as3/src/spine/atlas/TextureWrap.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as b/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as index 27162ba32..6ed219cfd 100644 --- a/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as +++ b/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/attachments/Attachment.as b/spine-as3/spine-as3/src/spine/attachments/Attachment.as index 510c0d673..ac8898524 100644 --- a/spine-as3/spine-as3/src/spine/attachments/Attachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/Attachment.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/attachments/AttachmentLoader.as b/spine-as3/spine-as3/src/spine/attachments/AttachmentLoader.as index 64352332f..4ce03c429 100644 --- a/spine-as3/spine-as3/src/spine/attachments/AttachmentLoader.as +++ b/spine-as3/spine-as3/src/spine/attachments/AttachmentLoader.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/attachments/AttachmentType.as b/spine-as3/spine-as3/src/spine/attachments/AttachmentType.as index 55d095d45..903e04c05 100644 --- a/spine-as3/spine-as3/src/spine/attachments/AttachmentType.as +++ b/spine-as3/spine-as3/src/spine/attachments/AttachmentType.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/attachments/BoundingBoxAttachment.as b/spine-as3/spine-as3/src/spine/attachments/BoundingBoxAttachment.as index 7fd50f0b3..78feb3f9b 100644 --- a/spine-as3/spine-as3/src/spine/attachments/BoundingBoxAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/BoundingBoxAttachment.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as b/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as index cd42a0c3b..30ff417db 100644 --- a/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as b/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as index 1bd958dc1..673035ed8 100644 --- a/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/attachments/SkinnedMeshAttachment.as b/spine-as3/spine-as3/src/spine/attachments/SkinnedMeshAttachment.as index 523668947..9eabcee0c 100644 --- a/spine-as3/spine-as3/src/spine/attachments/SkinnedMeshAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/SkinnedMeshAttachment.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/flash/FlashTextureLoader.as b/spine-as3/spine-as3/src/spine/flash/FlashTextureLoader.as index 6277f1585..ff1926daf 100644 --- a/spine-as3/spine-as3/src/spine/flash/FlashTextureLoader.as +++ b/spine-as3/spine-as3/src/spine/flash/FlashTextureLoader.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/flash/SkeletonAnimation.as b/spine-as3/spine-as3/src/spine/flash/SkeletonAnimation.as index 8620549bc..5860ccfea 100644 --- a/spine-as3/spine-as3/src/spine/flash/SkeletonAnimation.as +++ b/spine-as3/spine-as3/src/spine/flash/SkeletonAnimation.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as b/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as index 656892827..e508fba35 100644 --- a/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as +++ b/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -52,6 +53,8 @@ import spine.attachments.RegionAttachment; public class SkeletonSprite extends Sprite { static private var tempPoint:Point = new Point(); static private var tempMatrix:Matrix = new Matrix(); + static private var blendModes:Vector. = new [ + BlendMode.NORMAL, BlendMode.ADD, BlendMode.MULTIPLY, BlendMode.SCREEN]; private var _skeleton:Skeleton; public var timeScale:Number = 1; @@ -119,7 +122,7 @@ public class SkeletonSprite extends Sprite { regionAttachment["wrapper"] = wrapper; } - wrapper.blendMode = slot.data.additiveBlending ? BlendMode.ADD : BlendMode.NORMAL; + wrapper.blendMode = blendModes[slot.data.blendMode.ordinal]; var colorTransform:ColorTransform = wrapper.transform.colorTransform; colorTransform.redMultiplier = skeleton.r * slot.r * regionAttachment.r; diff --git a/spine-c/LICENSE b/spine-c/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-c/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-c/README.md b/spine-c/README.md index 71ec54b08..8fd0bfa78 100644 --- a/spine-c/README.md +++ b/spine-c/README.md @@ -2,6 +2,12 @@ The spine-c runtime provides basic functionality to load and manipulate [Spine](http://esotericsoftware.com) skeletal animation data using ANSI C. It does not perform rendering but can be extended to enable Spine animations for other C-based projects, including C++ or Objective-C projects. +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-c/include/spine/Animation.h b/spine-c/include/spine/Animation.h index 30038287c..c826b262f 100644 --- a/spine-c/include/spine/Animation.h +++ b/spine-c/include/spine/Animation.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/AnimationState.h b/spine-c/include/spine/AnimationState.h index 1e96e7f50..5bc17929a 100644 --- a/spine-c/include/spine/AnimationState.h +++ b/spine-c/include/spine/AnimationState.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/AnimationStateData.h b/spine-c/include/spine/AnimationStateData.h index a553dc8f6..1345384e7 100644 --- a/spine-c/include/spine/AnimationStateData.h +++ b/spine-c/include/spine/AnimationStateData.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/Atlas.h b/spine-c/include/spine/Atlas.h index 60e3ab7c6..15b9aabf3 100644 --- a/spine-c/include/spine/Atlas.h +++ b/spine-c/include/spine/Atlas.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/AtlasAttachmentLoader.h b/spine-c/include/spine/AtlasAttachmentLoader.h index cc1ba628e..1205c9517 100644 --- a/spine-c/include/spine/AtlasAttachmentLoader.h +++ b/spine-c/include/spine/AtlasAttachmentLoader.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/Attachment.h b/spine-c/include/spine/Attachment.h index 5f37de5dd..cab8a3938 100644 --- a/spine-c/include/spine/Attachment.h +++ b/spine-c/include/spine/Attachment.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/AttachmentLoader.h b/spine-c/include/spine/AttachmentLoader.h index 1f0402e02..7c86e9af9 100644 --- a/spine-c/include/spine/AttachmentLoader.h +++ b/spine-c/include/spine/AttachmentLoader.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/Bone.h b/spine-c/include/spine/Bone.h index 2ee4e08c8..88d482be4 100644 --- a/spine-c/include/spine/Bone.h +++ b/spine-c/include/spine/Bone.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/BoneData.h b/spine-c/include/spine/BoneData.h index 2ad743484..644f1bce0 100644 --- a/spine-c/include/spine/BoneData.h +++ b/spine-c/include/spine/BoneData.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/BoundingBoxAttachment.h b/spine-c/include/spine/BoundingBoxAttachment.h index 582e02720..f8428188c 100644 --- a/spine-c/include/spine/BoundingBoxAttachment.h +++ b/spine-c/include/spine/BoundingBoxAttachment.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/Event.h b/spine-c/include/spine/Event.h index 385b346e2..4df161a8a 100644 --- a/spine-c/include/spine/Event.h +++ b/spine-c/include/spine/Event.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/EventData.h b/spine-c/include/spine/EventData.h index 10b48f613..4e0ff2078 100644 --- a/spine-c/include/spine/EventData.h +++ b/spine-c/include/spine/EventData.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/IkConstraint.h b/spine-c/include/spine/IkConstraint.h index e1cb217d8..0b100edae 100644 --- a/spine-c/include/spine/IkConstraint.h +++ b/spine-c/include/spine/IkConstraint.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/IkConstraintData.h b/spine-c/include/spine/IkConstraintData.h index 4033f0378..6f35352a9 100644 --- a/spine-c/include/spine/IkConstraintData.h +++ b/spine-c/include/spine/IkConstraintData.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/MeshAttachment.h b/spine-c/include/spine/MeshAttachment.h index e5eb271d9..f80033508 100644 --- a/spine-c/include/spine/MeshAttachment.h +++ b/spine-c/include/spine/MeshAttachment.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software + * Version 2.3 + * + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. - * + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/RegionAttachment.h b/spine-c/include/spine/RegionAttachment.h index c076eeac4..c370dc91b 100644 --- a/spine-c/include/spine/RegionAttachment.h +++ b/spine-c/include/spine/RegionAttachment.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/Skeleton.h b/spine-c/include/spine/Skeleton.h index 6e0951878..8b6e07afe 100644 --- a/spine-c/include/spine/Skeleton.h +++ b/spine-c/include/spine/Skeleton.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -117,7 +118,8 @@ int spSkeleton_setSkinByName (spSkeleton* self, const char* skinName); spAttachment* spSkeleton_getAttachmentForSlotName (const spSkeleton* self, const char* slotName, const char* attachmentName); /* Returns 0 if the slot or attachment was not found. */ spAttachment* spSkeleton_getAttachmentForSlotIndex (const spSkeleton* self, int slotIndex, const char* attachmentName); -/* Returns 0 if the slot or attachment was not found. */ +/* Returns 0 if the slot or attachment was not found. + * @param attachmentName May be 0. */ int spSkeleton_setAttachment (spSkeleton* self, const char* slotName, const char* attachmentName); /* Returns 0 if the IK constraint was not found. */ diff --git a/spine-c/include/spine/SkeletonBounds.h b/spine-c/include/spine/SkeletonBounds.h index c7746d4c1..d7411b250 100644 --- a/spine-c/include/spine/SkeletonBounds.h +++ b/spine-c/include/spine/SkeletonBounds.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/SkeletonData.h b/spine-c/include/spine/SkeletonData.h index 4635b3011..1041c5a07 100644 --- a/spine-c/include/spine/SkeletonData.h +++ b/spine-c/include/spine/SkeletonData.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/SkeletonJson.h b/spine-c/include/spine/SkeletonJson.h index 76c34ce24..3eb7fb758 100644 --- a/spine-c/include/spine/SkeletonJson.h +++ b/spine-c/include/spine/SkeletonJson.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/Skin.h b/spine-c/include/spine/Skin.h index 2e4d7caa4..6458d9038 100644 --- a/spine-c/include/spine/Skin.h +++ b/spine-c/include/spine/Skin.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/SkinnedMeshAttachment.h b/spine-c/include/spine/SkinnedMeshAttachment.h index f00ef4417..a9c56152c 100644 --- a/spine-c/include/spine/SkinnedMeshAttachment.h +++ b/spine-c/include/spine/SkinnedMeshAttachment.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software + * Version 2.3 + * + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. - * + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/include/spine/Slot.h b/spine-c/include/spine/Slot.h index 21ac76061..f43e103e3 100644 --- a/spine-c/include/spine/Slot.h +++ b/spine-c/include/spine/Slot.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -53,7 +54,7 @@ typedef struct spSlot { spSlot() : data(0), bone(0), - r(0), b(0), g(0), a(0), + r(0), g(0), b(0), a(0), attachment(0), attachmentVerticesCapacity(0), attachmentVerticesCount(0), diff --git a/spine-c/include/spine/SlotData.h b/spine-c/include/spine/SlotData.h index b1e00faf2..7a7f7c8a7 100644 --- a/spine-c/include/spine/SlotData.h +++ b/spine-c/include/spine/SlotData.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -37,12 +38,16 @@ extern "C" { #endif +typedef enum { + SP_BLEND_MODE_NORMAL, SP_BLEND_MODE_ADDITIVE, SP_BLEND_MODE_MULTIPLY, SP_BLEND_MODE_SCREEN +} spBlendMode; + typedef struct spSlotData { const char* const name; const spBoneData* const boneData; const char* attachmentName; float r, g, b, a; - int/*bool*/additiveBlending; + spBlendMode blendMode; #ifdef __cplusplus spSlotData() : @@ -50,7 +55,7 @@ typedef struct spSlotData { boneData(0), attachmentName(0), r(0), g(0), b(0), a(0), - additiveBlending(0) { + blendMode(SP_BLEND_MODE_NORMAL) { } #endif } spSlotData; @@ -62,6 +67,11 @@ void spSlotData_dispose (spSlotData* self); void spSlotData_setAttachmentName (spSlotData* self, const char* attachmentName); #ifdef SPINE_SHORT_NAMES +typedef spBlendMode BlendMode; +#define BLEND_MODE_NORMAL SP_BLEND_MODE_NORMAL +#define BLEND_MODE_ADDITIVE SP_BLEND_MODE_ADDITIVE +#define BLEND_MODE_MULTIPLY SP_BLEND_MODE_MULTIPLY +#define BLEND_MODE_SCREEN SP_BLEND_MODE_SCREEN typedef spSlotData SlotData; #define SlotData_create(...) spSlotData_create(__VA_ARGS__) #define SlotData_dispose(...) spSlotData_dispose(__VA_ARGS__) diff --git a/spine-c/include/spine/extension.h b/spine-c/include/spine/extension.h index 5b30f621d..e42394c4c 100644 --- a/spine-c/include/spine/extension.h +++ b/spine-c/include/spine/extension.h @@ -32,7 +32,7 @@ #define SPINE_EXTENSION_H_ /* All allocation uses these. */ -#define MALLOC(TYPE,COUNT) ((TYPE*)_malloc(sizeof(TYPE) * COUNT, __FILE__, __LINE__)) +#define MALLOC(TYPE,COUNT) ((TYPE*)_malloc(sizeof(TYPE) * (COUNT), __FILE__, __LINE__)) #define CALLOC(TYPE,COUNT) ((TYPE*)_calloc(COUNT, sizeof(TYPE), __FILE__, __LINE__)) #define NEW(TYPE) CALLOC(TYPE,1) diff --git a/spine-c/include/spine/spine.h b/spine-c/include/spine/spine.h index 54f42419d..bbd6acfec 100644 --- a/spine-c/include/spine/spine.h +++ b/spine-c/include/spine/spine.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/Animation.c b/spine-c/src/spine/Animation.c index 51b01ebd9..e233a4243 100644 --- a/spine-c/src/spine/Animation.c +++ b/spine-c/src/spine/Animation.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -833,4 +834,3 @@ void spFlipTimeline_setFrame (spFlipTimeline* self, int frameIndex, float time, } /**/ - diff --git a/spine-c/src/spine/AnimationState.c b/spine-c/src/spine/AnimationState.c index 419c4594f..85452419f 100644 --- a/spine-c/src/spine/AnimationState.c +++ b/spine-c/src/spine/AnimationState.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/AnimationStateData.c b/spine-c/src/spine/AnimationStateData.c index 0a5fbf4ca..edb31a97f 100644 --- a/spine-c/src/spine/AnimationStateData.c +++ b/spine-c/src/spine/AnimationStateData.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/Atlas.c b/spine-c/src/spine/Atlas.c index 20dd5d349..93f078a6f 100644 --- a/spine-c/src/spine/Atlas.c +++ b/spine-c/src/spine/Atlas.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -76,23 +77,18 @@ static void trim (Str* str) { } /* Tokenize string without modification. Returns 0 on failure. */ -static int readLine (const char* begin, const char* end, Str* str) { - static const char* nextStart; - if (begin) { - nextStart = begin; - return 1; - } - if (nextStart == end) return 0; - str->begin = nextStart; +static int readLine (const char** begin, const char* end, Str* str) { + if (*begin == end) return 0; + str->begin = *begin; /* Find next delimiter. */ - while (nextStart != end && *nextStart != '\n') - nextStart++; + while (*begin != end && **begin != '\n') + (*begin)++; - str->end = nextStart; + str->end = *begin; trim(str); - if (nextStart != end) nextStart++; + if (*begin != end) (*begin)++; return 1; } @@ -110,18 +106,18 @@ static int beginPast (Str* str, char c) { } /* Returns 0 on failure. */ -static int readValue (const char* end, Str* str) { - readLine(0, end, str); +static int readValue (const char** begin, const char* end, Str* str) { + readLine(begin, end, str); if (!beginPast(str, ':')) return 0; trim(str); return 1; } /* Returns the number of tuple values read (1, 2, 4, or 0 for failure). */ -static int readTuple (const char* end, Str tuple[]) { +static int readTuple (const char** begin, const char* end, Str tuple[]) { int i; Str str = {NULL, NULL}; - readLine(0, end, &str); + readLine(begin, end, &str); if (!beginPast(&str, ':')) return 0; for (i = 0; i < 3; ++i) { @@ -186,8 +182,7 @@ spAtlas* spAtlas_create (const char* begin, int length, const char* dir, void* r self = NEW(spAtlas); self->rendererObject = rendererObject; - readLine(begin, 0, 0); - while (readLine(0, end, &str)) { + while (readLine(&begin, end, &str)) { if (str.end - str.begin == 0) { page = 0; } else if (!page) { @@ -205,21 +200,21 @@ spAtlas* spAtlas_create (const char* begin, int length, const char* dir, void* r self->pages = page; lastPage = page; - switch (readTuple(end, tuple)) { + switch (readTuple(&begin, end, tuple)) { case 0: return abortAtlas(self); case 2: /* size is only optional for an atlas packed with an old TexturePacker. */ page->width = toInt(tuple); page->height = toInt(tuple + 1); - if (!readTuple(end, tuple)) return abortAtlas(self); + if (!readTuple(&begin, end, tuple)) return abortAtlas(self); } page->format = (spAtlasFormat)indexOf(formatNames, 7, tuple); - if (!readTuple(end, tuple)) return abortAtlas(self); + if (!readTuple(&begin, end, tuple)) return abortAtlas(self); page->minFilter = (spAtlasFilter)indexOf(textureFilterNames, 7, tuple); page->magFilter = (spAtlasFilter)indexOf(textureFilterNames, 7, tuple + 1); - if (!readValue(end, &str)) return abortAtlas(self); + if (!readValue(&begin, end, &str)) return abortAtlas(self); if (!equals(&str, "none")) { page->uWrap = *str.begin == 'x' ? SP_ATLAS_REPEAT : (*str.begin == 'y' ? SP_ATLAS_CLAMPTOEDGE : SP_ATLAS_REPEAT); page->vWrap = *str.begin == 'x' ? SP_ATLAS_CLAMPTOEDGE : (*str.begin == 'y' ? SP_ATLAS_REPEAT : SP_ATLAS_REPEAT); @@ -238,14 +233,14 @@ spAtlas* spAtlas_create (const char* begin, int length, const char* dir, void* r region->page = page; region->name = mallocString(&str); - if (!readValue(end, &str)) return abortAtlas(self); + if (!readValue(&begin, end, &str)) return abortAtlas(self); region->rotate = equals(&str, "true"); - if (readTuple(end, tuple) != 2) return abortAtlas(self); + if (readTuple(&begin, end, tuple) != 2) return abortAtlas(self); region->x = toInt(tuple); region->y = toInt(tuple + 1); - if (readTuple(end, tuple) != 2) return abortAtlas(self); + if (readTuple(&begin, end, tuple) != 2) return abortAtlas(self); region->width = toInt(tuple); region->height = toInt(tuple + 1); @@ -259,7 +254,7 @@ spAtlas* spAtlas_create (const char* begin, int length, const char* dir, void* r region->v2 = (region->y + region->height) / (float)page->height; } - if (!(count = readTuple(end, tuple))) return abortAtlas(self); + if (!(count = readTuple(&begin, end, tuple))) return abortAtlas(self); if (count == 4) { /* split is optional */ region->splits = MALLOC(int, 4); region->splits[0] = toInt(tuple); @@ -267,7 +262,7 @@ spAtlas* spAtlas_create (const char* begin, int length, const char* dir, void* r region->splits[2] = toInt(tuple + 2); region->splits[3] = toInt(tuple + 3); - if (!(count = readTuple(end, tuple))) return abortAtlas(self); + if (!(count = readTuple(&begin, end, tuple))) return abortAtlas(self); if (count == 4) { /* pad is optional, but only present with splits */ region->pads = MALLOC(int, 4); region->pads[0] = toInt(tuple); @@ -275,18 +270,18 @@ spAtlas* spAtlas_create (const char* begin, int length, const char* dir, void* r region->pads[2] = toInt(tuple + 2); region->pads[3] = toInt(tuple + 3); - if (!readTuple(end, tuple)) return abortAtlas(self); + if (!readTuple(&begin, end, tuple)) return abortAtlas(self); } } region->originalWidth = toInt(tuple); region->originalHeight = toInt(tuple + 1); - readTuple(end, tuple); + readTuple(&begin, end, tuple); region->offsetX = toInt(tuple); region->offsetY = toInt(tuple + 1); - if (!readValue(end, &str)) return abortAtlas(self); + if (!readValue(&begin, end, &str)) return abortAtlas(self); region->index = toInt(&str); } } diff --git a/spine-c/src/spine/AtlasAttachmentLoader.c b/spine-c/src/spine/AtlasAttachmentLoader.c index 0867cd23e..9247a8ce7 100644 --- a/spine-c/src/spine/AtlasAttachmentLoader.c +++ b/spine-c/src/spine/AtlasAttachmentLoader.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/Attachment.c b/spine-c/src/spine/Attachment.c index 3918837f0..c920907aa 100644 --- a/spine-c/src/spine/Attachment.c +++ b/spine-c/src/spine/Attachment.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/AttachmentLoader.c b/spine-c/src/spine/AttachmentLoader.c index ab0c04c36..c211dc883 100644 --- a/spine-c/src/spine/AttachmentLoader.c +++ b/spine-c/src/spine/AttachmentLoader.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/Bone.c b/spine-c/src/spine/Bone.c index 963cdcbf6..d75dafc86 100644 --- a/spine-c/src/spine/Bone.c +++ b/spine-c/src/spine/Bone.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/BoneData.c b/spine-c/src/spine/BoneData.c index 00a0a88e4..1d102f504 100644 --- a/spine-c/src/spine/BoneData.c +++ b/spine-c/src/spine/BoneData.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/BoundingBoxAttachment.c b/spine-c/src/spine/BoundingBoxAttachment.c index 6df38ed32..0d8049723 100644 --- a/spine-c/src/spine/BoundingBoxAttachment.c +++ b/spine-c/src/spine/BoundingBoxAttachment.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/Event.c b/spine-c/src/spine/Event.c index bff59b866..7bbc781cd 100644 --- a/spine-c/src/spine/Event.c +++ b/spine-c/src/spine/Event.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/EventData.c b/spine-c/src/spine/EventData.c index 0567a95b9..6600eb892 100644 --- a/spine-c/src/spine/EventData.c +++ b/spine-c/src/spine/EventData.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/IkConstraint.c b/spine-c/src/spine/IkConstraint.c index 13d9dda43..61a0907c4 100644 --- a/spine-c/src/spine/IkConstraint.c +++ b/spine-c/src/spine/IkConstraint.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/IkConstraintData.c b/spine-c/src/spine/IkConstraintData.c index f25b6eb30..11e82ba3c 100644 --- a/spine-c/src/spine/IkConstraintData.c +++ b/spine-c/src/spine/IkConstraintData.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/MeshAttachment.c b/spine-c/src/spine/MeshAttachment.c index 0ca41fbc0..71d7ad36d 100644 --- a/spine-c/src/spine/MeshAttachment.c +++ b/spine-c/src/spine/MeshAttachment.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/RegionAttachment.c b/spine-c/src/spine/RegionAttachment.c index 6b1030518..925cc4eb9 100644 --- a/spine-c/src/spine/RegionAttachment.c +++ b/spine-c/src/spine/RegionAttachment.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/Skeleton.c b/spine-c/src/spine/Skeleton.c index d8835db72..dc1b8ff11 100644 --- a/spine-c/src/spine/Skeleton.c +++ b/spine-c/src/spine/Skeleton.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/SkeletonBounds.c b/spine-c/src/spine/SkeletonBounds.c index 16c35facc..faae30b92 100644 --- a/spine-c/src/spine/SkeletonBounds.c +++ b/spine-c/src/spine/SkeletonBounds.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/SkeletonData.c b/spine-c/src/spine/SkeletonData.c index fc80ac411..c6f773811 100644 --- a/spine-c/src/spine/SkeletonData.c +++ b/spine-c/src/spine/SkeletonData.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/SkeletonJson.c b/spine-c/src/spine/SkeletonJson.c index 8e2b1280e..f6af78a08 100644 --- a/spine-c/src/spine/SkeletonJson.c +++ b/spine-c/src/spine/SkeletonJson.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -30,6 +31,7 @@ #include #include +#include #include "Json.h" #include #include @@ -420,11 +422,14 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha int i, ii; spSkeletonData* skeletonData; Json *root, *skeleton, *bones, *boneMap, *ik, *slots, *skins, *animations, *events; + char* oldLocale; FREE(self->error); CONST_CAST(char*, self->error) = 0; + oldLocale = setlocale(LC_NUMERIC, "C"); root = Json_create(json); + setlocale(LC_NUMERIC, oldLocale); if (!root) { _spSkeletonJson_setError(self, 0, "Invalid skeleton JSON: ", Json_getError()); return 0; @@ -519,7 +524,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha for (slotMap = slots->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { spSlotData* slotData; const char* color; - Json *attachmentItem; + Json *item; const char* boneName = Json_getString(slotMap, "bone", 0); spBoneData* boneData = spSkeletonData_findBone(skeletonData, boneName); @@ -539,10 +544,18 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha slotData->a = toColor(color, 3); } - attachmentItem = Json_getItem(slotMap, "attachment"); - if (attachmentItem) spSlotData_setAttachmentName(slotData, attachmentItem->valueString); + item = Json_getItem(slotMap, "attachment"); + if (item) spSlotData_setAttachmentName(slotData, item->valueString); - slotData->additiveBlending = Json_getInt(slotMap, "additive", 0); + item = Json_getItem(slotMap, "blend"); + if (item) { + if (strcmp(item->valueString, "additive") == 0) + slotData->blendMode = SP_BLEND_MODE_ADDITIVE; + else if (strcmp(item->valueString, "multiply") == 0) + slotData->blendMode = SP_BLEND_MODE_MULTIPLY; + else if (strcmp(item->valueString, "screen") == 0) + slotData->blendMode = SP_BLEND_MODE_SCREEN; + } skeletonData->slots[i] = slotData; } diff --git a/spine-c/src/spine/Skin.c b/spine-c/src/spine/Skin.c index d2f2e27e3..afbf52c61 100644 --- a/spine-c/src/spine/Skin.c +++ b/spine-c/src/spine/Skin.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/SkinnedMeshAttachment.c b/spine-c/src/spine/SkinnedMeshAttachment.c index 1697d7948..a40fb90df 100644 --- a/spine-c/src/spine/SkinnedMeshAttachment.c +++ b/spine-c/src/spine/SkinnedMeshAttachment.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/Slot.c b/spine-c/src/spine/Slot.c index 8e4fcbf65..7a7da3ba8 100644 --- a/spine-c/src/spine/Slot.c +++ b/spine-c/src/spine/Slot.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/SlotData.c b/spine-c/src/spine/SlotData.c index a6ee84039..7d575bc81 100644 --- a/spine-c/src/spine/SlotData.c +++ b/spine-c/src/spine/SlotData.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-c/src/spine/extension.c b/spine-c/src/spine/extension.c index f45bb2d26..18c917928 100644 --- a/spine-c/src/spine/extension.c +++ b/spine-c/src/spine/extension.c @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/2/LICENSE b/spine-cocos2d-iphone/2/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-cocos2d-iphone/2/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-cocos2d-iphone/2/README.md b/spine-cocos2d-iphone/2/README.md index 16c693f82..d1b4e05f8 100644 --- a/spine-cocos2d-iphone/2/README.md +++ b/spine-cocos2d-iphone/2/README.md @@ -2,6 +2,12 @@ The spine-cocos2d-iphone runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-iphone](http://www.cocos2d-iphone.org/). spine-cocos2d-iphone is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-cocos2d-iphone/2/example/GoblinsExample.h b/spine-cocos2d-iphone/2/example/GoblinsExample.h index be76ae14e..a84084722 100644 --- a/spine-cocos2d-iphone/2/example/GoblinsExample.h +++ b/spine-cocos2d-iphone/2/example/GoblinsExample.h @@ -1,4 +1,33 @@ - +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #import "cocos2d.h" #import @@ -9,4 +38,4 @@ + (CCScene*) scene; -@end \ No newline at end of file +@end diff --git a/spine-cocos2d-iphone/2/example/GoblinsExample.m b/spine-cocos2d-iphone/2/example/GoblinsExample.m index 46d973ba5..eff7ab266 100644 --- a/spine-cocos2d-iphone/2/example/GoblinsExample.m +++ b/spine-cocos2d-iphone/2/example/GoblinsExample.m @@ -1,3 +1,33 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #import "GoblinsExample.h" #import "SpineboyExample.h" diff --git a/spine-cocos2d-iphone/2/example/SpineboyExample.h b/spine-cocos2d-iphone/2/example/SpineboyExample.h index 6541bef31..e0d9aeb08 100644 --- a/spine-cocos2d-iphone/2/example/SpineboyExample.h +++ b/spine-cocos2d-iphone/2/example/SpineboyExample.h @@ -1,4 +1,33 @@ - +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #import "cocos2d.h" #import @@ -9,4 +38,4 @@ + (CCScene*) scene; -@end \ No newline at end of file +@end diff --git a/spine-cocos2d-iphone/2/example/SpineboyExample.m b/spine-cocos2d-iphone/2/example/SpineboyExample.m index 8553152f1..cb395d1ca 100644 --- a/spine-cocos2d-iphone/2/example/SpineboyExample.m +++ b/spine-cocos2d-iphone/2/example/SpineboyExample.m @@ -1,3 +1,33 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #import "SpineboyExample.h" #import "GoblinsExample.h" diff --git a/spine-cocos2d-iphone/2/src/spine/PolygonBatch.h b/spine-cocos2d-iphone/2/src/spine/PolygonBatch.h index 0314ecb8e..d85419d04 100644 --- a/spine-cocos2d-iphone/2/src/spine/PolygonBatch.h +++ b/spine-cocos2d-iphone/2/src/spine/PolygonBatch.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/2/src/spine/PolygonBatch.m b/spine-cocos2d-iphone/2/src/spine/PolygonBatch.m index 8bfb21f2c..28d36e29e 100644 --- a/spine-cocos2d-iphone/2/src/spine/PolygonBatch.m +++ b/spine-cocos2d-iphone/2/src/spine/PolygonBatch.m @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.h b/spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.h index 183ef2121..22ee4f1da 100644 --- a/spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.h +++ b/spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.m b/spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.m index cbaccf811..aa61ed952 100644 --- a/spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.m +++ b/spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.m @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.h b/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.h index adbcaf327..08863ba64 100644 --- a/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.h +++ b/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m b/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m index ef0d5d0d8..e9f973434 100644 --- a/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m +++ b/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -142,7 +143,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; _skeleton->b = nodeColor.b / (float)255; _skeleton->a = self.opacity / (float)255; - int additive = -1; + int blendMode = -1; ccColor4B color; const float* uvs = 0; int verticesCount = 0; @@ -199,10 +200,22 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; default: ; } if (texture) { - if (slot->data->additiveBlending != additive) { + if (slot->data->blendMode != blendMode) { [batch flush]; - ccGLBlendFunc(_blendFunc.src, slot->data->additiveBlending ? GL_ONE : _blendFunc.dst); - additive = slot->data->additiveBlending; + blendMode = slot->data->blendMode; + switch (slot->data->blendMode) { + case SP_BLEND_MODE_ADDITIVE: + ccGLBlendFunc(_premultipliedAlpha ? GL_ONE : GL_SRC_ALPHA, GL_ONE); + break; + case SP_BLEND_MODE_MULTIPLY: + ccGLBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); + break; + case SP_BLEND_MODE_SCREEN: + ccGLBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR); + break; + default: + ccGLBlendFunc(_premultipliedAlpha ? GL_ONE : GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } } color.a = _skeleton->a * slot->a * a * 255; float multiplier = _premultipliedAlpha ? color.a : 255; diff --git a/spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.h b/spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.h index 1991cae7b..848a4043b 100644 --- a/spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.h +++ b/spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.m b/spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.m index 7be71f127..45e53f5d7 100644 --- a/spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.m +++ b/spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.m @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/3/LICENSE b/spine-cocos2d-iphone/3/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-cocos2d-iphone/3/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-cocos2d-iphone/3/README.md b/spine-cocos2d-iphone/3/README.md index 121db8e23..dba5a87af 100644 --- a/spine-cocos2d-iphone/3/README.md +++ b/spine-cocos2d-iphone/3/README.md @@ -2,6 +2,12 @@ The spine-cocos2d-iphone runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-iphone](http://www.cocos2d-iphone.org/). spine-cocos2d-iphone is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-cocos2d-iphone/3/example/GoblinsExample.h b/spine-cocos2d-iphone/3/example/GoblinsExample.h index e1c5f0266..86d34a6b7 100644 --- a/spine-cocos2d-iphone/3/example/GoblinsExample.h +++ b/spine-cocos2d-iphone/3/example/GoblinsExample.h @@ -1,4 +1,33 @@ - +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #import "cocos2d.h" #import @@ -9,4 +38,4 @@ + (CCScene*) scene; -@end \ No newline at end of file +@end diff --git a/spine-cocos2d-iphone/3/example/GoblinsExample.m b/spine-cocos2d-iphone/3/example/GoblinsExample.m index 62fef9921..58735c55a 100644 --- a/spine-cocos2d-iphone/3/example/GoblinsExample.m +++ b/spine-cocos2d-iphone/3/example/GoblinsExample.m @@ -1,3 +1,33 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #import "GoblinsExample.h" #import "SpineboyExample.h" diff --git a/spine-cocos2d-iphone/3/example/SpineboyExample.h b/spine-cocos2d-iphone/3/example/SpineboyExample.h index b76cef160..5fa7697dd 100644 --- a/spine-cocos2d-iphone/3/example/SpineboyExample.h +++ b/spine-cocos2d-iphone/3/example/SpineboyExample.h @@ -1,4 +1,33 @@ - +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #import "cocos2d.h" #import @@ -9,4 +38,4 @@ + (CCScene*) scene; -@end \ No newline at end of file +@end diff --git a/spine-cocos2d-iphone/3/example/SpineboyExample.m b/spine-cocos2d-iphone/3/example/SpineboyExample.m index dc573d73a..0d5636fc1 100644 --- a/spine-cocos2d-iphone/3/example/SpineboyExample.m +++ b/spine-cocos2d-iphone/3/example/SpineboyExample.m @@ -1,3 +1,33 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #import "SpineboyExample.h" #import "GoblinsExample.h" diff --git a/spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.h b/spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.h index 183ef2121..22ee4f1da 100644 --- a/spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.h +++ b/spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.m b/spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.m index c26eddae8..6942bed31 100644 --- a/spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.m +++ b/spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.m @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/3/src/spine/SkeletonRenderer.h b/spine-cocos2d-iphone/3/src/spine/SkeletonRenderer.h index ec91328af..656ded2c1 100644 --- a/spine-cocos2d-iphone/3/src/spine/SkeletonRenderer.h +++ b/spine-cocos2d-iphone/3/src/spine/SkeletonRenderer.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -39,10 +40,11 @@ bool _debugBones; bool _premultipliedAlpha; ccBlendFunc _blendFunc; - CCDrawNode *_drawNode; + CCDrawNode* _drawNode; bool _ownsSkeletonData; spAtlas* _atlas; - float* worldVertices; + float* _worldVertices; + CCBlendMode* screenMode; } + (id) skeletonWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData; diff --git a/spine-cocos2d-iphone/3/src/spine/SkeletonRenderer.m b/spine-cocos2d-iphone/3/src/spine/SkeletonRenderer.m index bd57ebec2..f0ca12a61 100644 --- a/spine-cocos2d-iphone/3/src/spine/SkeletonRenderer.m +++ b/spine-cocos2d-iphone/3/src/spine/SkeletonRenderer.m @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -62,7 +63,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; - (void) initialize:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData { _ownsSkeletonData = ownsSkeletonData; - worldVertices = MALLOC(float, 1000); // Max number of vertices per mesh. + _worldVertices = MALLOC(float, 1000); // Max number of vertices per mesh. _skeleton = spSkeleton_create(skeletonData); _rootBone = _skeleton->bones[0]; @@ -74,6 +75,12 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; [self addChild:_drawNode]; [self setShader:[CCShader positionTextureColorShader]]; + + _premultipliedAlpha = true; + screenMode = [CCBlendMode blendModeWithOptions:@{ + CCBlendFuncSrcColor: @(GL_ONE), + CCBlendFuncDstColor: @(GL_ONE_MINUS_SRC_COLOR)} + ]; } - (id) initWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData { @@ -127,7 +134,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; if (_ownsSkeletonData) spSkeletonData_dispose(_skeleton->data); if (_atlas) spAtlas_dispose(_atlas); spSkeleton_dispose(_skeleton); - FREE(worldVertices); + FREE(_worldVertices); [super dealloc]; } @@ -138,7 +145,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; _skeleton->b = nodeColor.blue; _skeleton->a = self.displayedOpacity; - int additive = -1; + int blendMode = -1; const float* uvs = 0; int verticesCount = 0; const int* triangles = 0; @@ -151,7 +158,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; switch (slot->attachment->type) { case SP_ATTACHMENT_REGION: { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); texture = [self getTextureForRegion:attachment]; uvs = attachment->uvs; verticesCount = 8; @@ -165,7 +172,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; } case SP_ATTACHMENT_MESH: { spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(attachment, slot, worldVertices); + spMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); texture = [self getTextureForMesh:attachment]; uvs = attachment->uvs; verticesCount = attachment->verticesCount; @@ -179,7 +186,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; } case SP_ATTACHMENT_SKINNED_MESH: { spSkinnedMeshAttachment* attachment = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(attachment, slot, worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); texture = [self getTextureForSkinnedMesh:attachment]; uvs = attachment->uvs; verticesCount = attachment->uvsCount; @@ -194,22 +201,34 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; default: ; } if (texture) { - if (slot->data->additiveBlending != additive) { - [self setBlendMode:[CCBlendMode blendModeWithOptions:@{CCBlendFuncSrcColor: @(_blendFunc.src),CCBlendFuncDstColor: @(slot->data->additiveBlending ? GL_ONE : _blendFunc.dst)}]]; - additive = slot->data->additiveBlending; + if (slot->data->blendMode != blendMode) { + blendMode = slot->data->blendMode; + switch (slot->data->blendMode) { + case SP_BLEND_MODE_ADDITIVE: + [self setBlendMode:[CCBlendMode addMode]]; + break; + case SP_BLEND_MODE_MULTIPLY: + [self setBlendMode:[CCBlendMode multiplyMode]]; + break; + case SP_BLEND_MODE_SCREEN: + [self setBlendMode:screenMode]; + break; + default: + [self setBlendMode:_premultipliedAlpha ? [CCBlendMode premultipliedAlphaMode] : [CCBlendMode alphaMode]]; + } } if (_premultipliedAlpha) { - a *= _skeleton->a * slot->a; - r *= _skeleton->r * slot->r * a; - g *= _skeleton->g * slot->g * a; - b *= _skeleton->b * slot->b * a; - } else { - a *= _skeleton->a * slot->a; - r *= _skeleton->r * slot->r; - g *= _skeleton->g * slot->g; - b *= _skeleton->b * slot->b; + a *= _skeleton->a * slot->a; + r *= _skeleton->r * slot->r * a; + g *= _skeleton->g * slot->g * a; + b *= _skeleton->b * slot->b * a; + } else { + a *= _skeleton->a * slot->a; + r *= _skeleton->r * slot->r; + g *= _skeleton->g * slot->g; + b *= _skeleton->b * slot->b; } - self.texture = texture; + self.texture = texture; CGSize size = texture.contentSize; GLKVector2 center = GLKVector2Make(size.width / 2.0, size.height / 2.0); GLKVector2 extents = GLKVector2Make(size.width / 2.0, size.height / 2.0); @@ -217,7 +236,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; CCRenderBuffer buffer = [renderer enqueueTriangles:(trianglesCount / 3) andVertexes:verticesCount withState:self.renderState globalSortOrder:0]; for (int i = 0; i * 2 < verticesCount; ++i) { CCVertex vertex; - vertex.position = GLKVector4Make(worldVertices[i * 2], worldVertices[i * 2 + 1], 0.0, 1.0); + vertex.position = GLKVector4Make(_worldVertices[i * 2], _worldVertices[i * 2 + 1], 0.0, 1.0); vertex.color = GLKVector4Make(r, g, b, a); vertex.texCoord1 = GLKVector2Make(uvs[i * 2], 1 - uvs[i * 2 + 1]); CCRenderBufferSetVertex(buffer, i, CCVertexApplyTransform(vertex, transform)); @@ -236,11 +255,11 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; spSlot* slot = _skeleton->drawOrder[i]; if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue; spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); - points[0] = ccp(worldVertices[0], worldVertices[1]); - points[1] = ccp(worldVertices[2], worldVertices[3]); - points[2] = ccp(worldVertices[4], worldVertices[5]); - points[3] = ccp(worldVertices[6], worldVertices[7]); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); + points[0] = ccp(_worldVertices[0], _worldVertices[1]); + points[1] = ccp(_worldVertices[2], _worldVertices[3]); + points[2] = ccp(_worldVertices[4], _worldVertices[5]); + points[3] = ccp(_worldVertices[6], _worldVertices[7]); [_drawNode drawPolyWithVerts:points count:4 fillColor:[CCColor clearColor] borderWidth:1 borderColor:[CCColor blueColor]]; } } @@ -283,20 +302,20 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; int verticesCount; if (slot->attachment->type == SP_ATTACHMENT_REGION) { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); verticesCount = 8; } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); + spMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); verticesCount = mesh->verticesCount; } else if (slot->attachment->type == SP_ATTACHMENT_SKINNED_MESH) { spSkinnedMeshAttachment* mesh = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); verticesCount = mesh->uvsCount; } else continue; for (int ii = 0; ii < verticesCount; ii += 2) { - float x = worldVertices[ii] * scaleX, y = worldVertices[ii + 1] * scaleY; + float x = _worldVertices[ii] * scaleX, y = _worldVertices[ii + 1] * scaleY; minX = fmin(minX, x); minY = fmin(minY, y); maxX = fmax(maxX, x); diff --git a/spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.h b/spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.h index 1991cae7b..848a4043b 100644 --- a/spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.h +++ b/spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.m b/spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.m index 20ebe878c..c1b6db49e 100644 --- a/spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.m +++ b/spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.m @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/LICENSE b/spine-cocos2dx/2/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-cocos2dx/2/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-cocos2dx/2/README.md b/spine-cocos2dx/2/README.md index fb9a867dc..168eb6e43 100644 --- a/spine-cocos2dx/2/README.md +++ b/spine-cocos2dx/2/README.md @@ -2,6 +2,12 @@ The spine-cocos2dx runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-x](http://www.cocos2d-x.org/). spine-cocos2dx is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-cocos2dx/2/example/Classes/AppDelegate.cpp b/spine-cocos2dx/2/example/Classes/AppDelegate.cpp index 617e53cc9..b555586b4 100644 --- a/spine-cocos2dx/2/example/Classes/AppDelegate.cpp +++ b/spine-cocos2dx/2/example/Classes/AppDelegate.cpp @@ -1,3 +1,34 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + #include "AppDelegate.h" #include diff --git a/spine-cocos2dx/2/example/Classes/AppDelegate.h b/spine-cocos2dx/2/example/Classes/AppDelegate.h index 318fc27f4..8f5c3fe0c 100644 --- a/spine-cocos2dx/2/example/Classes/AppDelegate.h +++ b/spine-cocos2dx/2/example/Classes/AppDelegate.h @@ -1,4 +1,33 @@ - +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #ifndef _APPDELEGATE_H_ #define _APPDELEGATE_H_ @@ -15,4 +44,4 @@ public: virtual void applicationWillEnterForeground (); }; -#endif // _APPDELEGATE_H_ \ No newline at end of file +#endif // _APPDELEGATE_H_ diff --git a/spine-cocos2dx/2/example/Classes/AppMacros.h b/spine-cocos2dx/2/example/Classes/AppMacros.h index 209553df7..7329fa520 100644 --- a/spine-cocos2dx/2/example/Classes/AppMacros.h +++ b/spine-cocos2dx/2/example/Classes/AppMacros.h @@ -1,4 +1,33 @@ - +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #ifndef _APPMACROS_H_ #define _APPMACROS_H_ @@ -58,4 +87,4 @@ static cocos2d::CCSize designResolutionSize = cocos2d::Size(2048, 1536); // The font size 24 is designed for small resolution, so we should change it to fit for current design resolution #define TITLE_FONT_SIZE (cocos2d::Director::getInstance()->getOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24) -#endif /* _APPMACROS_H_ */ \ No newline at end of file +#endif /* _APPMACROS_H_ */ diff --git a/spine-cocos2dx/2/example/Classes/GoblinsExample.cpp b/spine-cocos2dx/2/example/Classes/GoblinsExample.cpp index efbd63b93..720280fb1 100644 --- a/spine-cocos2dx/2/example/Classes/GoblinsExample.cpp +++ b/spine-cocos2dx/2/example/Classes/GoblinsExample.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/example/Classes/GoblinsExample.h b/spine-cocos2dx/2/example/Classes/GoblinsExample.h index f40fa7947..67b9fa4c1 100644 --- a/spine-cocos2dx/2/example/Classes/GoblinsExample.h +++ b/spine-cocos2dx/2/example/Classes/GoblinsExample.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/example/Classes/SpineboyExample.cpp b/spine-cocos2dx/2/example/Classes/SpineboyExample.cpp index c2c9e02e0..94221287e 100644 --- a/spine-cocos2dx/2/example/Classes/SpineboyExample.cpp +++ b/spine-cocos2dx/2/example/Classes/SpineboyExample.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/example/Classes/SpineboyExample.h b/spine-cocos2dx/2/example/Classes/SpineboyExample.h index c83442889..914f282da 100644 --- a/spine-cocos2dx/2/example/Classes/SpineboyExample.h +++ b/spine-cocos2dx/2/example/Classes/SpineboyExample.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/src/spine/PolygonBatch.cpp b/spine-cocos2dx/2/src/spine/PolygonBatch.cpp index cf86dd9b5..e0406cba6 100644 --- a/spine-cocos2dx/2/src/spine/PolygonBatch.cpp +++ b/spine-cocos2dx/2/src/spine/PolygonBatch.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/src/spine/PolygonBatch.h b/spine-cocos2dx/2/src/spine/PolygonBatch.h index 5fd3dda28..c8e54878e 100644 --- a/spine-cocos2dx/2/src/spine/PolygonBatch.h +++ b/spine-cocos2dx/2/src/spine/PolygonBatch.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/src/spine/SkeletonAnimation.cpp b/spine-cocos2dx/2/src/spine/SkeletonAnimation.cpp index 25b5d4b5d..c58fe6c56 100644 --- a/spine-cocos2dx/2/src/spine/SkeletonAnimation.cpp +++ b/spine-cocos2dx/2/src/spine/SkeletonAnimation.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/src/spine/SkeletonAnimation.h b/spine-cocos2dx/2/src/spine/SkeletonAnimation.h index ce5da45bb..b3cd05ba2 100644 --- a/spine-cocos2dx/2/src/spine/SkeletonAnimation.h +++ b/spine-cocos2dx/2/src/spine/SkeletonAnimation.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/2/src/spine/SkeletonRenderer.cpp index 0a2fec9e9..2e0a4e2b4 100644 --- a/spine-cocos2dx/2/src/spine/SkeletonRenderer.cpp +++ b/spine-cocos2dx/2/src/spine/SkeletonRenderer.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -61,11 +62,6 @@ SkeletonRenderer* SkeletonRenderer::createWithFile (const char* skeletonDataFile } void SkeletonRenderer::initialize () { - atlas = 0; - debugSlots = false; - debugBones = false; - timeScale = 1; - worldVertices = MALLOC(float, 1000); // Max number of vertices per mesh. batch = PolygonBatch::createWithCapacity(2000); // Max number of vertices and triangles per batch. @@ -85,17 +81,20 @@ void SkeletonRenderer::setSkeletonData (spSkeletonData *skeletonData, bool ownsS this->ownsSkeletonData = ownsSkeletonData; } -SkeletonRenderer::SkeletonRenderer () { +SkeletonRenderer::SkeletonRenderer () + : atlas(0), debugSlots(false), debugBones(false), timeScale(1) { initialize(); } -SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) { +SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) + : atlas(0), debugSlots(false), debugBones(false), timeScale(1) { initialize(); setSkeletonData(skeletonData, ownsSkeletonData); } -SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas, float scale) { +SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas, float scale) + : atlas(0), debugSlots(false), debugBones(false), timeScale(1) { initialize(); spSkeletonJson* json = spSkeletonJson_create(atlas); @@ -107,7 +106,8 @@ SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas setSkeletonData(skeletonData, true); } -SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, const char* atlasFile, float scale) { +SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, const char* atlasFile, float scale) + : atlas(0), debugSlots(false), debugBones(false), timeScale(1) { initialize(); atlas = spAtlas_createFromFile(atlasFile, 0); @@ -144,7 +144,7 @@ void SkeletonRenderer::draw () { skeleton->b = nodeColor.b / (float)255; skeleton->a = getDisplayedOpacity() / (float)255; - int additive = -1; + int blendMode = -1; ccColor4B color; const float* uvs = nullptr; int verticesCount = 0; @@ -200,10 +200,22 @@ void SkeletonRenderer::draw () { } } if (texture) { - if (slot->data->additiveBlending != additive) { + if (slot->data->blendMode != blendMode) { batch->flush(); - ccGLBlendFunc(blendFunc.src, slot->data->additiveBlending ? GL_ONE : blendFunc.dst); - additive = slot->data->additiveBlending; + blendMode = slot->data->blendMode; + switch (slot->data->blendMode) { + case SP_BLEND_MODE_ADDITIVE: + ccGLBlendFunc(premultipliedAlpha ? GL_ONE : GL_SRC_ALPHA, GL_ONE); + break; + case SP_BLEND_MODE_MULTIPLY: + ccGLBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); + break; + case SP_BLEND_MODE_SCREEN: + ccGLBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR); + break; + default: + ccGLBlendFunc(blendFunc.src, blendFunc.dst); + } } color.a = skeleton->a * slot->a * a * 255; float multiplier = premultipliedAlpha ? color.a : 255; diff --git a/spine-cocos2dx/2/src/spine/SkeletonRenderer.h b/spine-cocos2dx/2/src/spine/SkeletonRenderer.h index f387a4599..ac286bf55 100644 --- a/spine-cocos2dx/2/src/spine/SkeletonRenderer.h +++ b/spine-cocos2dx/2/src/spine/SkeletonRenderer.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/src/spine/spine-cocos2dx.cpp b/spine-cocos2dx/2/src/spine/spine-cocos2dx.cpp index 389304289..b91068a4e 100644 --- a/spine-cocos2dx/2/src/spine/spine-cocos2dx.cpp +++ b/spine-cocos2dx/2/src/spine/spine-cocos2dx.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/2/src/spine/spine-cocos2dx.h b/spine-cocos2dx/2/src/spine/spine-cocos2dx.h index 3409012f3..f96eba024 100644 --- a/spine-cocos2dx/2/src/spine/spine-cocos2dx.h +++ b/spine-cocos2dx/2/src/spine/spine-cocos2dx.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/LICENSE b/spine-cocos2dx/3/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-cocos2dx/3/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-cocos2dx/3/README.md b/spine-cocos2dx/3/README.md index d6bfd8cbe..31f2d056d 100644 --- a/spine-cocos2dx/3/README.md +++ b/spine-cocos2dx/3/README.md @@ -2,6 +2,12 @@ The spine-cocos2dx runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-x](http://www.cocos2d-x.org/). spine-cocos2dx is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-cocos2dx/3/example/Classes/AppDelegate.cpp b/spine-cocos2dx/3/example/Classes/AppDelegate.cpp index f1439c353..789052012 100644 --- a/spine-cocos2dx/3/example/Classes/AppDelegate.cpp +++ b/spine-cocos2dx/3/example/Classes/AppDelegate.cpp @@ -1,3 +1,34 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + #include "AppDelegate.h" #include diff --git a/spine-cocos2dx/3/example/Classes/AppDelegate.h b/spine-cocos2dx/3/example/Classes/AppDelegate.h index d50b7e9ff..9b0cd0516 100644 --- a/spine-cocos2dx/3/example/Classes/AppDelegate.h +++ b/spine-cocos2dx/3/example/Classes/AppDelegate.h @@ -1,4 +1,33 @@ - +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #ifndef _APPDELEGATE_H_ #define _APPDELEGATE_H_ @@ -15,4 +44,4 @@ public: virtual void applicationWillEnterForeground (); }; -#endif // _APPDELEGATE_H_ \ No newline at end of file +#endif // _APPDELEGATE_H_ diff --git a/spine-cocos2dx/3/example/Classes/AppMacros.h b/spine-cocos2dx/3/example/Classes/AppMacros.h index 467f4d61b..3b8deb498 100644 --- a/spine-cocos2dx/3/example/Classes/AppMacros.h +++ b/spine-cocos2dx/3/example/Classes/AppMacros.h @@ -1,4 +1,33 @@ - +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ #ifndef _APPMACROS_H_ #define _APPMACROS_H_ @@ -58,4 +87,4 @@ static cocos2d::Size designResolutionSize = cocos2d::Size(2048, 1536); // The font size 24 is designed for small resolution, so we should change it to fit for current design resolution #define TITLE_FONT_SIZE (cocos2d::Director::getInstance()->getOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24) -#endif /* _APPMACROS_H_ */ \ No newline at end of file +#endif /* _APPMACROS_H_ */ diff --git a/spine-cocos2dx/3/example/Classes/GoblinsExample.cpp b/spine-cocos2dx/3/example/Classes/GoblinsExample.cpp index bbc44cd9f..18bc80665 100644 --- a/spine-cocos2dx/3/example/Classes/GoblinsExample.cpp +++ b/spine-cocos2dx/3/example/Classes/GoblinsExample.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/example/Classes/GoblinsExample.h b/spine-cocos2dx/3/example/Classes/GoblinsExample.h index b74ecaaf8..8361171db 100644 --- a/spine-cocos2dx/3/example/Classes/GoblinsExample.h +++ b/spine-cocos2dx/3/example/Classes/GoblinsExample.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/example/Classes/RaptorExample.cpp b/spine-cocos2dx/3/example/Classes/RaptorExample.cpp index 2670dc412..c8f05ca30 100644 --- a/spine-cocos2dx/3/example/Classes/RaptorExample.cpp +++ b/spine-cocos2dx/3/example/Classes/RaptorExample.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/example/Classes/RaptorExample.h b/spine-cocos2dx/3/example/Classes/RaptorExample.h index c8b1b3096..b03442aa6 100644 --- a/spine-cocos2dx/3/example/Classes/RaptorExample.h +++ b/spine-cocos2dx/3/example/Classes/RaptorExample.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/example/Classes/SpineboyExample.cpp b/spine-cocos2dx/3/example/Classes/SpineboyExample.cpp index 42725d6d4..8e882b9fb 100644 --- a/spine-cocos2dx/3/example/Classes/SpineboyExample.cpp +++ b/spine-cocos2dx/3/example/Classes/SpineboyExample.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -102,4 +103,3 @@ void SpineboyExample::update (float deltaTime) { // Test releasing memory. // Director::getInstance()->replaceScene(SpineboyExample::scene()); } - diff --git a/spine-cocos2dx/3/example/Classes/SpineboyExample.h b/spine-cocos2dx/3/example/Classes/SpineboyExample.h index 641834609..d32f2e63d 100644 --- a/spine-cocos2dx/3/example/Classes/SpineboyExample.h +++ b/spine-cocos2dx/3/example/Classes/SpineboyExample.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/src/spine/PolygonBatch.cpp b/spine-cocos2dx/3/src/spine/PolygonBatch.cpp index 26e35a77d..63b1bbf1b 100644 --- a/spine-cocos2dx/3/src/spine/PolygonBatch.cpp +++ b/spine-cocos2dx/3/src/spine/PolygonBatch.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/src/spine/PolygonBatch.h b/spine-cocos2dx/3/src/spine/PolygonBatch.h index 78bd22f23..5fa028e30 100644 --- a/spine-cocos2dx/3/src/spine/PolygonBatch.h +++ b/spine-cocos2dx/3/src/spine/PolygonBatch.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp b/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp index bdaccddd4..ef289feec 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp +++ b/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -70,8 +71,8 @@ void disposeTrackEntry (spTrackEntry* entry) { // -SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonData) { - SkeletonAnimation* node = new SkeletonAnimation(skeletonData); +SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData) { + SkeletonAnimation* node = new SkeletonAnimation(skeletonData, ownsSkeletonData); node->autorelease(); return node; } @@ -102,8 +103,8 @@ SkeletonAnimation::SkeletonAnimation () : SkeletonRenderer() { } -SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData) - : SkeletonRenderer(skeletonData) { +SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData, bool ownsSkeletonData) + : SkeletonRenderer(skeletonData, ownsSkeletonData) { initialize(); } diff --git a/spine-cocos2dx/3/src/spine/SkeletonAnimation.h b/spine-cocos2dx/3/src/spine/SkeletonAnimation.h index 2456bd32e..a140e3a83 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonAnimation.h +++ b/spine-cocos2dx/3/src/spine/SkeletonAnimation.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -46,7 +47,7 @@ typedef std::function EventListener; * played later. */ class SkeletonAnimation: public SkeletonRenderer { public: - static SkeletonAnimation* createWithData (spSkeletonData* skeletonData); + static SkeletonAnimation* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); static SkeletonAnimation* createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); static SkeletonAnimation* createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); @@ -78,7 +79,7 @@ public: CC_CONSTRUCTOR_ACCESS: SkeletonAnimation (); - SkeletonAnimation (spSkeletonData* skeletonData); + SkeletonAnimation (spSkeletonData* skeletonData, bool ownsSkeletonData = false); SkeletonAnimation (const std::string&skeletonDataFile, spAtlas* atlas, float scale = 1); SkeletonAnimation (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); virtual ~SkeletonAnimation (); diff --git a/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp index b1d4b6c3b..10bef4739 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp +++ b/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -61,11 +62,6 @@ SkeletonRenderer* SkeletonRenderer::createWithFile (const std::string& skeletonD } void SkeletonRenderer::initialize () { - _atlas = 0; - _debugSlots = false; - _debugBones = false; - _timeScale = 1; - _worldVertices = MALLOC(float, 1000); // Max number of vertices per mesh. _batch = PolygonBatch::createWithCapacity(2000); // Max number of vertices and triangles per batch. @@ -82,18 +78,22 @@ void SkeletonRenderer::setSkeletonData (spSkeletonData *skeletonData, bool ownsS _ownsSkeletonData = ownsSkeletonData; } -SkeletonRenderer::SkeletonRenderer () { +SkeletonRenderer::SkeletonRenderer () + : _atlas(0), _debugSlots(false), _debugBones(false), _timeScale(1) { } -SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) { +SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) + : _atlas(0), _debugSlots(false), _debugBones(false), _timeScale(1) { initWithData(skeletonData, ownsSkeletonData); } -SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { +SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale) + : _atlas(0), _debugSlots(false), _debugBones(false), _timeScale(1) { initWithFile(skeletonDataFile, atlas, scale); } -SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { +SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) + : _atlas(0), _debugSlots(false), _debugBones(false), _timeScale(1) { initWithFile(skeletonDataFile, atlasFile, scale); } @@ -158,7 +158,7 @@ void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFl _skeleton->b = nodeColor.b / (float)255; _skeleton->a = getDisplayedOpacity() / (float)255; - int additive = -1; + int blendMode = -1; Color4B color; const float* uvs = nullptr; int verticesCount = 0; @@ -215,10 +215,22 @@ void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFl default: ; } if (texture) { - if (slot->data->additiveBlending != additive) { + if (slot->data->blendMode != blendMode) { _batch->flush(); - GL::blendFunc(_blendFunc.src, slot->data->additiveBlending ? GL_ONE : _blendFunc.dst); - additive = slot->data->additiveBlending; + blendMode = slot->data->blendMode; + switch (slot->data->blendMode) { + case SP_BLEND_MODE_ADDITIVE: + GL::blendFunc(_premultipliedAlpha ? GL_ONE : GL_SRC_ALPHA, GL_ONE); + break; + case SP_BLEND_MODE_MULTIPLY: + GL::blendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); + break; + case SP_BLEND_MODE_SCREEN: + GL::blendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR); + break; + default: + GL::blendFunc(_blendFunc.src, _blendFunc.dst); + } } color.a = _skeleton->a * slot->a * a * 255; float multiplier = _premultipliedAlpha ? color.a : 255; @@ -346,14 +358,20 @@ spSlot* SkeletonRenderer::findSlot (const std::string& slotName) const { } bool SkeletonRenderer::setSkin (const std::string& skinName) { - return spSkeleton_setSkinByName(_skeleton, skinName.c_str()) ? true : false; + return spSkeleton_setSkinByName(_skeleton, skinName.empty() ? 0 : skinName.c_str()) ? true : false; +} +bool SkeletonRenderer::setSkin (const char* skinName) { + return spSkeleton_setSkinByName(_skeleton, skinName) ? true : false; } spAttachment* SkeletonRenderer::getAttachment (const std::string& slotName, const std::string& attachmentName) const { return spSkeleton_getAttachmentForSlotName(_skeleton, slotName.c_str(), attachmentName.c_str()); } bool SkeletonRenderer::setAttachment (const std::string& slotName, const std::string& attachmentName) { - return spSkeleton_setAttachment(_skeleton, slotName.c_str(), attachmentName.c_str()) ? true : false; + return spSkeleton_setAttachment(_skeleton, slotName.c_str(), attachmentName.empty() ? 0 : attachmentName.c_str()) ? true : false; +} +bool SkeletonRenderer::setAttachment (const std::string& slotName, const char* attachmentName) { + return spSkeleton_setAttachment(_skeleton, slotName.c_str(), attachmentName) ? true : false; } spSkeleton* SkeletonRenderer::getSkeleton () { @@ -382,11 +400,17 @@ bool SkeletonRenderer::getDebugBonesEnabled () const { } void SkeletonRenderer::onEnter () { +#if CC_ENABLE_SCRIPT_BINDING + if (_scriptType == kScriptTypeJavascript && ScriptEngineManager::sendNodeEventToJSExtended(this, kNodeOnEnter)) return; +#endif Node::onEnter(); scheduleUpdate(); } void SkeletonRenderer::onExit () { +#if CC_ENABLE_SCRIPT_BINDING + if (_scriptType == kScriptTypeJavascript && ScriptEngineManager::sendNodeEventToJSExtended(this, kNodeOnExit)) return; +#endif Node::onExit(); unscheduleUpdate(); } diff --git a/spine-cocos2dx/3/src/spine/SkeletonRenderer.h b/spine-cocos2dx/3/src/spine/SkeletonRenderer.h index 6cabc4ca9..50200613d 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonRenderer.h +++ b/spine-cocos2dx/3/src/spine/SkeletonRenderer.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -77,19 +78,24 @@ public: /* Sets the skin used to look up attachments not found in the SkeletonData defaultSkin. Attachments from the new skin are * attached if the corresponding attachment from the old skin was attached. Returns false if the skin was not found. - * @param skin May be 0.*/ + * @param skin May be empty string ("") for no skin.*/ bool setSkin (const std::string& skinName); + /** @param skin May be 0 for no skin.*/ + bool setSkin (const char* skinName); /* Returns 0 if the slot or attachment was not found. */ spAttachment* getAttachment (const std::string& slotName, const std::string& attachmentName) const; - /* Returns false if the slot or attachment was not found. */ + /* Returns false if the slot or attachment was not found. + * @param attachmentName May be empty string ("") for no attachment. */ bool setAttachment (const std::string& slotName, const std::string& attachmentName); + /* @param attachmentName May be 0 for no attachment. */ + bool setAttachment (const std::string& slotName, const char* attachmentName); - // --- BlendProtocol - virtual void setBlendFunc (const cocos2d::BlendFunc& blendFunc); - virtual const cocos2d::BlendFunc& getBlendFunc () const; - virtual void setOpacityModifyRGB (bool value); - virtual bool isOpacityModifyRGB () const; + // --- BlendProtocol + virtual void setBlendFunc (const cocos2d::BlendFunc& blendFunc)override; + virtual const cocos2d::BlendFunc& getBlendFunc () const override; + virtual void setOpacityModifyRGB (bool value) override; + virtual bool isOpacityModifyRGB () const override; CC_CONSTRUCTOR_ACCESS: SkeletonRenderer (); diff --git a/spine-cocos2dx/3/src/spine/spine-cocos2dx.cpp b/spine-cocos2dx/3/src/spine/spine-cocos2dx.cpp index 5ab0c1d71..2efd39b2b 100644 --- a/spine-cocos2dx/3/src/spine/spine-cocos2dx.cpp +++ b/spine-cocos2dx/3/src/spine/spine-cocos2dx.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-cocos2dx/3/src/spine/spine-cocos2dx.h b/spine-cocos2dx/3/src/spine/spine-cocos2dx.h index 3409012f3..f96eba024 100644 --- a/spine-cocos2dx/3/src/spine/spine-cocos2dx.h +++ b/spine-cocos2dx/3/src/spine/spine-cocos2dx.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-corona/LICENSE b/spine-corona/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-corona/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-corona/README.md b/spine-corona/README.md index 4ce4eacc6..878a8ef1b 100644 --- a/spine-corona/README.md +++ b/spine-corona/README.md @@ -2,6 +2,12 @@ The spine-corona runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [Corona](http://coronalabs.com/products/corona-sdk/). spine-corona is based on [spine-lua](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-lua). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-corona/spine-corona/spine.lua b/spine-corona/spine-corona/spine.lua index 9231f6f50..ff6c21afd 100644 --- a/spine-corona/spine-corona/spine.lua +++ b/spine-corona/spine-corona/spine.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, @@ -52,6 +53,7 @@ spine.AnimationState = require "spine-lua.AnimationState" spine.EventData = require "spine-lua.EventData" spine.Event = require "spine-lua.Event" spine.SkeletonBounds = require "spine-lua.SkeletonBounds" +spine.BlendMode = require "spine-lua.BlendMode" spine.utils.readFile = function (fileName, base) if not base then base = system.ResourceDirectory end @@ -125,7 +127,15 @@ function spine.Skeleton.new (skeletonData, group) print("Error creating image: " .. attachment.name) image = spine.Skeleton.failed end - if slot.data.additiveBlending then image.blendMode = "add" end + if slot.data.blendMode == spine.BlendMode.normal then + image.blendMode = "normal" + elseif slot.data.blendMode == spine.BlendMode.additive then + image.blendMode = "add" + elseif slot.data.blendMode == spine.BlendMode.multiply then + image.blendMode = "multiply" + elseif slot.data.blendMode == spine.BlendMode.screen then + image.blendMode = "screen" + end images[slot] = image end -- Position image based on attachment and bone. diff --git a/spine-csharp/LICENSE b/spine-csharp/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-csharp/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-csharp/README.md b/spine-csharp/README.md index 16cead37a..d1f78e15f 100644 --- a/spine-csharp/README.md +++ b/spine-csharp/README.md @@ -2,6 +2,12 @@ The spine-csharp runtime provides functionality to load and manipulate [Spine](http://esotericsoftware.com) skeletal animation data using C# (C Sharp). It does not perform rendering but can be extended to enable Spine animations for other C#-based projects. +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-csharp/spine-csharp.csproj b/spine-csharp/spine-csharp.csproj index 9cbdb5373..7cc986591 100644 --- a/spine-csharp/spine-csharp.csproj +++ b/spine-csharp/spine-csharp.csproj @@ -64,6 +64,7 @@ + @@ -75,6 +76,7 @@ + diff --git a/spine-csharp/spine-csharp_xna.csproj b/spine-csharp/spine-csharp_xna.csproj index 85f5f33ca..df66b3e9e 100644 --- a/spine-csharp/spine-csharp_xna.csproj +++ b/spine-csharp/spine-csharp_xna.csproj @@ -103,6 +103,7 @@ + @@ -111,6 +112,7 @@ + diff --git a/spine-csharp/src/Animation.cs b/spine-csharp/src/Animation.cs index 672126e43..eb0b695c9 100644 --- a/spine-csharp/src/Animation.cs +++ b/spine-csharp/src/Animation.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -33,15 +34,15 @@ using System.Collections.Generic; namespace Spine { public class Animation { - internal List timelines; + internal ExposedList timelines; internal float duration; internal String name; public String Name { get { return name; } } - public List Timelines { get { return timelines; } set { timelines = value; } } + public ExposedList Timelines { get { return timelines; } set { timelines = value; } } public float Duration { get { return duration; } set { duration = value; } } - public Animation (String name, List timelines, float duration) { + public Animation (String name, ExposedList timelines, float duration) { if (name == null) throw new ArgumentNullException("name cannot be null."); if (timelines == null) throw new ArgumentNullException("timelines cannot be null."); this.name = name; @@ -52,7 +53,7 @@ namespace Spine { /// Poses the skeleton at the specified time for this animation. /// The last time the animation was applied. /// Any triggered events are added. - public void Apply (Skeleton skeleton, float lastTime, float time, bool loop, List events) { + public void Apply (Skeleton skeleton, float lastTime, float time, bool loop, ExposedList events) { if (skeleton == null) throw new ArgumentNullException("skeleton cannot be null."); if (loop && duration != 0) { @@ -60,16 +61,16 @@ namespace Spine { lastTime %= duration; } - List timelines = this.timelines; + ExposedList timelines = this.timelines; for (int i = 0, n = timelines.Count; i < n; i++) - timelines[i].Apply(skeleton, lastTime, time, events, 1); + timelines.Items[i].Apply(skeleton, lastTime, time, events, 1); } /// Poses the skeleton at the specified time for this animation mixed with the current pose. /// The last time the animation was applied. /// Any triggered events are added. /// The amount of this animation that affects the current pose. - public void Mix (Skeleton skeleton, float lastTime, float time, bool loop, List events, float alpha) { + public void Mix (Skeleton skeleton, float lastTime, float time, bool loop, ExposedList events, float alpha) { if (skeleton == null) throw new ArgumentNullException("skeleton cannot be null."); if (loop && duration != 0) { @@ -77,9 +78,9 @@ namespace Spine { lastTime %= duration; } - List timelines = this.timelines; + ExposedList timelines = this.timelines; for (int i = 0, n = timelines.Count; i < n; i++) - timelines[i].Apply(skeleton, lastTime, time, events, alpha); + timelines.Items[i].Apply(skeleton, lastTime, time, events, alpha); } /// After the first and before the last entry. @@ -124,7 +125,7 @@ namespace Spine { public interface Timeline { /// Sets the value(s) for the specified time. /// May be null to not collect fired events. - void Apply (Skeleton skeleton, float lastTime, float time, List events, float alpha); + void Apply (Skeleton skeleton, float lastTime, float time, ExposedList events, float alpha); } /// Base class for frames that use an interpolation bezier curve. @@ -139,7 +140,7 @@ namespace Spine { curves = new float[(frameCount - 1) * BEZIER_SIZE]; } - abstract public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha); + abstract public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha); public void SetLinear (int frameIndex) { curves[frameIndex * BEZIER_SIZE] = LINEAR; @@ -229,11 +230,11 @@ namespace Spine { frames[frameIndex + 1] = angle; } - override public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + override public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { float[] frames = this.frames; if (time < frames[0]) return; // Time is before first frame. - Bone bone = skeleton.bones[boneIndex]; + Bone bone = skeleton.bones.Items[boneIndex]; float amount; @@ -292,11 +293,11 @@ namespace Spine { frames[frameIndex + 2] = y; } - override public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + override public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { float[] frames = this.frames; if (time < frames[0]) return; // Time is before first frame. - Bone bone = skeleton.bones[boneIndex]; + Bone bone = skeleton.bones.Items[boneIndex]; if (time >= frames[frames.Length - 3]) { // Time is after last frame. bone.x += (bone.data.x + frames[frames.Length - 2] - bone.x) * alpha; @@ -322,11 +323,11 @@ namespace Spine { : base(frameCount) { } - override public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + override public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { float[] frames = this.frames; if (time < frames[0]) return; // Time is before first frame. - Bone bone = skeleton.bones[boneIndex]; + Bone bone = skeleton.bones.Items[boneIndex]; if (time >= frames[frames.Length - 3]) { // Time is after last frame. bone.scaleX += (bone.data.scaleX * frames[frames.Length - 2] - bone.scaleX) * alpha; bone.scaleY += (bone.data.scaleY * frames[frames.Length - 1] - bone.scaleY) * alpha; @@ -365,7 +366,7 @@ namespace Spine { } /// Sets the time and value of the specified keyframe. - public void setFrame (int frameIndex, float time, float r, float g, float b, float a) { + public void SetFrame (int frameIndex, float time, float r, float g, float b, float a) { frameIndex *= 5; frames[frameIndex] = time; frames[frameIndex + 1] = r; @@ -374,7 +375,7 @@ namespace Spine { frames[frameIndex + 4] = a; } - override public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + override public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { float[] frames = this.frames; if (time < frames[0]) return; // Time is before first frame. @@ -402,7 +403,7 @@ namespace Spine { b = prevFrameB + (frames[frameIndex + FRAME_B] - prevFrameB) * percent; a = prevFrameA + (frames[frameIndex + FRAME_A] - prevFrameA) * percent; } - Slot slot = skeleton.slots[slotIndex]; + Slot slot = skeleton.slots.Items[slotIndex]; if (alpha < 1) { slot.r += (r - slot.r) * alpha; slot.g += (g - slot.g) * alpha; @@ -433,12 +434,12 @@ namespace Spine { } /// Sets the time and value of the specified keyframe. - public void setFrame (int frameIndex, float time, String attachmentName) { + public void SetFrame (int frameIndex, float time, String attachmentName) { frames[frameIndex] = time; attachmentNames[frameIndex] = attachmentName; } - public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { float[] frames = this.frames; if (time < frames[0]) { if (lastTime > time) Apply(skeleton, lastTime, int.MaxValue, null, 0); @@ -450,7 +451,7 @@ namespace Spine { if (frames[frameIndex] < lastTime) return; String attachmentName = attachmentNames[frameIndex]; - skeleton.slots[slotIndex].Attachment = + skeleton.slots.Items[slotIndex].Attachment = attachmentName == null ? null : skeleton.GetAttachment(slotIndex, attachmentName); } } @@ -469,13 +470,13 @@ namespace Spine { } /// Sets the time and value of the specified keyframe. - public void setFrame (int frameIndex, float time, Event e) { + public void SetFrame (int frameIndex, float time, Event e) { frames[frameIndex] = time; events[frameIndex] = e; } /// Fires events for frames > lastTime and <= time. - public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { if (firedEvents == null) return; float[] frames = this.frames; int frameCount = frames.Length; @@ -518,12 +519,12 @@ namespace Spine { /// Sets the time and value of the specified keyframe. /// May be null to use bind pose draw order. - public void setFrame (int frameIndex, float time, int[] drawOrder) { + public void SetFrame (int frameIndex, float time, int[] drawOrder) { frames[frameIndex] = time; drawOrders[frameIndex] = drawOrder; } - public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { float[] frames = this.frames; if (time < frames[0]) return; // Time is before first frame. @@ -533,15 +534,16 @@ namespace Spine { else frameIndex = Animation.binarySearch(frames, time) - 1; - List drawOrder = skeleton.drawOrder; - List slots = skeleton.slots; + ExposedList drawOrder = skeleton.drawOrder; + ExposedList slots = skeleton.slots; int[] drawOrderToSetupIndex = drawOrders[frameIndex]; if (drawOrderToSetupIndex == null) { drawOrder.Clear(); - drawOrder.AddRange(slots); + for (int i = 0, n = slots.Count; i < n; i++) + drawOrder.Add(slots.Items[i]); } else { for (int i = 0, n = drawOrderToSetupIndex.Length; i < n; i++) - drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + drawOrder.Items[i] = slots.Items[drawOrderToSetupIndex[i]]; } } } @@ -564,13 +566,13 @@ namespace Spine { } /// Sets the time and value of the specified keyframe. - public void setFrame (int frameIndex, float time, float[] vertices) { + public void SetFrame (int frameIndex, float time, float[] vertices) { frames[frameIndex] = time; frameVertices[frameIndex] = vertices; } - override public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { - Slot slot = skeleton.slots[slotIndex]; + override public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { + Slot slot = skeleton.slots.Items[slotIndex]; if (slot.attachment != attachment) return; float[] frames = this.frames; @@ -641,18 +643,18 @@ namespace Spine { } /** Sets the time, mix and bend direction of the specified keyframe. */ - public void setFrame (int frameIndex, float time, float mix, int bendDirection) { + public void SetFrame (int frameIndex, float time, float mix, int bendDirection) { frameIndex *= 3; frames[frameIndex] = time; frames[frameIndex + 1] = mix; frames[frameIndex + 2] = bendDirection; } - override public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + override public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { float[] frames = this.frames; if (time < frames[0]) return; // Time is before first frame. - IkConstraint ikConstraint = skeleton.ikConstraints[ikConstraintIndex]; + IkConstraint ikConstraint = skeleton.ikConstraints.Items[ikConstraintIndex]; if (time >= frames[frames.Length - 3]) { // Time is after last frame. ikConstraint.mix += (frames[frames.Length - 2] - ikConstraint.mix) * alpha; @@ -692,7 +694,7 @@ namespace Spine { frames[frameIndex + 1] = flip ? 1 : 0; } - public void Apply (Skeleton skeleton, float lastTime, float time, List firedEvents, float alpha) { + public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { float[] frames = this.frames; if (time < frames[0]) { if (lastTime > time) Apply(skeleton, lastTime, int.MaxValue, null, 0); @@ -703,7 +705,7 @@ namespace Spine { int frameIndex = (time >= frames[frames.Length - 2] ? frames.Length : Animation.binarySearch(frames, time, 2)) - 2; if (frames[frameIndex] < lastTime) return; - SetFlip(skeleton.bones[boneIndex], frames[frameIndex + 1] != 0); + SetFlip(skeleton.bones.Items[boneIndex], frames[frameIndex + 1] != 0); } virtual protected void SetFlip (Bone bone, bool flip) { diff --git a/spine-csharp/src/AnimationState.cs b/spine-csharp/src/AnimationState.cs index 3a774b330..4d34a2123 100644 --- a/spine-csharp/src/AnimationState.cs +++ b/spine-csharp/src/AnimationState.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -35,21 +36,21 @@ using System.Text; namespace Spine { public class AnimationState { private AnimationStateData data; - private List tracks = new List(); - private List events = new List(); + private ExposedList tracks = new ExposedList(); + private ExposedList events = new ExposedList(); private float timeScale = 1; public AnimationStateData Data { get { return data; } } public float TimeScale { get { return timeScale; } set { timeScale = value; } } - public delegate void StartEndDelegate(AnimationState state, int trackIndex); + public delegate void StartEndDelegate (AnimationState state, int trackIndex); public event StartEndDelegate Start; public event StartEndDelegate End; - public delegate void EventDelegate(AnimationState state, int trackIndex, Event e); + public delegate void EventDelegate (AnimationState state, int trackIndex, Event e); public event EventDelegate Event; - - public delegate void CompleteDelegate(AnimationState state, int trackIndex, int loopCount); + + public delegate void CompleteDelegate (AnimationState state, int trackIndex, int loopCount); public event CompleteDelegate Complete; public AnimationState (AnimationStateData data) { @@ -60,7 +61,7 @@ namespace Spine { public void Update (float delta) { delta *= timeScale; for (int i = 0; i < tracks.Count; i++) { - TrackEntry current = tracks[i]; + TrackEntry current = tracks.Items[i]; if (current == null) continue; float trackDelta = delta * current.timeScale; @@ -92,10 +93,10 @@ namespace Spine { } public void Apply (Skeleton skeleton) { - List events = this.events; + ExposedList events = this.events; for (int i = 0; i < tracks.Count; i++) { - TrackEntry current = tracks[i]; + TrackEntry current = tracks.Items[i]; if (current == null) continue; events.Clear(); @@ -124,7 +125,7 @@ namespace Spine { } for (int ii = 0, nn = events.Count; ii < nn; ii++) { - Event e = events[ii]; + Event e = events.Items[ii]; current.OnEvent(this, i, e); if (Event != null) Event(this, i, e); } @@ -141,17 +142,17 @@ namespace Spine { public void ClearTrack (int trackIndex) { if (trackIndex >= tracks.Count) return; - TrackEntry current = tracks[trackIndex]; + TrackEntry current = tracks.Items[trackIndex]; if (current == null) return; current.OnEnd(this, trackIndex); if (End != null) End(this, trackIndex); - tracks[trackIndex] = null; + tracks.Items[trackIndex] = null; } private TrackEntry ExpandToIndex (int index) { - if (index < tracks.Count) return tracks[index]; + if (index < tracks.Count) return tracks.Items[index]; while (index >= tracks.Count) tracks.Add(null); return null; @@ -177,7 +178,7 @@ namespace Spine { } } - tracks[index] = entry; + tracks.Items[index] = entry; entry.OnStart(this, index); if (Start != null) Start(this, index); @@ -223,7 +224,7 @@ namespace Spine { last = last.next; last.next = entry; } else - tracks[trackIndex] = entry; + tracks.Items[trackIndex] = entry; if (delay <= 0) { if (last != null) @@ -239,13 +240,13 @@ namespace Spine { /// May be null. public TrackEntry GetCurrent (int trackIndex) { if (trackIndex >= tracks.Count) return null; - return tracks[trackIndex]; + return tracks.Items[trackIndex]; } override public String ToString () { StringBuilder buffer = new StringBuilder(); for (int i = 0, n = tracks.Count; i < n; i++) { - TrackEntry entry = tracks[i]; + TrackEntry entry = tracks.Items[i]; if (entry == null) continue; if (buffer.Length > 0) buffer.Append(", "); buffer.Append(entry.ToString()); diff --git a/spine-csharp/src/AnimationStateData.cs b/spine-csharp/src/AnimationStateData.cs index f2fa86630..eea87429e 100644 --- a/spine-csharp/src/AnimationStateData.cs +++ b/spine-csharp/src/AnimationStateData.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Atlas.cs b/spine-csharp/src/Atlas.cs index 3242b9d04..d6f0227d5 100644 --- a/spine-csharp/src/Atlas.cs +++ b/spine-csharp/src/Atlas.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -68,7 +69,7 @@ namespace Spine { using (StreamReader reader = new StreamReader(stream)) { #else - using (StreamReader reader = new StreamReader(path)) { + using (StreamReader reader = new StreamReader(path)) { #endif try { Load(reader, Path.GetDirectoryName(path), textureLoader); diff --git a/spine-csharp/src/Attachments/AtlasAttachmentLoader.cs b/spine-csharp/src/Attachments/AtlasAttachmentLoader.cs index 4cd6d02af..9fd84ab1f 100644 --- a/spine-csharp/src/Attachments/AtlasAttachmentLoader.cs +++ b/spine-csharp/src/Attachments/AtlasAttachmentLoader.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -96,7 +97,7 @@ namespace Spine { return new BoundingBoxAttachment(name); } - public AtlasRegion FindRegion(string name) { + public AtlasRegion FindRegion (string name) { AtlasRegion region; for (int i = 0; i < atlasArray.Length; i++) { diff --git a/spine-csharp/src/Attachments/Attachment.cs b/spine-csharp/src/Attachments/Attachment.cs index f54bf4976..551785b69 100644 --- a/spine-csharp/src/Attachments/Attachment.cs +++ b/spine-csharp/src/Attachments/Attachment.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Attachments/AttachmentLoader.cs b/spine-csharp/src/Attachments/AttachmentLoader.cs index 8630f4b54..69f462748 100644 --- a/spine-csharp/src/Attachments/AttachmentLoader.cs +++ b/spine-csharp/src/Attachments/AttachmentLoader.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Attachments/AttachmentType.cs b/spine-csharp/src/Attachments/AttachmentType.cs index 3ae01ae58..2f5d1c8fd 100644 --- a/spine-csharp/src/Attachments/AttachmentType.cs +++ b/spine-csharp/src/Attachments/AttachmentType.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Attachments/BoundingBoxAttachment.cs b/spine-csharp/src/Attachments/BoundingBoxAttachment.cs index 16c670670..3a8be7934 100644 --- a/spine-csharp/src/Attachments/BoundingBoxAttachment.cs +++ b/spine-csharp/src/Attachments/BoundingBoxAttachment.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Attachments/MeshAttachment.cs b/spine-csharp/src/Attachments/MeshAttachment.cs index eee732741..488b76b14 100644 --- a/spine-csharp/src/Attachments/MeshAttachment.cs +++ b/spine-csharp/src/Attachments/MeshAttachment.cs @@ -1,25 +1,26 @@ -/****************************************************************************** +/****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Attachments/RegionAttachment.cs b/spine-csharp/src/Attachments/RegionAttachment.cs index ba6fc82ed..72bdb058e 100644 --- a/spine-csharp/src/Attachments/RegionAttachment.cs +++ b/spine-csharp/src/Attachments/RegionAttachment.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs b/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs index fc7de7e00..1e99fab38 100644 --- a/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs +++ b/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs @@ -1,25 +1,26 @@ -/****************************************************************************** +/****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -95,7 +96,7 @@ namespace Spine { public void ComputeWorldVertices (Slot slot, float[] worldVertices) { Skeleton skeleton = slot.bone.skeleton; - List skeletonBones = skeleton.bones; + ExposedList skeletonBones = skeleton.bones; float x = skeleton.x, y = skeleton.y; float[] weights = this.weights; int[] bones = this.bones; @@ -104,7 +105,7 @@ namespace Spine { float wx = 0, wy = 0; int nn = bones[v++] + v; for (; v < nn; v++, b += 3) { - Bone bone = skeletonBones[bones[v]]; + Bone bone = skeletonBones.Items[bones[v]]; float vx = weights[b], vy = weights[b + 1], weight = weights[b + 2]; wx += (vx * bone.m00 + vy * bone.m01 + bone.worldX) * weight; wy += (vx * bone.m10 + vy * bone.m11 + bone.worldY) * weight; @@ -118,7 +119,7 @@ namespace Spine { float wx = 0, wy = 0; int nn = bones[v++] + v; for (; v < nn; v++, b += 3, f += 2) { - Bone bone = skeletonBones[bones[v]]; + Bone bone = skeletonBones.Items[bones[v]]; float vx = weights[b] + ffd[f], vy = weights[b + 1] + ffd[f + 1], weight = weights[b + 2]; wx += (vx * bone.m00 + vy * bone.m01 + bone.worldX) * weight; wy += (vx * bone.m10 + vy * bone.m11 + bone.worldY) * weight; diff --git a/spine-csharp/src/BlendMode.cs b/spine-csharp/src/BlendMode.cs new file mode 100644 index 000000000..6c53e0049 --- /dev/null +++ b/spine-csharp/src/BlendMode.cs @@ -0,0 +1,36 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +namespace Spine { + public enum BlendMode { + normal, additive, multiply, screen + } +} diff --git a/spine-csharp/src/Bone.cs b/spine-csharp/src/Bone.cs index 86546b2cd..6d92871a8 100644 --- a/spine-csharp/src/Bone.cs +++ b/spine-csharp/src/Bone.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -32,13 +33,13 @@ using System; using System.Collections.Generic; namespace Spine { - public class Bone{ + public class Bone { static public bool yDown; internal BoneData data; internal Skeleton skeleton; internal Bone parent; - internal List children = new List(); + internal ExposedList children = new ExposedList(); internal float x, y, rotation, rotationIK, scaleX, scaleY; internal bool flipX, flipY; internal float m00, m01, m10, m11; @@ -48,7 +49,7 @@ namespace Spine { public BoneData Data { get { return data; } } public Skeleton Skeleton { get { return skeleton; } } public Bone Parent { get { return parent; } } - public List Children { get { return children; } } + public ExposedList Children { get { return children; } } public float X { get { return x; } set { x = value; } } public float Y { get { return y; } set { y = value; } } /// The forward kinetics rotation. diff --git a/spine-csharp/src/BoneData.cs b/spine-csharp/src/BoneData.cs index 7ab9f7fe9..cc1ebacec 100644 --- a/spine-csharp/src/BoneData.cs +++ b/spine-csharp/src/BoneData.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Event.cs b/spine-csharp/src/Event.cs index 36514e7c0..f60710448 100644 --- a/spine-csharp/src/Event.cs +++ b/spine-csharp/src/Event.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/EventData.cs b/spine-csharp/src/EventData.cs index 4f5d745ff..187bb8219 100644 --- a/spine-csharp/src/EventData.cs +++ b/spine-csharp/src/EventData.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/ExposedList.cs b/spine-csharp/src/ExposedList.cs new file mode 100644 index 000000000..45287c0d7 --- /dev/null +++ b/spine-csharp/src/ExposedList.cs @@ -0,0 +1,583 @@ +// +// System.Collections.Generic.List +// +// Authors: +// Ben Maurer (bmaurer@ximian.com) +// Martin Baulig (martin@ximian.com) +// Carlos Alberto Cortez (calberto.cortez@gmail.com) +// David Waite (mass@akuma.org) +// +// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com) +// Copyright (C) 2005 David Waite +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; + +namespace Spine { + [Serializable] + [DebuggerDisplay("Count={Count}")] + public class ExposedList : IEnumerable { + public T[] Items; + public int Count; + private const int DefaultCapacity = 4; + private static readonly T[] EmptyArray = new T[0]; + private int version; + + public ExposedList () { + Items = EmptyArray; + } + + public ExposedList (IEnumerable collection) { + CheckCollection(collection); + + // initialize to needed size (if determinable) + ICollection c = collection as ICollection; + if (c == null) { + Items = EmptyArray; + AddEnumerable(collection); + } else { + Items = new T[c.Count]; + AddCollection(c); + } + } + + public ExposedList (int capacity) { + if (capacity < 0) + throw new ArgumentOutOfRangeException("capacity"); + Items = new T[capacity]; + } + + internal ExposedList (T[] data, int size) { + Items = data; + Count = size; + } + + public void Add (T item) { + // If we check to see if we need to grow before trying to grow + // we can speed things up by 25% + if (Count == Items.Length) + GrowIfNeeded(1); + Items[Count++] = item; + version++; + } + + public void GrowIfNeeded (int newCount) { + int minimumSize = Count + newCount; + if (minimumSize > Items.Length) + Capacity = Math.Max(Math.Max(Capacity * 2, DefaultCapacity), minimumSize); + } + + private void CheckRange (int idx, int count) { + if (idx < 0) + throw new ArgumentOutOfRangeException("index"); + + if (count < 0) + throw new ArgumentOutOfRangeException("count"); + + if ((uint)idx + (uint)count > (uint)Count) + throw new ArgumentException("index and count exceed length of list"); + } + + private void AddCollection (ICollection collection) { + int collectionCount = collection.Count; + if (collectionCount == 0) + return; + + GrowIfNeeded(collectionCount); + collection.CopyTo(Items, Count); + Count += collectionCount; + } + + private void AddEnumerable (IEnumerable enumerable) { + foreach (T t in enumerable) { + Add(t); + } + } + + public void AddRange (IEnumerable collection) { + CheckCollection(collection); + + ICollection c = collection as ICollection; + if (c != null) + AddCollection(c); + else + AddEnumerable(collection); + version++; + } + + public int BinarySearch (T item) { + return Array.BinarySearch(Items, 0, Count, item); + } + + public int BinarySearch (T item, IComparer comparer) { + return Array.BinarySearch(Items, 0, Count, item, comparer); + } + + public int BinarySearch (int index, int count, T item, IComparer comparer) { + CheckRange(index, count); + return Array.BinarySearch(Items, index, count, item, comparer); + } + + public void Clear (bool clearArray = true) { + if (clearArray) + Array.Clear(Items, 0, Items.Length); + + Count = 0; + version++; + } + + public bool Contains (T item) { + return Array.IndexOf(Items, item, 0, Count) != -1; + } + + public ExposedList ConvertAll (Converter converter) { + if (converter == null) + throw new ArgumentNullException("converter"); + ExposedList u = new ExposedList(Count); + for (int i = 0; i < Count; i++) + u.Items[i] = converter(Items[i]); + + u.Count = Count; + return u; + } + + public void CopyTo (T[] array) { + Array.Copy(Items, 0, array, 0, Count); + } + + public void CopyTo (T[] array, int arrayIndex) { + Array.Copy(Items, 0, array, arrayIndex, Count); + } + + public void CopyTo (int index, T[] array, int arrayIndex, int count) { + CheckRange(index, count); + Array.Copy(Items, index, array, arrayIndex, count); + } + + public bool Exists (Predicate match) { + CheckMatch(match); + return GetIndex(0, Count, match) != -1; + } + + public T Find (Predicate match) { + CheckMatch(match); + int i = GetIndex(0, Count, match); + return (i != -1) ? Items[i] : default(T); + } + + private static void CheckMatch (Predicate match) { + if (match == null) + throw new ArgumentNullException("match"); + } + + public ExposedList FindAll (Predicate match) { + CheckMatch(match); + return FindAllList(match); + } + + private ExposedList FindAllList (Predicate match) { + ExposedList results = new ExposedList(); + for (int i = 0; i < Count; i++) + if (match(Items[i])) + results.Add(Items[i]); + + return results; + } + + public int FindIndex (Predicate match) { + CheckMatch(match); + return GetIndex(0, Count, match); + } + + public int FindIndex (int startIndex, Predicate match) { + CheckMatch(match); + CheckIndex(startIndex); + return GetIndex(startIndex, Count - startIndex, match); + } + + public int FindIndex (int startIndex, int count, Predicate match) { + CheckMatch(match); + CheckRange(startIndex, count); + return GetIndex(startIndex, count, match); + } + + private int GetIndex (int startIndex, int count, Predicate match) { + int end = startIndex + count; + for (int i = startIndex; i < end; i++) + if (match(Items[i])) + return i; + + return -1; + } + + public T FindLast (Predicate match) { + CheckMatch(match); + int i = GetLastIndex(0, Count, match); + return i == -1 ? default(T) : Items[i]; + } + + public int FindLastIndex (Predicate match) { + CheckMatch(match); + return GetLastIndex(0, Count, match); + } + + public int FindLastIndex (int startIndex, Predicate match) { + CheckMatch(match); + CheckIndex(startIndex); + return GetLastIndex(0, startIndex + 1, match); + } + + public int FindLastIndex (int startIndex, int count, Predicate match) { + CheckMatch(match); + int start = startIndex - count + 1; + CheckRange(start, count); + return GetLastIndex(start, count, match); + } + + private int GetLastIndex (int startIndex, int count, Predicate match) { + // unlike FindLastIndex, takes regular params for search range + for (int i = startIndex + count; i != startIndex; ) + if (match(Items[--i])) + return i; + return -1; + } + + public void ForEach (Action action) { + if (action == null) + throw new ArgumentNullException("action"); + for (int i = 0; i < Count; i++) + action(Items[i]); + } + + public Enumerator GetEnumerator () { + return new Enumerator(this); + } + + public ExposedList GetRange (int index, int count) { + CheckRange(index, count); + T[] tmpArray = new T[count]; + Array.Copy(Items, index, tmpArray, 0, count); + return new ExposedList(tmpArray, count); + } + + public int IndexOf (T item) { + return Array.IndexOf(Items, item, 0, Count); + } + + public int IndexOf (T item, int index) { + CheckIndex(index); + return Array.IndexOf(Items, item, index, Count - index); + } + + public int IndexOf (T item, int index, int count) { + if (index < 0) + throw new ArgumentOutOfRangeException("index"); + + if (count < 0) + throw new ArgumentOutOfRangeException("count"); + + if ((uint)index + (uint)count > (uint)Count) + throw new ArgumentOutOfRangeException("index and count exceed length of list"); + + return Array.IndexOf(Items, item, index, count); + } + + private void Shift (int start, int delta) { + if (delta < 0) + start -= delta; + + if (start < Count) + Array.Copy(Items, start, Items, start + delta, Count - start); + + Count += delta; + + if (delta < 0) + Array.Clear(Items, Count, -delta); + } + + private void CheckIndex (int index) { + if (index < 0 || (uint)index > (uint)Count) + throw new ArgumentOutOfRangeException("index"); + } + + public void Insert (int index, T item) { + CheckIndex(index); + if (Count == Items.Length) + GrowIfNeeded(1); + Shift(index, 1); + Items[index] = item; + version++; + } + + private void CheckCollection (IEnumerable collection) { + if (collection == null) + throw new ArgumentNullException("collection"); + } + + public void InsertRange (int index, IEnumerable collection) { + CheckCollection(collection); + CheckIndex(index); + if (collection == this) { + T[] buffer = new T[Count]; + CopyTo(buffer, 0); + GrowIfNeeded(Count); + Shift(index, buffer.Length); + Array.Copy(buffer, 0, Items, index, buffer.Length); + } else { + ICollection c = collection as ICollection; + if (c != null) + InsertCollection(index, c); + else + InsertEnumeration(index, collection); + } + version++; + } + + private void InsertCollection (int index, ICollection collection) { + int collectionCount = collection.Count; + GrowIfNeeded(collectionCount); + + Shift(index, collectionCount); + collection.CopyTo(Items, index); + } + + private void InsertEnumeration (int index, IEnumerable enumerable) { + foreach (T t in enumerable) + Insert(index++, t); + } + + public int LastIndexOf (T item) { + return Array.LastIndexOf(Items, item, Count - 1, Count); + } + + public int LastIndexOf (T item, int index) { + CheckIndex(index); + return Array.LastIndexOf(Items, item, index, index + 1); + } + + public int LastIndexOf (T item, int index, int count) { + if (index < 0) + throw new ArgumentOutOfRangeException("index", index, "index is negative"); + + if (count < 0) + throw new ArgumentOutOfRangeException("count", count, "count is negative"); + + if (index - count + 1 < 0) + throw new ArgumentOutOfRangeException("count", count, "count is too large"); + + return Array.LastIndexOf(Items, item, index, count); + } + + public bool Remove (T item) { + int loc = IndexOf(item); + if (loc != -1) + RemoveAt(loc); + + return loc != -1; + } + + public int RemoveAll (Predicate match) { + CheckMatch(match); + int i = 0; + int j = 0; + + // Find the first item to remove + for (i = 0; i < Count; i++) + if (match(Items[i])) + break; + + if (i == Count) + return 0; + + version++; + + // Remove any additional items + for (j = i + 1; j < Count; j++) { + if (!match(Items[j])) + Items[i++] = Items[j]; + } + if (j - i > 0) + Array.Clear(Items, i, j - i); + + Count = i; + return (j - i); + } + + public void RemoveAt (int index) { + if (index < 0 || (uint)index >= (uint)Count) + throw new ArgumentOutOfRangeException("index"); + Shift(index, -1); + Array.Clear(Items, Count, 1); + version++; + } + + public void RemoveRange (int index, int count) { + CheckRange(index, count); + if (count > 0) { + Shift(index, -count); + Array.Clear(Items, Count, count); + version++; + } + } + + public void Reverse () { + Array.Reverse(Items, 0, Count); + version++; + } + + public void Reverse (int index, int count) { + CheckRange(index, count); + Array.Reverse(Items, index, count); + version++; + } + + public void Sort () { + Array.Sort(Items, 0, Count, Comparer.Default); + version++; + } + + public void Sort (IComparer comparer) { + Array.Sort(Items, 0, Count, comparer); + version++; + } + + public void Sort (Comparison comparison) { + Array.Sort(Items, comparison); + version++; + } + + public void Sort (int index, int count, IComparer comparer) { + CheckRange(index, count); + Array.Sort(Items, index, count, comparer); + version++; + } + + public T[] ToArray () { + T[] t = new T[Count]; + Array.Copy(Items, t, Count); + + return t; + } + + public void TrimExcess () { + Capacity = Count; + } + + public bool TrueForAll (Predicate match) { + CheckMatch(match); + + for (int i = 0; i < Count; i++) + if (!match(Items[i])) + return false; + + return true; + } + + public int Capacity { + get { + return Items.Length; + } + set { + if ((uint)value < (uint)Count) + throw new ArgumentOutOfRangeException(); + + Array.Resize(ref Items, value); + } + } + + #region Interface implementations. + + IEnumerator IEnumerable.GetEnumerator () { + return GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator () { + return GetEnumerator(); + } + + #endregion + + [Serializable] + public struct Enumerator : IEnumerator, IDisposable { + private ExposedList l; + private int next; + private int ver; + private T current; + + internal Enumerator (ExposedList l) + : this() { + this.l = l; + ver = l.version; + } + + public void Dispose () { + l = null; + } + + private void VerifyState () { + if (l == null) + throw new ObjectDisposedException(GetType().FullName); + if (ver != l.version) + throw new InvalidOperationException( + "Collection was modified; enumeration operation may not execute."); + } + + public bool MoveNext () { + VerifyState(); + + if (next < 0) + return false; + + if (next < l.Count) { + current = l.Items[next++]; + return true; + } + + next = -1; + return false; + } + + public T Current { + get { + return current; + } + } + + void IEnumerator.Reset () { + VerifyState(); + next = 0; + } + + object IEnumerator.Current { + get { + VerifyState(); + if (next <= 0) + throw new InvalidOperationException(); + return current; + } + } + } + } +} \ No newline at end of file diff --git a/spine-csharp/src/IkConstraint.cs b/spine-csharp/src/IkConstraint.cs index a2816e796..e5b7bc9d4 100644 --- a/spine-csharp/src/IkConstraint.cs +++ b/spine-csharp/src/IkConstraint.cs @@ -1,25 +1,26 @@ -/****************************************************************************** +/****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -36,13 +37,13 @@ namespace Spine { private const float radDeg = 180 / (float)Math.PI; internal IkConstraintData data; - internal List bones = new List(); + internal ExposedList bones = new ExposedList(); internal Bone target; internal int bendDirection; internal float mix; public IkConstraintData Data { get { return data; } } - public List Bones { get { return bones; } } + public ExposedList Bones { get { return bones; } } public Bone Target { get { return target; } set { target = value; } } public int BendDirection { get { return bendDirection; } set { bendDirection = value; } } public float Mix { get { return mix; } set { mix = value; } } @@ -54,7 +55,7 @@ namespace Spine { mix = data.mix; bendDirection = data.bendDirection; - bones = new List(data.bones.Count); + bones = new ExposedList(data.bones.Count); foreach (BoneData boneData in data.bones) bones.Add(skeleton.FindBone(boneData.name)); target = skeleton.FindBone(data.target.name); @@ -62,13 +63,13 @@ namespace Spine { public void apply () { Bone target = this.target; - List bones = this.bones; + ExposedList bones = this.bones; switch (bones.Count) { case 1: - apply(bones[0], target.worldX, target.worldY, mix); + apply(bones.Items[0], target.worldX, target.worldY, mix); break; case 2: - apply(bones[0], bones[1], target.worldX, target.worldY, bendDirection, mix); + apply(bones.Items[0], bones.Items[1], target.worldX, target.worldY, bendDirection, mix); break; } } diff --git a/spine-csharp/src/IkConstraintData.cs b/spine-csharp/src/IkConstraintData.cs index 9919a61e9..6bb9c752d 100644 --- a/spine-csharp/src/IkConstraintData.cs +++ b/spine-csharp/src/IkConstraintData.cs @@ -1,25 +1,26 @@ -/****************************************************************************** +/****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/Json.cs b/spine-csharp/src/Json.cs index 376dd7ef7..89b3c8c12 100644 --- a/spine-csharp/src/Json.cs +++ b/spine-csharp/src/Json.cs @@ -32,511 +32,502 @@ using System.Collections.Generic; using System.IO; using System.Text; using System.Globalization; - -namespace Spine -{ - // Example usage: - // - // using UnityEngine; - // using System.Collections; - // using System.Collections.Generic; - // using MiniJSON; - // - // public class MiniJSONTest : MonoBehaviour { - // void Start () { - // var jsonString = "{ \"array\": [1.44,2,3], " + - // "\"object\": {\"key1\":\"value1\", \"key2\":256}, " + - // "\"string\": \"The quick brown fox \\\"jumps\\\" over the lazy dog \", " + - // "\"unicode\": \"\\u3041 Men\u00fa sesi\u00f3n\", " + - // "\"int\": 65536, " + - // "\"float\": 3.1415926, " + - // "\"bool\": true, " + - // "\"null\": null }"; - // - // var dict = Json.Deserialize(jsonString) as Dictionary; - // - // Debug.Log("deserialized: " + dict.GetType()); - // Debug.Log("dict['array'][0]: " + ((List) dict["array"])[0]); - // Debug.Log("dict['string']: " + (string) dict["string"]); - // Debug.Log("dict['float']: " + (float) dict["float"]); - // Debug.Log("dict['int']: " + (long) dict["int"]); // ints come out as longs - // Debug.Log("dict['unicode']: " + (string) dict["unicode"]); - // - // var str = Json.Serialize(dict); - // - // Debug.Log("serialized: " + str); - // } - // } - - /// - /// This class encodes and decodes JSON strings. - /// Spec. details, see http://www.json.org/ - /// - /// JSON uses Arrays and Objects. These correspond here to the datatypes IList and IDictionary. - /// All numbers are parsed to floats. - /// - public static class Json { - /// - /// Parses the string json into a value - /// - /// A JSON string. - /// An List<object>, a Dictionary<string, object>, a float, an integer,a string, null, true, or false - public static object Deserialize (TextReader json) { - if (json == null) { - return null; - } - return Parser.Parse(json); - } - - sealed class Parser : IDisposable { - const string WHITE_SPACE = " \t\n\r"; - const string WORD_BREAK = " \t\n\r{}[],:\""; - - enum TOKEN { - NONE, - CURLY_OPEN, - CURLY_CLOSE, - SQUARED_OPEN, - SQUARED_CLOSE, - COLON, - COMMA, - STRING, - NUMBER, - TRUE, - FALSE, - NULL - }; - - TextReader json; - - Parser(TextReader reader) { - json = reader; - } - public static object Parse (TextReader reader) { - using (var instance = new Parser(reader)) { - return instance.ParseValue(); - } - } - - public void Dispose() { - json.Dispose(); - json = null; - } - - Dictionary ParseObject() { - Dictionary table = new Dictionary(); - - // ditch opening brace - json.Read(); - - // { - while (true) { - switch (NextToken) { - case TOKEN.NONE: - return null; - case TOKEN.COMMA: - continue; - case TOKEN.CURLY_CLOSE: - return table; - default: - // name - string name = ParseString(); - if (name == null) { - return null; - } - - // : - if (NextToken != TOKEN.COLON) { - return null; - } - // ditch the colon - json.Read(); - - // value - table[name] = ParseValue(); - break; - } - } - } - - List ParseArray() { - List array = new List(); - - // ditch opening bracket - json.Read(); - - // [ - var parsing = true; - while (parsing) { - TOKEN nextToken = NextToken; - - switch (nextToken) { - case TOKEN.NONE: - return null; - case TOKEN.COMMA: - continue; - case TOKEN.SQUARED_CLOSE: - parsing = false; - break; - default: - object value = ParseByToken(nextToken); - - array.Add(value); - break; - } - } - - return array; - } - - object ParseValue() { - TOKEN nextToken = NextToken; - return ParseByToken(nextToken); - } - - object ParseByToken(TOKEN token) { - switch (token) { - case TOKEN.STRING: - return ParseString(); - case TOKEN.NUMBER: - return ParseNumber(); - case TOKEN.CURLY_OPEN: - return ParseObject(); - case TOKEN.SQUARED_OPEN: - return ParseArray(); - case TOKEN.TRUE: - return true; - case TOKEN.FALSE: - return false; - case TOKEN.NULL: - return null; - default: - return null; - } - } - - string ParseString() { - StringBuilder s = new StringBuilder(); - char c; - - // ditch opening quote - json.Read(); - - bool parsing = true; - while (parsing) { - - if (json.Peek() == -1) { - parsing = false; - break; - } - - c = NextChar; - switch (c) { - case '"': - parsing = false; - break; - case '\\': - if (json.Peek() == -1) { - parsing = false; - break; - } - - c = NextChar; - switch (c) { - case '"': - case '\\': - case '/': - s.Append(c); - break; - case 'b': - s.Append('\b'); - break; - case 'f': - s.Append('\f'); - break; - case 'n': - s.Append('\n'); - break; - case 'r': - s.Append('\r'); - break; - case 't': - s.Append('\t'); - break; - case 'u': - var hex = new StringBuilder(); - - for (int i=0; i< 4; i++) { - hex.Append(NextChar); - } - - s.Append((char) Convert.ToInt32(hex.ToString(), 16)); - break; - } - break; - default: - s.Append(c); - break; - } - } - - return s.ToString(); - } - - object ParseNumber() { - string number = NextWord; - float parsedFloat; - float.TryParse(number, NumberStyles.Float, CultureInfo.InvariantCulture, out parsedFloat); - return parsedFloat; - } - - void EatWhitespace() { - while (WHITE_SPACE.IndexOf(PeekChar) != -1) { - json.Read(); - - if (json.Peek() == -1) { - break; - } - } - } - - char PeekChar { - get { - return Convert.ToChar(json.Peek()); - } - } - - char NextChar { - get { - return Convert.ToChar(json.Read()); - } - } - - string NextWord { - get { - StringBuilder word = new StringBuilder(); - - while (WORD_BREAK.IndexOf(PeekChar) == -1) { - word.Append(NextChar); - - if (json.Peek() == -1) { - break; - } - } - - return word.ToString(); - } - } - - TOKEN NextToken { - get { - EatWhitespace(); - - if (json.Peek() == -1) { - return TOKEN.NONE; - } - - char c = PeekChar; - switch (c) { - case '{': - return TOKEN.CURLY_OPEN; - case '}': - json.Read(); - return TOKEN.CURLY_CLOSE; - case '[': - return TOKEN.SQUARED_OPEN; - case ']': - json.Read(); - return TOKEN.SQUARED_CLOSE; - case ',': - json.Read(); - return TOKEN.COMMA; - case '"': - return TOKEN.STRING; - case ':': - return TOKEN.COLON; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '-': - return TOKEN.NUMBER; - } - - string word = NextWord; - - switch (word) { - case "false": - return TOKEN.FALSE; - case "true": - return TOKEN.TRUE; - case "null": - return TOKEN.NULL; - } - - return TOKEN.NONE; - } - } - } - - /// - /// Converts a IDictionary / IList object or a simple type (string, int, etc.) into a JSON string - /// - /// A Dictionary<string, object> / List<object> - /// A JSON encoded string, or null if object 'json' is not serializable - public static string Serialize(object obj) { - return Serializer.Serialize(obj); - } - - sealed class Serializer { - StringBuilder builder; - - Serializer() { - builder = new StringBuilder(); - } - - public static string Serialize(object obj) { - var instance = new Serializer(); - - instance.SerializeValue(obj); - - return instance.builder.ToString(); - } - - void SerializeValue(object value) { - IList asList; - IDictionary asDict; - string asStr; - - if (value == null) { - builder.Append("null"); - } - else if ((asStr = value as string) != null) { - SerializeString(asStr); - } - else if (value is bool) { - builder.Append(value.ToString().ToLower()); - } - else if ((asList = value as IList) != null) { - SerializeArray(asList); - } - else if ((asDict = value as IDictionary) != null) { - SerializeObject(asDict); - } - else if (value is char) { - SerializeString(value.ToString()); - } - else { - SerializeOther(value); - } - } - - void SerializeObject(IDictionary obj) { - bool first = true; - - builder.Append('{'); - - foreach (object e in obj.Keys) { - if (!first) { - builder.Append(','); - } - - SerializeString(e.ToString()); - builder.Append(':'); - - SerializeValue(obj[e]); - - first = false; - } - - builder.Append('}'); - } - - void SerializeArray(IList anArray) { - builder.Append('['); - - bool first = true; - - foreach (object obj in anArray) { - if (!first) { - builder.Append(','); - } - - SerializeValue(obj); - - first = false; - } - - builder.Append(']'); - } - - void SerializeString(string str) { - builder.Append('\"'); - - char[] charArray = str.ToCharArray(); - foreach (var c in charArray) { - switch (c) { - case '"': - builder.Append("\\\""); - break; - case '\\': - builder.Append("\\\\"); - break; - case '\b': - builder.Append("\\b"); - break; - case '\f': - builder.Append("\\f"); - break; - case '\n': - builder.Append("\\n"); - break; - case '\r': - builder.Append("\\r"); - break; - case '\t': - builder.Append("\\t"); - break; - default: - int codepoint = Convert.ToInt32(c); - if ((codepoint >= 32) && (codepoint <= 126)) { - builder.Append(c); - } - else { - builder.Append("\\u" + Convert.ToString(codepoint, 16).PadLeft(4, '0')); - } - break; - } - } - - builder.Append('\"'); - } - - void SerializeOther(object value) { - if (value is float - || value is int - || value is uint - || value is long - || value is float - || value is sbyte - || value is byte - || value is short - || value is ushort - || value is ulong - || value is decimal) { - builder.Append(value.ToString()); - } - else { - SerializeString(value.ToString()); - } - } - } - } +namespace Spine { + // Example usage: + // + // using UnityEngine; + // using System.Collections; + // using System.Collections.Generic; + // using MiniJSON; + // + // public class MiniJSONTest : MonoBehaviour { + // void Start () { + // var jsonString = "{ \"array\": [1.44,2,3], " + + // "\"object\": {\"key1\":\"value1\", \"key2\":256}, " + + // "\"string\": \"The quick brown fox \\\"jumps\\\" over the lazy dog \", " + + // "\"unicode\": \"\\u3041 Men\u00fa sesi\u00f3n\", " + + // "\"int\": 65536, " + + // "\"float\": 3.1415926, " + + // "\"bool\": true, " + + // "\"null\": null }"; + // + // var dict = Json.Deserialize(jsonString) as Dictionary; + // + // Debug.Log("deserialized: " + dict.GetType()); + // Debug.Log("dict['array'][0]: " + ((List) dict["array"])[0]); + // Debug.Log("dict['string']: " + (string) dict["string"]); + // Debug.Log("dict['float']: " + (float) dict["float"]); + // Debug.Log("dict['int']: " + (long) dict["int"]); // ints come out as longs + // Debug.Log("dict['unicode']: " + (string) dict["unicode"]); + // + // var str = Json.Serialize(dict); + // + // Debug.Log("serialized: " + str); + // } + // } + + /// + /// This class encodes and decodes JSON strings. + /// Spec. details, see http://www.json.org/ + /// + /// JSON uses Arrays and Objects. These correspond here to the datatypes IList and IDictionary. + /// All numbers are parsed to floats. + /// + public static class Json { + /// + /// Parses the string json into a value + /// + /// A JSON string. + /// An List<object>, a Dictionary<string, object>, a float, an integer,a string, null, true, or false + public static object Deserialize (TextReader json) { + if (json == null) { + return null; + } + return Parser.Parse(json); + } + + sealed class Parser : IDisposable { + const string WHITE_SPACE = " \t\n\r"; + const string WORD_BREAK = " \t\n\r{}[],:\""; + + enum TOKEN { + NONE, + CURLY_OPEN, + CURLY_CLOSE, + SQUARED_OPEN, + SQUARED_CLOSE, + COLON, + COMMA, + STRING, + NUMBER, + TRUE, + FALSE, + NULL + }; + + TextReader json; + + Parser (TextReader reader) { + json = reader; + } + + public static object Parse (TextReader reader) { + using (var instance = new Parser(reader)) { + return instance.ParseValue(); + } + } + + public void Dispose () { + json.Dispose(); + json = null; + } + + Dictionary ParseObject () { + Dictionary table = new Dictionary(); + + // ditch opening brace + json.Read(); + + // { + while (true) { + switch (NextToken) { + case TOKEN.NONE: + return null; + case TOKEN.COMMA: + continue; + case TOKEN.CURLY_CLOSE: + return table; + default: + // name + string name = ParseString(); + if (name == null) { + return null; + } + + // : + if (NextToken != TOKEN.COLON) { + return null; + } + // ditch the colon + json.Read(); + + // value + table[name] = ParseValue(); + break; + } + } + } + + List ParseArray () { + List array = new List(); + + // ditch opening bracket + json.Read(); + + // [ + var parsing = true; + while (parsing) { + TOKEN nextToken = NextToken; + + switch (nextToken) { + case TOKEN.NONE: + return null; + case TOKEN.COMMA: + continue; + case TOKEN.SQUARED_CLOSE: + parsing = false; + break; + default: + object value = ParseByToken(nextToken); + + array.Add(value); + break; + } + } + + return array; + } + + object ParseValue () { + TOKEN nextToken = NextToken; + return ParseByToken(nextToken); + } + + object ParseByToken (TOKEN token) { + switch (token) { + case TOKEN.STRING: + return ParseString(); + case TOKEN.NUMBER: + return ParseNumber(); + case TOKEN.CURLY_OPEN: + return ParseObject(); + case TOKEN.SQUARED_OPEN: + return ParseArray(); + case TOKEN.TRUE: + return true; + case TOKEN.FALSE: + return false; + case TOKEN.NULL: + return null; + default: + return null; + } + } + + string ParseString () { + StringBuilder s = new StringBuilder(); + char c; + + // ditch opening quote + json.Read(); + + bool parsing = true; + while (parsing) { + + if (json.Peek() == -1) { + parsing = false; + break; + } + + c = NextChar; + switch (c) { + case '"': + parsing = false; + break; + case '\\': + if (json.Peek() == -1) { + parsing = false; + break; + } + + c = NextChar; + switch (c) { + case '"': + case '\\': + case '/': + s.Append(c); + break; + case 'b': + s.Append('\b'); + break; + case 'f': + s.Append('\f'); + break; + case 'n': + s.Append('\n'); + break; + case 'r': + s.Append('\r'); + break; + case 't': + s.Append('\t'); + break; + case 'u': + var hex = new StringBuilder(); + + for (int i = 0; i < 4; i++) { + hex.Append(NextChar); + } + + s.Append((char)Convert.ToInt32(hex.ToString(), 16)); + break; + } + break; + default: + s.Append(c); + break; + } + } + + return s.ToString(); + } + + object ParseNumber () { + string number = NextWord; + float parsedFloat; + float.TryParse(number, NumberStyles.Float, CultureInfo.InvariantCulture, out parsedFloat); + return parsedFloat; + } + + void EatWhitespace () { + while (WHITE_SPACE.IndexOf(PeekChar) != -1) { + json.Read(); + + if (json.Peek() == -1) { + break; + } + } + } + + char PeekChar { + get { + return Convert.ToChar(json.Peek()); + } + } + + char NextChar { + get { + return Convert.ToChar(json.Read()); + } + } + + string NextWord { + get { + StringBuilder word = new StringBuilder(); + + while (WORD_BREAK.IndexOf(PeekChar) == -1) { + word.Append(NextChar); + + if (json.Peek() == -1) { + break; + } + } + + return word.ToString(); + } + } + + TOKEN NextToken { + get { + EatWhitespace(); + + if (json.Peek() == -1) { + return TOKEN.NONE; + } + + char c = PeekChar; + switch (c) { + case '{': + return TOKEN.CURLY_OPEN; + case '}': + json.Read(); + return TOKEN.CURLY_CLOSE; + case '[': + return TOKEN.SQUARED_OPEN; + case ']': + json.Read(); + return TOKEN.SQUARED_CLOSE; + case ',': + json.Read(); + return TOKEN.COMMA; + case '"': + return TOKEN.STRING; + case ':': + return TOKEN.COLON; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '-': + return TOKEN.NUMBER; + } + + string word = NextWord; + + switch (word) { + case "false": + return TOKEN.FALSE; + case "true": + return TOKEN.TRUE; + case "null": + return TOKEN.NULL; + } + + return TOKEN.NONE; + } + } + } + + /// + /// Converts a IDictionary / IList object or a simple type (string, int, etc.) into a JSON string + /// + /// A Dictionary<string, object> / List<object> + /// A JSON encoded string, or null if object 'json' is not serializable + public static string Serialize (object obj) { + return Serializer.Serialize(obj); + } + + sealed class Serializer { + StringBuilder builder; + + Serializer () { + builder = new StringBuilder(); + } + + public static string Serialize (object obj) { + var instance = new Serializer(); + + instance.SerializeValue(obj); + + return instance.builder.ToString(); + } + + void SerializeValue (object value) { + IList asList; + IDictionary asDict; + string asStr; + + if (value == null) { + builder.Append("null"); + } else if ((asStr = value as string) != null) { + SerializeString(asStr); + } else if (value is bool) { + builder.Append(value.ToString().ToLower()); + } else if ((asList = value as IList) != null) { + SerializeArray(asList); + } else if ((asDict = value as IDictionary) != null) { + SerializeObject(asDict); + } else if (value is char) { + SerializeString(value.ToString()); + } else { + SerializeOther(value); + } + } + + void SerializeObject (IDictionary obj) { + bool first = true; + + builder.Append('{'); + + foreach (object e in obj.Keys) { + if (!first) { + builder.Append(','); + } + + SerializeString(e.ToString()); + builder.Append(':'); + + SerializeValue(obj[e]); + + first = false; + } + + builder.Append('}'); + } + + void SerializeArray (IList anArray) { + builder.Append('['); + + bool first = true; + + foreach (object obj in anArray) { + if (!first) { + builder.Append(','); + } + + SerializeValue(obj); + + first = false; + } + + builder.Append(']'); + } + + void SerializeString (string str) { + builder.Append('\"'); + + char[] charArray = str.ToCharArray(); + foreach (var c in charArray) { + switch (c) { + case '"': + builder.Append("\\\""); + break; + case '\\': + builder.Append("\\\\"); + break; + case '\b': + builder.Append("\\b"); + break; + case '\f': + builder.Append("\\f"); + break; + case '\n': + builder.Append("\\n"); + break; + case '\r': + builder.Append("\\r"); + break; + case '\t': + builder.Append("\\t"); + break; + default: + int codepoint = Convert.ToInt32(c); + if ((codepoint >= 32) && (codepoint <= 126)) { + builder.Append(c); + } else { + builder.Append("\\u" + Convert.ToString(codepoint, 16).PadLeft(4, '0')); + } + break; + } + } + + builder.Append('\"'); + } + + void SerializeOther (object value) { + if (value is float + || value is int + || value is uint + || value is long + || value is float + || value is sbyte + || value is byte + || value is short + || value is ushort + || value is ulong + || value is decimal) { + builder.Append(value.ToString()); + } else { + SerializeString(value.ToString()); + } + } + } + } } \ No newline at end of file diff --git a/spine-csharp/src/Skeleton.cs b/spine-csharp/src/Skeleton.cs index 0e032dba5..dbd0ac831 100644 --- a/spine-csharp/src/Skeleton.cs +++ b/spine-csharp/src/Skeleton.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -34,11 +35,11 @@ using System.Collections.Generic; namespace Spine { public class Skeleton { internal SkeletonData data; - internal List bones; - internal List slots; - internal List drawOrder; - internal List ikConstraints; - private List> boneCache = new List>(); + internal ExposedList bones; + internal ExposedList slots; + internal ExposedList drawOrder; + internal ExposedList ikConstraints; + private ExposedList> boneCache = new ExposedList>(); internal Skin skin; internal float r = 1, g = 1, b = 1, a = 1; internal float time; @@ -46,10 +47,10 @@ namespace Spine { internal float x, y; public SkeletonData Data { get { return data; } } - public List Bones { get { return bones; } } - public List Slots { get { return slots; } } - public List DrawOrder { get { return drawOrder; } } - public List IkConstraints { get { return ikConstraints; } set { ikConstraints = value; } } + public ExposedList Bones { get { return bones; } } + public ExposedList Slots { get { return slots; } } + public ExposedList DrawOrder { get { return drawOrder; } } + public ExposedList IkConstraints { get { return ikConstraints; } set { ikConstraints = value; } } public Skin Skin { get { return skin; } set { skin = value; } } public float R { get { return r; } set { r = value; } } public float G { get { return g; } set { g = value; } } @@ -63,7 +64,7 @@ namespace Spine { public Bone RootBone { get { - return bones.Count == 0 ? null : bones[0]; + return bones.Count == 0 ? null : bones.Items[0]; } } @@ -71,24 +72,24 @@ namespace Spine { if (data == null) throw new ArgumentNullException("data cannot be null."); this.data = data; - bones = new List(data.bones.Count); + bones = new ExposedList(data.bones.Count); foreach (BoneData boneData in data.bones) { - Bone parent = boneData.parent == null ? null : bones[data.bones.IndexOf(boneData.parent)]; + Bone parent = boneData.parent == null ? null : bones.Items[data.bones.IndexOf(boneData.parent)]; Bone bone = new Bone(boneData, this, parent); if (parent != null) parent.children.Add(bone); bones.Add(bone); } - slots = new List(data.slots.Count); - drawOrder = new List(data.slots.Count); + slots = new ExposedList(data.slots.Count); + drawOrder = new ExposedList(data.slots.Count); foreach (SlotData slotData in data.slots) { - Bone bone = bones[data.bones.IndexOf(slotData.boneData)]; + Bone bone = bones.Items[data.bones.IndexOf(slotData.boneData)]; Slot slot = new Slot(slotData, bone); slots.Add(slot); drawOrder.Add(slot); } - ikConstraints = new List(data.ikConstraints.Count); + ikConstraints = new ExposedList(data.ikConstraints.Count); foreach (IkConstraintData ikConstraintData in data.ikConstraints) ikConstraints.Add(new IkConstraint(ikConstraintData, this)); @@ -98,31 +99,31 @@ namespace Spine { /// Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or /// removed. public void UpdateCache () { - List> boneCache = this.boneCache; - List ikConstraints = this.ikConstraints; + ExposedList> boneCache = this.boneCache; + ExposedList ikConstraints = this.ikConstraints; int ikConstraintsCount = ikConstraints.Count; int arrayCount = ikConstraintsCount + 1; if (boneCache.Count > arrayCount) boneCache.RemoveRange(arrayCount, boneCache.Count - arrayCount); for (int i = 0, n = boneCache.Count; i < n; i++) - boneCache[i].Clear(); + boneCache.Items[i].Clear(); while (boneCache.Count < arrayCount) - boneCache.Add(new List()); + boneCache.Add(new ExposedList()); - List nonIkBones = boneCache[0]; + ExposedList nonIkBones = boneCache.Items[0]; for (int i = 0, n = bones.Count; i < n; i++) { - Bone bone = bones[i]; + Bone bone = bones.Items[i]; Bone current = bone; do { for (int ii = 0; ii < ikConstraintsCount; ii++) { - IkConstraint ikConstraint = ikConstraints[ii]; - Bone parent = ikConstraint.bones[0]; - Bone child = ikConstraint.bones[ikConstraint.bones.Count - 1]; + IkConstraint ikConstraint = ikConstraints.Items[ii]; + Bone parent = ikConstraint.bones.Items[0]; + Bone child = ikConstraint.bones.Items[ikConstraint.bones.Count - 1]; while (true) { if (current == child) { - boneCache[ii].Add(bone); - boneCache[ii + 1].Add(bone); + boneCache.Items[ii].Add(bone); + boneCache.Items[ii + 1].Add(bone); goto outer; } if (child == parent) break; @@ -132,26 +133,26 @@ namespace Spine { current = current.parent; } while (current != null); nonIkBones.Add(bone); - outer: {} + outer: { } } } /// Updates the world transform for each bone and applies IK constraints. public void UpdateWorldTransform () { - List bones = this.bones; + ExposedList bones = this.bones; for (int ii = 0, nn = bones.Count; ii < nn; ii++) { - Bone bone = bones[ii]; + Bone bone = bones.Items[ii]; bone.rotationIK = bone.rotation; } - List> boneCache = this.boneCache; - List ikConstraints = this.ikConstraints; + ExposedList> boneCache = this.boneCache; + ExposedList ikConstraints = this.ikConstraints; int i = 0, last = boneCache.Count - 1; while (true) { - List updateBones = boneCache[i]; + ExposedList updateBones = boneCache.Items[i]; for (int ii = 0, nn = updateBones.Count; ii < nn; ii++) - updateBones[ii].UpdateWorldTransform(); + updateBones.Items[ii].UpdateWorldTransform(); if (i == last) break; - ikConstraints[i].apply(); + ikConstraints.Items[i].apply(); i++; } } @@ -163,32 +164,34 @@ namespace Spine { } public void SetBonesToSetupPose () { - List bones = this.bones; + ExposedList bones = this.bones; for (int i = 0, n = bones.Count; i < n; i++) - bones[i].SetToSetupPose(); + bones.Items[i].SetToSetupPose(); - List ikConstraints = this.ikConstraints; + ExposedList ikConstraints = this.ikConstraints; for (int i = 0, n = ikConstraints.Count; i < n; i++) { - IkConstraint ikConstraint = ikConstraints[i]; + IkConstraint ikConstraint = ikConstraints.Items[i]; ikConstraint.bendDirection = ikConstraint.data.bendDirection; ikConstraint.mix = ikConstraint.data.mix; } } public void SetSlotsToSetupPose () { - List slots = this.slots; + ExposedList slots = this.slots; drawOrder.Clear(); - drawOrder.AddRange(slots); for (int i = 0, n = slots.Count; i < n; i++) - slots[i].SetToSetupPose(i); + drawOrder.Add(slots.Items[i]); + + for (int i = 0, n = slots.Count; i < n; i++) + slots.Items[i].SetToSetupPose(i); } /// May be null. public Bone FindBone (String boneName) { if (boneName == null) throw new ArgumentNullException("boneName cannot be null."); - List bones = this.bones; + ExposedList bones = this.bones; for (int i = 0, n = bones.Count; i < n; i++) { - Bone bone = bones[i]; + Bone bone = bones.Items[i]; if (bone.data.name == boneName) return bone; } return null; @@ -197,18 +200,18 @@ namespace Spine { /// -1 if the bone was not found. public int FindBoneIndex (String boneName) { if (boneName == null) throw new ArgumentNullException("boneName cannot be null."); - List bones = this.bones; + ExposedList bones = this.bones; for (int i = 0, n = bones.Count; i < n; i++) - if (bones[i].data.name == boneName) return i; + if (bones.Items[i].data.name == boneName) return i; return -1; } /// May be null. public Slot FindSlot (String slotName) { if (slotName == null) throw new ArgumentNullException("slotName cannot be null."); - List slots = this.slots; + ExposedList slots = this.slots; for (int i = 0, n = slots.Count; i < n; i++) { - Slot slot = slots[i]; + Slot slot = slots.Items[i]; if (slot.data.name == slotName) return slot; } return null; @@ -217,9 +220,9 @@ namespace Spine { /// -1 if the bone was not found. public int FindSlotIndex (String slotName) { if (slotName == null) throw new ArgumentNullException("slotName cannot be null."); - List slots = this.slots; + ExposedList slots = this.slots; for (int i = 0, n = slots.Count; i < n; i++) - if (slots[i].data.name.Equals(slotName)) return i; + if (slots.Items[i].data.name.Equals(slotName)) return i; return -1; } @@ -239,9 +242,9 @@ namespace Spine { if (skin != null) newSkin.AttachAll(this, skin); else { - List slots = this.slots; + ExposedList slots = this.slots; for (int i = 0, n = slots.Count; i < n; i++) { - Slot slot = slots[i]; + Slot slot = slots.Items[i]; String name = slot.data.attachmentName; if (name != null) { Attachment attachment = newSkin.GetAttachment(i, name); @@ -272,9 +275,9 @@ namespace Spine { /// May be null. public void SetAttachment (String slotName, String attachmentName) { if (slotName == null) throw new ArgumentNullException("slotName cannot be null."); - List slots = this.slots; + ExposedList slots = this.slots; for (int i = 0, n = slots.Count; i < n; i++) { - Slot slot = slots[i]; + Slot slot = slots.Items[i]; if (slot.data.name == slotName) { Attachment attachment = null; if (attachmentName != null) { @@ -291,9 +294,9 @@ namespace Spine { /** @return May be null. */ public IkConstraint FindIkConstraint (String ikConstraintName) { if (ikConstraintName == null) throw new ArgumentNullException("ikConstraintName cannot be null."); - List ikConstraints = this.ikConstraints; + ExposedList ikConstraints = this.ikConstraints; for (int i = 0, n = ikConstraints.Count; i < n; i++) { - IkConstraint ikConstraint = ikConstraints[i]; + IkConstraint ikConstraint = ikConstraints.Items[i]; if (ikConstraint.data.name == ikConstraintName) return ikConstraint; } return null; diff --git a/spine-csharp/src/SkeletonBinary.cs b/spine-csharp/src/SkeletonBinary.cs new file mode 100644 index 000000000..f4d3a7e4b --- /dev/null +++ b/spine-csharp/src/SkeletonBinary.cs @@ -0,0 +1,664 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using System; +using System.IO; +using System.Collections.Generic; + +#if WINDOWS_STOREAPP +using System.Threading.Tasks; +using Windows.Storage; +#endif + +namespace Spine { + public class SkeletonBinary { + public const int TIMELINE_SCALE = 0; + public const int TIMELINE_ROTATE = 1; + public const int TIMELINE_TRANSLATE = 2; + public const int TIMELINE_ATTACHMENT = 3; + public const int TIMELINE_COLOR = 4; + public const int TIMELINE_FLIPX = 5; + public const int TIMELINE_FLIPY = 6; + + public const int CURVE_LINEAR = 0; + public const int CURVE_STEPPED = 1; + public const int CURVE_BEZIER = 2; + + private AttachmentLoader attachmentLoader; + public float Scale { get; set; } + private char[] chars = new char[32]; + private byte[] buffer = new byte[4]; + + public SkeletonBinary (params Atlas[] atlasArray) + : this(new AtlasAttachmentLoader(atlasArray)) { + } + + public SkeletonBinary (AttachmentLoader attachmentLoader) { + if (attachmentLoader == null) throw new ArgumentNullException("attachmentLoader cannot be null."); + this.attachmentLoader = attachmentLoader; + Scale = 1; + } + +#if WINDOWS_STOREAPP + private async Task ReadFile(string path) { + var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; + using (var input = new BufferedStream(await folder.GetFileAsync(path).AsTask().ConfigureAwait(false))) { + SkeletonData skeletonData = ReadSkeletonData(input); + skeletonData.Name = Path.GetFileNameWithoutExtension(path); + return skeletonData; + } + } + + public SkeletonData ReadSkeletonData (String path) { + return this.ReadFile(path).Result; + } +#else + public SkeletonData ReadSkeletonData (String path) { +#if WINDOWS_PHONE + using (var input = new BufferedStream(Microsoft.Xna.Framework.TitleContainer.OpenStream(path))) + { +#else + using (var input = new BufferedStream(new FileStream(path, FileMode.Open))) { +#endif + SkeletonData skeletonData = ReadSkeletonData(input); + skeletonData.name = Path.GetFileNameWithoutExtension(path); + return skeletonData; + } + } +#endif + + public SkeletonData ReadSkeletonData (Stream input) { + if (input == null) throw new ArgumentNullException("input cannot be null."); + float scale = Scale; + + var skeletonData = new SkeletonData(); + skeletonData.hash = ReadString(input); + if (skeletonData.hash.Length == 0) skeletonData.hash = null; + skeletonData.version = ReadString(input); + if (skeletonData.version.Length == 0) skeletonData.version = null; + skeletonData.width = ReadFloat(input); + skeletonData.height = ReadFloat(input); + + bool nonessential = ReadBoolean(input); + + if (nonessential) { + skeletonData.imagesPath = ReadString(input); + if (skeletonData.imagesPath.Length == 0) skeletonData.imagesPath = null; + } + + // Bones. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + String name = ReadString(input); + BoneData parent = null; + int parentIndex = ReadInt(input, true) - 1; + if (parentIndex != -1) parent = skeletonData.bones.Items[parentIndex]; + BoneData boneData = new BoneData(name, parent); + boneData.x = ReadFloat(input) * scale; + boneData.y = ReadFloat(input) * scale; + boneData.scaleX = ReadFloat(input); + boneData.scaleY = ReadFloat(input); + boneData.rotation = ReadFloat(input); + boneData.length = ReadFloat(input) * scale; + boneData.flipX = ReadBoolean(input); + boneData.flipY = ReadBoolean(input); + boneData.inheritScale = ReadBoolean(input); + boneData.inheritRotation = ReadBoolean(input); + if (nonessential) ReadInt(input); // Skip bone color. + skeletonData.bones.Add(boneData); + } + + // IK constraints. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + IkConstraintData ikConstraintData = new IkConstraintData(ReadString(input)); + for (int ii = 0, nn = ReadInt(input, true); ii < nn; ii++) + ikConstraintData.bones.Add(skeletonData.bones.Items[ReadInt(input, true)]); + ikConstraintData.target = skeletonData.bones.Items[ReadInt(input, true)]; + ikConstraintData.mix = ReadFloat(input); + ikConstraintData.bendDirection = ReadSByte(input); + skeletonData.ikConstraints.Add(ikConstraintData); + } + + // Slots. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + String slotName = ReadString(input); + BoneData boneData = skeletonData.bones.Items[ReadInt(input, true)]; + SlotData slotData = new SlotData(slotName, boneData); + int color = ReadInt(input); + slotData.r = ((color & 0xff000000) >> 24) / 255f; + slotData.g = ((color & 0x00ff0000) >> 16) / 255f; + slotData.b = ((color & 0x0000ff00) >> 8) / 255f; + slotData.a = ((color & 0x000000ff)) / 255f; + slotData.attachmentName = ReadString(input); + slotData.blendMode = (BlendMode)ReadInt(input, true); + skeletonData.slots.Add(slotData); + } + + // Default skin. + Skin defaultSkin = ReadSkin(input, "default", nonessential); + if (defaultSkin != null) { + skeletonData.defaultSkin = defaultSkin; + skeletonData.skins.Add(defaultSkin); + } + + // Skins. + for (int i = 0, n = ReadInt(input, true); i < n; i++) + skeletonData.skins.Add(ReadSkin(input, ReadString(input), nonessential)); + + // Events. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + EventData eventData = new EventData(ReadString(input)); + eventData.Int = ReadInt(input, false); + eventData.Float = ReadFloat(input); + eventData.String = ReadString(input); + skeletonData.events.Add(eventData); + } + + // Animations. + for (int i = 0, n = ReadInt(input, true); i < n; i++) + ReadAnimation(ReadString(input), input, skeletonData); + + skeletonData.bones.TrimExcess(); + skeletonData.slots.TrimExcess(); + skeletonData.skins.TrimExcess(); + skeletonData.events.TrimExcess(); + skeletonData.animations.TrimExcess(); + skeletonData.ikConstraints.TrimExcess(); + return skeletonData; + } + + /** @return May be null. */ + private Skin ReadSkin (Stream input, String skinName, bool nonessential) { + int slotCount = ReadInt(input, true); + if (slotCount == 0) return null; + Skin skin = new Skin(skinName); + for (int i = 0; i < slotCount; i++) { + int slotIndex = ReadInt(input, true); + for (int ii = 0, nn = ReadInt(input, true); ii < nn; ii++) { + String name = ReadString(input); + skin.AddAttachment(slotIndex, name, ReadAttachment(input, skin, name, nonessential)); + } + } + return skin; + } + + private Attachment ReadAttachment (Stream input, Skin skin, String attachmentName, bool nonessential) { + float scale = Scale; + + String name = ReadString(input); + if (name == null) name = attachmentName; + + switch ((AttachmentType)input.ReadByte()) { + case AttachmentType.region: { + String path = ReadString(input); + if (path == null) path = name; + RegionAttachment region = attachmentLoader.NewRegionAttachment(skin, name, path); + if (region == null) return null; + region.Path = path; + region.x = ReadFloat(input) * scale; + region.y = ReadFloat(input) * scale; + region.scaleX = ReadFloat(input); + region.scaleY = ReadFloat(input); + region.rotation = ReadFloat(input); + region.width = ReadFloat(input) * scale; + region.height = ReadFloat(input) * scale; + int color = ReadInt(input); + region.r = ((color & 0xff000000) >> 24) / 255f; + region.g = ((color & 0x00ff0000) >> 16) / 255f; + region.b = ((color & 0x0000ff00) >> 8) / 255f; + region.a = ((color & 0x000000ff)) / 255f; + region.UpdateOffset(); + return region; + } + case AttachmentType.boundingbox: { + BoundingBoxAttachment box = attachmentLoader.NewBoundingBoxAttachment(skin, name); + if (box == null) return null; + box.vertices = ReadFloatArray(input, scale); + return box; + } + case AttachmentType.mesh: { + String path = ReadString(input); + if (path == null) path = name; + MeshAttachment mesh = attachmentLoader.NewMeshAttachment(skin, name, path); + if (mesh == null) return null; + mesh.Path = path; + mesh.regionUVs = ReadFloatArray(input, 1); + mesh.triangles = ReadShortArray(input); + mesh.vertices = ReadFloatArray(input, scale); + mesh.UpdateUVs(); + int color = ReadInt(input); + mesh.r = ((color & 0xff000000) >> 24) / 255f; + mesh.g = ((color & 0x00ff0000) >> 16) / 255f; + mesh.b = ((color & 0x0000ff00) >> 8) / 255f; + mesh.a = ((color & 0x000000ff)) / 255f; + mesh.HullLength = ReadInt(input, true) * 2; + if (nonessential) { + mesh.Edges = ReadIntArray(input); + mesh.Width = ReadFloat(input) * scale; + mesh.Height = ReadFloat(input) * scale; + } + return mesh; + } + case AttachmentType.skinnedmesh: { + String path = ReadString(input); + if (path == null) path = name; + SkinnedMeshAttachment mesh = attachmentLoader.NewSkinnedMeshAttachment(skin, name, path); + if (mesh == null) return null; + mesh.Path = path; + float[] uvs = ReadFloatArray(input, 1); + int[] triangles = ReadShortArray(input); + + int vertexCount = ReadInt(input, true); + var weights = new List(uvs.Length * 3 * 3); + var bones = new List(uvs.Length * 3); + for (int i = 0; i < vertexCount; i++) { + int boneCount = (int)ReadFloat(input); + bones.Add(boneCount); + for (int nn = i + boneCount * 4; i < nn; i += 4) { + bones.Add((int)ReadFloat(input)); + weights.Add(ReadFloat(input) * scale); + weights.Add(ReadFloat(input) * scale); + weights.Add(ReadFloat(input)); + } + } + mesh.bones = bones.ToArray(); + mesh.weights = weights.ToArray(); + mesh.triangles = triangles; + mesh.regionUVs = uvs; + mesh.UpdateUVs(); + int color = ReadInt(input); + mesh.r = ((color & 0xff000000) >> 24) / 255f; + mesh.g = ((color & 0x00ff0000) >> 16) / 255f; + mesh.b = ((color & 0x0000ff00) >> 8) / 255f; + mesh.a = ((color & 0x000000ff)) / 255f; + mesh.HullLength = ReadInt(input, true) * 2; + if (nonessential) { + mesh.Edges = ReadIntArray(input); + mesh.Width = ReadFloat(input) * scale; + mesh.Height = ReadFloat(input) * scale; + } + return mesh; + } + } + return null; + } + + private float[] ReadFloatArray (Stream input, float scale) { + int n = ReadInt(input, true); + float[] array = new float[n]; + if (scale == 1) { + for (int i = 0; i < n; i++) + array[i] = ReadFloat(input); + } else { + for (int i = 0; i < n; i++) + array[i] = ReadFloat(input) * scale; + } + return array; + } + + private int[] ReadShortArray (Stream input) { + int n = ReadInt(input, true); + int[] array = new int[n]; + for (int i = 0; i < n; i++) + array[i] = (input.ReadByte() << 8) + input.ReadByte(); + return array; + } + + private int[] ReadIntArray (Stream input) { + int n = ReadInt(input, true); + int[] array = new int[n]; + for (int i = 0; i < n; i++) + array[i] = ReadInt(input, true); + return array; + } + + private void ReadAnimation (String name, Stream input, SkeletonData skeletonData) { + var timelines = new ExposedList(); + float scale = Scale; + float duration = 0; + + // Slot timelines. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + int slotIndex = ReadInt(input, true); + for (int ii = 0, nn = ReadInt(input, true); ii < nn; ii++) { + int timelineType = input.ReadByte(); + int frameCount = ReadInt(input, true); + switch (timelineType) { + case TIMELINE_COLOR: { + ColorTimeline timeline = new ColorTimeline(frameCount); + timeline.slotIndex = slotIndex; + for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { + float time = ReadFloat(input); + int color = ReadInt(input); + float r = ((color & 0xff000000) >> 24) / 255f; + float g = ((color & 0x00ff0000) >> 16) / 255f; + float b = ((color & 0x0000ff00) >> 8) / 255f; + float a = ((color & 0x000000ff)) / 255f; + timeline.SetFrame(frameIndex, time, r, g, b, a); + if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); + } + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[frameCount * 5 - 5]); + break; + } + case TIMELINE_ATTACHMENT: { + AttachmentTimeline timeline = new AttachmentTimeline(frameCount); + timeline.slotIndex = slotIndex; + for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) + timeline.SetFrame(frameIndex, ReadFloat(input), ReadString(input)); + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[frameCount - 1]); + break; + } + } + } + } + + // Bone timelines. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + int boneIndex = ReadInt(input, true); + for (int ii = 0, nn = ReadInt(input, true); ii < nn; ii++) { + int timelineType = input.ReadByte(); + int frameCount = ReadInt(input, true); + switch (timelineType) { + case TIMELINE_ROTATE: { + RotateTimeline timeline = new RotateTimeline(frameCount); + timeline.boneIndex = boneIndex; + for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.SetFrame(frameIndex, ReadFloat(input), ReadFloat(input)); + if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); + } + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[frameCount * 2 - 2]); + break; + } + case TIMELINE_TRANSLATE: + case TIMELINE_SCALE: { + TranslateTimeline timeline; + float timelineScale = 1; + if (timelineType == TIMELINE_SCALE) + timeline = new ScaleTimeline(frameCount); + else { + timeline = new TranslateTimeline(frameCount); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.SetFrame(frameIndex, ReadFloat(input), ReadFloat(input) * timelineScale, ReadFloat(input) + * timelineScale); + if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); + } + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[frameCount * 3 - 3]); + break; + } + case TIMELINE_FLIPX: + case TIMELINE_FLIPY: { + FlipXTimeline timeline = timelineType == TIMELINE_FLIPX ? new FlipXTimeline(frameCount) : new FlipYTimeline( + frameCount); + timeline.boneIndex = boneIndex; + for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) + timeline.SetFrame(frameIndex, ReadFloat(input), ReadBoolean(input)); + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[frameCount * 2 - 2]); + break; + } + } + } + } + + // IK timelines. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + IkConstraintData ikConstraint = skeletonData.ikConstraints.Items[ReadInt(input, true)]; + int frameCount = ReadInt(input, true); + IkConstraintTimeline timeline = new IkConstraintTimeline(frameCount); + timeline.ikConstraintIndex = skeletonData.ikConstraints.IndexOf(ikConstraint); + for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.SetFrame(frameIndex, ReadFloat(input), ReadFloat(input), ReadSByte(input)); + if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); + } + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[frameCount * 3 - 3]); + } + + // FFD timelines. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + Skin skin = skeletonData.skins.Items[ReadInt(input, true)]; + for (int ii = 0, nn = ReadInt(input, true); ii < nn; ii++) { + int slotIndex = ReadInt(input, true); + for (int iii = 0, nnn = ReadInt(input, true); iii < nnn; iii++) { + Attachment attachment = skin.GetAttachment(slotIndex, ReadString(input)); + int frameCount = ReadInt(input, true); + FFDTimeline timeline = new FFDTimeline(frameCount); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { + float time = ReadFloat(input); + + float[] vertices; + int vertexCount; + if (attachment is MeshAttachment) + vertexCount = ((MeshAttachment)attachment).vertices.Length; + else + vertexCount = ((SkinnedMeshAttachment)attachment).weights.Length / 3 * 2; + + int end = ReadInt(input, true); + if (end == 0) { + if (attachment is MeshAttachment) + vertices = ((MeshAttachment)attachment).vertices; + else + vertices = new float[vertexCount]; + } else { + vertices = new float[vertexCount]; + int start = ReadInt(input, true); + end += start; + if (scale == 1) { + for (int v = start; v < end; v++) + vertices[v] = ReadFloat(input); + } else { + for (int v = start; v < end; v++) + vertices[v] = ReadFloat(input) * scale; + } + if (attachment is MeshAttachment) { + float[] meshVertices = ((MeshAttachment)attachment).vertices; + for (int v = 0, vn = vertices.Length; v < vn; v++) + vertices[v] += meshVertices[v]; + } + } + + timeline.SetFrame(frameIndex, time, vertices); + if (frameIndex < frameCount - 1) ReadCurve(input, frameIndex, timeline); + } + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[frameCount - 1]); + } + } + } + + // Draw order timeline. + int drawOrderCount = ReadInt(input, true); + if (drawOrderCount > 0) { + DrawOrderTimeline timeline = new DrawOrderTimeline(drawOrderCount); + int slotCount = skeletonData.slots.Count; + for (int i = 0; i < drawOrderCount; i++) { + int offsetCount = ReadInt(input, true); + int[] drawOrder = new int[slotCount]; + for (int ii = slotCount - 1; ii >= 0; ii--) + drawOrder[ii] = -1; + int[] unchanged = new int[slotCount - offsetCount]; + int originalIndex = 0, unchangedIndex = 0; + for (int ii = 0; ii < offsetCount; ii++) { + int slotIndex = ReadInt(input, true); + // Collect unchanged items. + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. + drawOrder[originalIndex + ReadInt(input, true)] = originalIndex++; + } + // Collect remaining unchanged items. + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. + for (int ii = slotCount - 1; ii >= 0; ii--) + if (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex]; + timeline.SetFrame(i, ReadFloat(input), drawOrder); + } + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[drawOrderCount - 1]); + } + + // Event timeline. + int eventCount = ReadInt(input, true); + if (eventCount > 0) { + EventTimeline timeline = new EventTimeline(eventCount); + for (int i = 0; i < eventCount; i++) { + float time = ReadFloat(input); + EventData eventData = skeletonData.events.Items[ReadInt(input, true)]; + Event e = new Event(eventData); + e.Int = ReadInt(input, false); + e.Float = ReadFloat(input); + e.String = ReadBoolean(input) ? ReadString(input) : eventData.String; + timeline.SetFrame(i, time, e); + } + timelines.Add(timeline); + duration = Math.Max(duration, timeline.frames[eventCount - 1]); + } + + timelines.TrimExcess(); + skeletonData.animations.Add(new Animation(name, timelines, duration)); + } + + private void ReadCurve (Stream input, int frameIndex, CurveTimeline timeline) { + switch (input.ReadByte()) { + case CURVE_STEPPED: + timeline.SetStepped(frameIndex); + break; + case CURVE_BEZIER: + timeline.SetCurve(frameIndex, ReadFloat(input), ReadFloat(input), ReadFloat(input), ReadFloat(input)); + break; + } + } + + private sbyte ReadSByte (Stream input) { + int value = input.ReadByte(); + if (value == -1) throw new EndOfStreamException(); + return (sbyte)value; + } + + private bool ReadBoolean (Stream input) { + return input.ReadByte() != 0; + } + + private float ReadFloat (Stream input) { + buffer[3] = (byte)input.ReadByte(); + buffer[2] = (byte)input.ReadByte(); + buffer[1] = (byte)input.ReadByte(); + buffer[0] = (byte)input.ReadByte(); + return BitConverter.ToSingle(buffer, 0); + } + + private int ReadInt (Stream input) { + return (input.ReadByte() << 24) + (input.ReadByte() << 16) + (input.ReadByte() << 8) + input.ReadByte(); + } + + private int ReadInt (Stream input, bool optimizePositive) { + int b = input.ReadByte(); + int result = b & 0x7F; + if ((b & 0x80) != 0) { + b = input.ReadByte(); + result |= (b & 0x7F) << 7; + if ((b & 0x80) != 0) { + b = input.ReadByte(); + result |= (b & 0x7F) << 14; + if ((b & 0x80) != 0) { + b = input.ReadByte(); + result |= (b & 0x7F) << 21; + if ((b & 0x80) != 0) { + b = input.ReadByte(); + result |= (b & 0x7F) << 28; + } + } + } + } + return optimizePositive ? result : ((result >> 1) ^ -(result & 1)); + } + + private string ReadString (Stream input) { + int charCount = ReadInt(input, true); + switch (charCount) { + case 0: + return null; + case 1: + return ""; + } + charCount--; + char[] chars = this.chars; + if (chars.Length < charCount) this.chars = chars = new char[charCount]; + // Try to read 7 bit ASCII chars. + int charIndex = 0; + int b = 0; + while (charIndex < charCount) { + b = input.ReadByte(); + if (b > 127) break; + chars[charIndex++] = (char)b; + } + // If a char was not ASCII, finish with slow path. + if (charIndex < charCount) ReadUtf8_slow(input, charCount, charIndex, b); + return new String(chars, 0, charCount); + } + + private void ReadUtf8_slow (Stream input, int charCount, int charIndex, int b) { + char[] chars = this.chars; + while (true) { + switch (b >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + chars[charIndex] = (char)b; + break; + case 12: + case 13: + chars[charIndex] = (char)((b & 0x1F) << 6 | input.ReadByte() & 0x3F); + break; + case 14: + chars[charIndex] = (char)((b & 0x0F) << 12 | (input.ReadByte() & 0x3F) << 6 | input.ReadByte() & 0x3F); + break; + } + if (++charIndex >= charCount) break; + b = input.ReadByte() & 0xFF; + } + } + } +} diff --git a/spine-csharp/src/SkeletonBounds.cs b/spine-csharp/src/SkeletonBounds.cs index 4c546d76c..11d875a68 100644 --- a/spine-csharp/src/SkeletonBounds.cs +++ b/spine-csharp/src/SkeletonBounds.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -33,11 +34,11 @@ using System.Collections.Generic; namespace Spine { public class SkeletonBounds { - private List polygonPool = new List(); + private ExposedList polygonPool = new ExposedList(); private float minX, minY, maxX, maxY; - public List BoundingBoxes { get; private set; } - public List Polygons { get; private set; } + public ExposedList BoundingBoxes { get; private set; } + public ExposedList Polygons { get; private set; } public float MinX { get { return minX; } set { minX = value; } } public float MinY { get { return minY; } set { minY = value; } } public float MaxX { get { return maxX; } set { maxX = value; } } @@ -46,23 +47,23 @@ namespace Spine { public float Height { get { return maxY - minY; } } public SkeletonBounds () { - BoundingBoxes = new List(); - Polygons = new List(); + BoundingBoxes = new ExposedList(); + Polygons = new ExposedList(); } public void Update (Skeleton skeleton, bool updateAabb) { - List boundingBoxes = BoundingBoxes; - List polygons = Polygons; - List slots = skeleton.slots; + ExposedList boundingBoxes = BoundingBoxes; + ExposedList polygons = Polygons; + ExposedList slots = skeleton.slots; int slotCount = slots.Count; boundingBoxes.Clear(); - foreach (Polygon polygon in polygons) - polygonPool.Add(polygon); + for (int i = 0, n = polygons.Count; i < n; i++) + polygonPool.Add(polygons.Items[i]); polygons.Clear(); for (int i = 0; i < slotCount; i++) { - Slot slot = slots[i]; + Slot slot = slots.Items[i]; BoundingBoxAttachment boundingBox = slot.attachment as BoundingBoxAttachment; if (boundingBox == null) continue; boundingBoxes.Add(boundingBox); @@ -70,7 +71,7 @@ namespace Spine { Polygon polygon = null; int poolCount = polygonPool.Count; if (poolCount > 0) { - polygon = polygonPool[poolCount - 1]; + polygon = polygonPool.Items[poolCount - 1]; polygonPool.RemoveAt(poolCount - 1); } else polygon = new Polygon(); @@ -87,9 +88,9 @@ namespace Spine { private void aabbCompute () { float minX = int.MaxValue, minY = int.MaxValue, maxX = int.MinValue, maxY = int.MinValue; - List polygons = Polygons; + ExposedList polygons = Polygons; for (int i = 0, n = polygons.Count; i < n; i++) { - Polygon polygon = polygons[i]; + Polygon polygon = polygons.Items[i]; float[] vertices = polygon.Vertices; for (int ii = 0, nn = polygon.Count; ii < nn; ii += 2) { float x = vertices[ii]; @@ -159,18 +160,18 @@ namespace Spine { /// Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more /// efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. public BoundingBoxAttachment ContainsPoint (float x, float y) { - List polygons = Polygons; + ExposedList polygons = Polygons; for (int i = 0, n = polygons.Count; i < n; i++) - if (ContainsPoint(polygons[i], x, y)) return BoundingBoxes[i]; + if (ContainsPoint(polygons.Items[i], x, y)) return BoundingBoxes.Items[i]; return null; } /// Returns the first bounding box attachment that contains the line segment, or null. When doing many checks, it is usually /// more efficient to only call this method if {@link #aabbIntersectsSegment(float, float, float, float)} returns true. public BoundingBoxAttachment IntersectsSegment (float x1, float y1, float x2, float y2) { - List polygons = Polygons; + ExposedList polygons = Polygons; for (int i = 0, n = polygons.Count; i < n; i++) - if (IntersectsSegment(polygons[i], x1, y1, x2, y2)) return BoundingBoxes[i]; + if (IntersectsSegment(polygons.Items[i], x1, y1, x2, y2)) return BoundingBoxes.Items[i]; return null; } @@ -200,7 +201,7 @@ namespace Spine { public Polygon getPolygon (BoundingBoxAttachment attachment) { int index = BoundingBoxes.IndexOf(attachment); - return index == -1 ? null : Polygons[index]; + return index == -1 ? null : Polygons.Items[index]; } } diff --git a/spine-csharp/src/SkeletonData.cs b/spine-csharp/src/SkeletonData.cs index 48b500363..f7b41a35a 100644 --- a/spine-csharp/src/SkeletonData.cs +++ b/spine-csharp/src/SkeletonData.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -34,25 +35,25 @@ using System.Collections.Generic; namespace Spine { public class SkeletonData { internal String name; - internal List bones = new List(); - internal List slots = new List(); - internal List skins = new List(); + internal ExposedList bones = new ExposedList(); + internal ExposedList slots = new ExposedList(); + internal ExposedList skins = new ExposedList(); internal Skin defaultSkin; - internal List events = new List(); - internal List animations = new List(); - internal List ikConstraints = new List(); + internal ExposedList events = new ExposedList(); + internal ExposedList animations = new ExposedList(); + internal ExposedList ikConstraints = new ExposedList(); internal float width, height; - internal String version, hash; + internal String version, hash, imagesPath; public String Name { get { return name; } set { name = value; } } - public List Bones { get { return bones; } } // Ordered parents first. - public List Slots { get { return slots; } } // Setup pose draw order. - public List Skins { get { return skins; } set { skins = value; } } + public ExposedList Bones { get { return bones; } } // Ordered parents first. + public ExposedList Slots { get { return slots; } } // Setup pose draw order. + public ExposedList Skins { get { return skins; } set { skins = value; } } /// May be null. public Skin DefaultSkin { get { return defaultSkin; } set { defaultSkin = value; } } - public List Events { get { return events; } set { events = value; } } - public List Animations { get { return animations; } set { animations = value; } } - public List IkConstraints { get { return ikConstraints; } set { ikConstraints = value; } } + public ExposedList Events { get { return events; } set { events = value; } } + public ExposedList Animations { get { return animations; } set { animations = value; } } + public ExposedList IkConstraints { get { return ikConstraints; } set { ikConstraints = value; } } public float Width { get { return width; } set { width = value; } } public float Height { get { return height; } set { height = value; } } /// The Spine version used to export this data. @@ -64,9 +65,9 @@ namespace Spine { /// May be null. public BoneData FindBone (String boneName) { if (boneName == null) throw new ArgumentNullException("boneName cannot be null."); - List bones = this.bones; + ExposedList bones = this.bones; for (int i = 0, n = bones.Count; i < n; i++) { - BoneData bone = bones[i]; + BoneData bone = bones.Items[i]; if (bone.name == boneName) return bone; } return null; @@ -75,9 +76,9 @@ namespace Spine { /// -1 if the bone was not found. public int FindBoneIndex (String boneName) { if (boneName == null) throw new ArgumentNullException("boneName cannot be null."); - List bones = this.bones; + ExposedList bones = this.bones; for (int i = 0, n = bones.Count; i < n; i++) - if (bones[i].name == boneName) return i; + if (bones.Items[i].name == boneName) return i; return -1; } @@ -86,9 +87,9 @@ namespace Spine { /// May be null. public SlotData FindSlot (String slotName) { if (slotName == null) throw new ArgumentNullException("slotName cannot be null."); - List slots = this.slots; + ExposedList slots = this.slots; for (int i = 0, n = slots.Count; i < n; i++) { - SlotData slot = slots[i]; + SlotData slot = slots.Items[i]; if (slot.name == slotName) return slot; } return null; @@ -97,14 +98,14 @@ namespace Spine { /// -1 if the bone was not found. public int FindSlotIndex (String slotName) { if (slotName == null) throw new ArgumentNullException("slotName cannot be null."); - List slots = this.slots; + ExposedList slots = this.slots; for (int i = 0, n = slots.Count; i < n; i++) - if (slots[i].name == slotName) return i; + if (slots.Items[i].name == slotName) return i; return -1; } // --- Skins. - + /// May be null. public Skin FindSkin (String skinName) { if (skinName == null) throw new ArgumentNullException("skinName cannot be null."); @@ -124,13 +125,13 @@ namespace Spine { } // --- Animations. - + /// May be null. public Animation FindAnimation (String animationName) { if (animationName == null) throw new ArgumentNullException("animationName cannot be null."); - List animations = this.animations; + ExposedList animations = this.animations; for (int i = 0, n = animations.Count; i < n; i++) { - Animation animation = animations[i]; + Animation animation = animations.Items[i]; if (animation.name == animationName) return animation; } return null; @@ -141,9 +142,9 @@ namespace Spine { /// May be null. public IkConstraintData FindIkConstraint (String ikConstraintName) { if (ikConstraintName == null) throw new ArgumentNullException("ikConstraintName cannot be null."); - List ikConstraints = this.ikConstraints; + ExposedList ikConstraints = this.ikConstraints; for (int i = 0, n = ikConstraints.Count; i < n; i++) { - IkConstraintData ikConstraint = ikConstraints[i]; + IkConstraintData ikConstraint = ikConstraints.Items[i]; if (ikConstraint.name == ikConstraintName) return ikConstraint; } return null; diff --git a/spine-csharp/src/SkeletonJson.cs b/spine-csharp/src/SkeletonJson.cs index b83f88a82..ba530941b 100644 --- a/spine-csharp/src/SkeletonJson.cs +++ b/spine-csharp/src/SkeletonJson.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -53,25 +54,24 @@ namespace Spine { } #if WINDOWS_STOREAPP - private async Task ReadFile(string path) { - var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; - var file = await folder.GetFileAsync(path).AsTask().ConfigureAwait(false); - using (var reader = new StreamReader(await file.OpenStreamForReadAsync().ConfigureAwait(false))) { - SkeletonData skeletonData = ReadSkeletonData(reader); - skeletonData.Name = Path.GetFileNameWithoutExtension(path); - return skeletonData; - } - } + private async Task ReadFile(string path) { + var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; + var file = await folder.GetFileAsync(path).AsTask().ConfigureAwait(false); + using (var reader = new StreamReader(await file.OpenStreamForReadAsync().ConfigureAwait(false))) { + SkeletonData skeletonData = ReadSkeletonData(reader); + skeletonData.Name = Path.GetFileNameWithoutExtension(path); + return skeletonData; + } + } public SkeletonData ReadSkeletonData (String path) { - return this.ReadFile(path).Result; + return this.ReadFile(path).Result; } #else public SkeletonData ReadSkeletonData (String path) { #if WINDOWS_PHONE - Stream stream = Microsoft.Xna.Framework.TitleContainer.OpenStream(path); - using (StreamReader reader = new StreamReader(stream)) - { + Stream stream = Microsoft.Xna.Framework.TitleContainer.OpenStream(path); + using (StreamReader reader = new StreamReader(stream)) { #else using (StreamReader reader = new StreamReader(path)) { #endif @@ -164,8 +164,10 @@ namespace Spine { if (slotMap.ContainsKey("attachment")) slotData.attachmentName = (String)slotMap["attachment"]; - if (slotMap.ContainsKey("additive")) - slotData.additiveBlending = (bool)slotMap["additive"]; + if (slotMap.ContainsKey("blend")) + slotData.blendMode = (BlendMode)Enum.Parse(typeof(BlendMode), (String)slotMap["blend"], false); + else + slotData.blendMode = BlendMode.normal; skeletonData.slots.Add(slotData); } @@ -209,7 +211,9 @@ namespace Spine { skeletonData.bones.TrimExcess(); skeletonData.slots.TrimExcess(); skeletonData.skins.TrimExcess(); + skeletonData.events.TrimExcess(); skeletonData.animations.TrimExcess(); + skeletonData.ikConstraints.TrimExcess(); return skeletonData; } @@ -252,7 +256,7 @@ namespace Spine { MeshAttachment mesh = attachmentLoader.NewMeshAttachment(skin, name, path); if (mesh == null) return null; - mesh.Path = path; + mesh.Path = path; mesh.vertices = GetFloatArray(map, "vertices", Scale); mesh.triangles = GetIntArray(map, "triangles"); mesh.regionUVs = GetFloatArray(map, "uvs", 1); @@ -369,14 +373,14 @@ namespace Spine { return (String)map[name]; } - public static float ToColor (String hexString, int colorIndex) { + private float ToColor (String hexString, int colorIndex) { if (hexString.Length != 8) throw new ArgumentException("Color hexidecimal length must be 8, recieved: " + hexString); return Convert.ToInt32(hexString.Substring(colorIndex * 2, 2), 16) / (float)255; } private void ReadAnimation (String name, Dictionary map, SkeletonData skeletonData) { - var timelines = new List(); + var timelines = new ExposedList(); float duration = 0; float scale = Scale; @@ -397,7 +401,7 @@ namespace Spine { foreach (Dictionary valueMap in values) { float time = (float)valueMap["time"]; String c = (String)valueMap["color"]; - timeline.setFrame(frameIndex, time, ToColor(c, 0), ToColor(c, 1), ToColor(c, 2), ToColor(c, 3)); + timeline.SetFrame(frameIndex, time, ToColor(c, 0), ToColor(c, 1), ToColor(c, 2), ToColor(c, 3)); ReadCurve(timeline, frameIndex, valueMap); frameIndex++; } @@ -411,7 +415,7 @@ namespace Spine { int frameIndex = 0; foreach (Dictionary valueMap in values) { float time = (float)valueMap["time"]; - timeline.setFrame(frameIndex++, time, (String)valueMap["name"]); + timeline.SetFrame(frameIndex++, time, (String)valueMap["name"]); } timelines.Add(timeline); duration = Math.Max(duration, timeline.frames[timeline.FrameCount - 1]); @@ -502,7 +506,7 @@ namespace Spine { float time = (float)valueMap["time"]; float mix = valueMap.ContainsKey("mix") ? (float)valueMap["mix"] : 1; bool bendPositive = valueMap.ContainsKey("bendPositive") ? (bool)valueMap["bendPositive"] : true; - timeline.setFrame(frameIndex, time, mix, bendPositive ? 1 : -1); + timeline.SetFrame(frameIndex, time, mix, bendPositive ? 1 : -1); ReadCurve(timeline, frameIndex, valueMap); frameIndex++; } @@ -556,7 +560,7 @@ namespace Spine { } } - timeline.setFrame(frameIndex, (float)valueMap["time"], vertices); + timeline.SetFrame(frameIndex, (float)valueMap["time"], vertices); ReadCurve(timeline, frameIndex, valueMap); frameIndex++; } @@ -598,7 +602,7 @@ namespace Spine { for (int i = slotCount - 1; i >= 0; i--) if (drawOrder[i] == -1) drawOrder[i] = unchanged[--unchangedIndex]; } - timeline.setFrame(frameIndex++, (float)drawOrderMap["time"], drawOrder); + timeline.SetFrame(frameIndex++, (float)drawOrderMap["time"], drawOrder); } timelines.Add(timeline); duration = Math.Max(duration, timeline.frames[timeline.FrameCount - 1]); @@ -615,7 +619,7 @@ namespace Spine { e.Int = GetInt(eventMap, "int", eventData.Int); e.Float = GetFloat(eventMap, "float", eventData.Float); e.String = GetString(eventMap, "string", eventData.String); - timeline.setFrame(frameIndex++, (float)eventMap["time"], e); + timeline.SetFrame(frameIndex++, (float)eventMap["time"], e); } timelines.Add(timeline); duration = Math.Max(duration, timeline.frames[timeline.FrameCount - 1]); diff --git a/spine-csharp/src/Skin.cs b/spine-csharp/src/Skin.cs index e8e68d3dc..4c1c1edaa 100644 --- a/spine-csharp/src/Skin.cs +++ b/spine-csharp/src/Skin.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -35,8 +36,8 @@ namespace Spine { /// Stores attachments by slot index and attachment name. public class Skin { internal String name; - private Dictionary, Attachment> attachments = - new Dictionary, Attachment>(AttachmentComparer.Instance); + private Dictionary attachments = + new Dictionary(AttachmentKeyTupleComparer.Instance); public String Name { get { return name; } } @@ -47,26 +48,26 @@ namespace Spine { public void AddAttachment (int slotIndex, String name, Attachment attachment) { if (attachment == null) throw new ArgumentNullException("attachment cannot be null."); - attachments[new KeyValuePair(slotIndex, name)] = attachment; + attachments[new AttachmentKeyTuple(slotIndex, name)] = attachment; } /// May be null. public Attachment GetAttachment (int slotIndex, String name) { Attachment attachment; - attachments.TryGetValue(new KeyValuePair(slotIndex, name), out attachment); + attachments.TryGetValue(new AttachmentKeyTuple(slotIndex, name), out attachment); return attachment; } public void FindNamesForSlot (int slotIndex, List names) { if (names == null) throw new ArgumentNullException("names cannot be null."); - foreach (KeyValuePair key in attachments.Keys) - if (key.Key == slotIndex) names.Add(key.Value); + foreach (AttachmentKeyTuple key in attachments.Keys) + if (key.SlotIndex == slotIndex) names.Add(key.Name); } public void FindAttachmentsForSlot (int slotIndex, List attachments) { if (attachments == null) throw new ArgumentNullException("attachments cannot be null."); - foreach (KeyValuePair, Attachment> entry in this.attachments) - if (entry.Key.Key == slotIndex) attachments.Add(entry.Value); + foreach (KeyValuePair entry in this.attachments) + if (entry.Key.SlotIndex == slotIndex) attachments.Add(entry.Value); } override public String ToString () { @@ -75,26 +76,38 @@ namespace Spine { /// Attach all attachments from this skin if the corresponding attachment from the old skin is currently attached. internal void AttachAll (Skeleton skeleton, Skin oldSkin) { - foreach (KeyValuePair, Attachment> entry in oldSkin.attachments) { - int slotIndex = entry.Key.Key; - Slot slot = skeleton.slots[slotIndex]; + foreach (KeyValuePair entry in oldSkin.attachments) { + int slotIndex = entry.Key.SlotIndex; + Slot slot = skeleton.slots.Items[slotIndex]; if (slot.attachment == entry.Value) { - Attachment attachment = GetAttachment(slotIndex, entry.Key.Value); + Attachment attachment = GetAttachment(slotIndex, entry.Key.Name); if (attachment != null) slot.Attachment = attachment; } } } // Avoids boxing in the dictionary. - private class AttachmentComparer : IEqualityComparer> { - internal static readonly AttachmentComparer Instance = new AttachmentComparer(); + private class AttachmentKeyTupleComparer : IEqualityComparer { + internal static readonly AttachmentKeyTupleComparer Instance = new AttachmentKeyTupleComparer(); - bool IEqualityComparer>.Equals (KeyValuePair o1, KeyValuePair o2) { - return o1.Key == o2.Key && o1.Value == o2.Value; + bool IEqualityComparer.Equals (AttachmentKeyTuple o1, AttachmentKeyTuple o2) { + return o1.SlotIndex == o2.SlotIndex && o1.NameHashCode == o2.NameHashCode && o1.Name == o2.Name; } - int IEqualityComparer>.GetHashCode (KeyValuePair o) { - return o.Key; + int IEqualityComparer.GetHashCode (AttachmentKeyTuple o) { + return o.SlotIndex; + } + } + + private class AttachmentKeyTuple { + public readonly int SlotIndex; + public readonly string Name; + public readonly int NameHashCode; + + public AttachmentKeyTuple (int slotIndex, string name) { + SlotIndex = slotIndex; + Name = name; + NameHashCode = Name.GetHashCode(); } } } diff --git a/spine-csharp/src/Slot.cs b/spine-csharp/src/Slot.cs index e5c382a5a..e8d393baf 100644 --- a/spine-csharp/src/Slot.cs +++ b/spine-csharp/src/Slot.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-csharp/src/SlotData.cs b/spine-csharp/src/SlotData.cs index dd74f4ff1..1a0e072b6 100644 --- a/spine-csharp/src/SlotData.cs +++ b/spine-csharp/src/SlotData.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -36,7 +37,7 @@ namespace Spine { internal BoneData boneData; internal float r = 1, g = 1, b = 1, a = 1; internal String attachmentName; - internal bool additiveBlending; + internal BlendMode blendMode; public String Name { get { return name; } } public BoneData BoneData { get { return boneData; } } @@ -46,7 +47,7 @@ namespace Spine { public float A { get { return a; } set { a = value; } } /// May be null. public String AttachmentName { get { return attachmentName; } set { attachmentName = value; } } - public bool AdditiveBlending { get { return additiveBlending; } set { additiveBlending = value; } } + public BlendMode BlendMode { get { return blendMode; } set { blendMode = value; } } public SlotData (String name, BoneData boneData) { if (name == null) throw new ArgumentNullException("name cannot be null."); diff --git a/spine-js/LICENSE b/spine-js/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-js/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-js/README.md b/spine-js/README.md index 330726673..428d6d714 100644 --- a/spine-js/README.md +++ b/spine-js/README.md @@ -2,10 +2,24 @@ The spine-js runtime provides functionality to load and manipulate [Spine](http://esotericsoftware.com) skeletal animation data using JavaScript. It does not perform rendering but can be extended to enable Spine animations for other JavaScript-based projects. +# spine-canvas + +The spine-canvas runtime extends spine-js to perform rendering using an HTML5 canvas. Because it renders rectangular images, nonuniform scaling and mesh attachments are not supported. + +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). -1. Include the `spine.js` file in your project. +1. Include the `spine.js` file (and optionally the `spine-canvas.js` file) in your project. + +## Demos + +- [spine-canvas](http://esotericsoftware.com/files/runtimes/spine-js/example/) ## Runtimes Extending spine-js diff --git a/spine-js/example/index.html b/spine-js/example/index.html new file mode 100644 index 000000000..3f2a61b74 --- /dev/null +++ b/spine-js/example/index.html @@ -0,0 +1,90 @@ + + + + + + +spine-canvas + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + \ No newline at end of file diff --git a/spine-js/spine-canvas.js b/spine-js/spine-canvas.js new file mode 100644 index 000000000..cef4beb1b --- /dev/null +++ b/spine-js/spine-canvas.js @@ -0,0 +1,119 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +spine.SkeletonRenderer = function (imagesPath) { + this.imagesPath = imagesPath; + this.lastTime = Date.now(); +}; + +spine.SkeletonRenderer.prototype = { + skeletonData: null, + state: null, + scale: 1, + skeleton: null, + + load: function(jsonText) { + var imagesPath = this.imagesPath; + var json = new spine.SkeletonJson({ + newRegionAttachment: function (skin, name, path) { + var image = new Image(); + image.src = imagesPath + path + ".png"; + var attachment = new spine.RegionAttachment(name); + attachment.rendererObject = image; + return attachment; + }, + newBoundingBoxAttachment: function (skin, name) { + return new spine.BoundingBoxAttachment(name); + } + }); + json.scale = this.scale; + this.skeletonData = json.readSkeletonData(JSON.parse(jsonText)); + spine.Bone.yDown = true; + + this.skeleton = new spine.Skeleton(this.skeletonData); + + var stateData = new spine.AnimationStateData(this.skeletonData); + this.state = new spine.AnimationState(stateData); + }, + + update: function() { + var now = Date.now(); + var delta = (now - this.lastTime) / 1000; + this.lastTime = now; + + this.state.update(delta); + this.state.apply(this.skeleton); + this.skeleton.updateWorldTransform(); + }, + + render: function(context) { + var skeleton = this.skeleton, drawOrder = skeleton.drawOrder; + context.translate(skeleton.x, skeleton.y); + + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var attachment = slot.attachment; + if (!(attachment instanceof spine.RegionAttachment)) continue; + var bone = slot.bone; + + var x = bone.worldX + attachment.x * bone.m00 + attachment.y * bone.m01; + var y = bone.worldY + attachment.x * bone.m10 + attachment.y * bone.m11; + var rotation = -(bone.worldRotation + attachment.rotation) * Math.PI / 180; + var w = attachment.width * bone.worldScaleX, h = attachment.height * bone.worldScaleY; + context.translate(x, y); + context.rotate(rotation); + context.drawImage(attachment.rendererObject, -w / 2, -h / 2, w, h); + context.rotate(-rotation); + context.translate(-x, -y); + } + + context.translate(-skeleton.x, -skeleton.y); + }, + + animate: function (id) { + var canvas = document.getElementById(id); + var context = canvas.getContext("2d"); + var requestAnimationFrame = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + function (callback) { + window.setTimeout(callback, 1000 / 60); + }; + var self = this; + function renderFrame () { + context.clearRect(0, 0, canvas.width, canvas.height); + self.update(); + self.render(context); + requestAnimationFrame(renderFrame); + }; + renderFrame(); + } +}; diff --git a/spine-js/spine.js b/spine-js/spine.js index 9d5ade2a4..bee97ed2d 100644 --- a/spine-js/spine.js +++ b/spine-js/spine.js @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -50,6 +51,13 @@ spine.BoneData.prototype = { flipX: false, flipY: false }; +spine.BlendMode = { + normal: 0, + additive: 1, + multiply: 2, + screen: 3 +}; + spine.SlotData = function (name, boneData) { this.name = name; this.boneData = boneData; @@ -57,7 +65,7 @@ spine.SlotData = function (name, boneData) { spine.SlotData.prototype = { r: 1, g: 1, b: 1, a: 1, attachmentName: null, - additiveBlending: false + blendMode: spine.BlendMode.normal }; spine.IkConstraintData = function (name) { @@ -887,7 +895,7 @@ spine.FlipXTimeline.prototype = { lastTime = -1; var frameIndex = (time >= frames[frames.length - 2] ? frames.length : spine.Animation.binarySearch(frames, time, 2)) - 2; if (frames[frameIndex] < lastTime) return; - skeleton.bones[boneIndex].flipX = frames[frameIndex + 1] != 0; + skeleton.bones[this.boneIndex].flipX = frames[frameIndex + 1] != 0; } }; @@ -915,7 +923,7 @@ spine.FlipYTimeline.prototype = { lastTime = -1; var frameIndex = (time >= frames[frames.length - 2] ? frames.length : spine.Animation.binarySearch(frames, time, 2)) - 2; if (frames[frameIndex] < lastTime) return; - skeleton.bones[boneIndex].flipY = frames[frameIndex + 1] != 0; + skeleton.bones[this.boneIndex].flipY = frames[frameIndex + 1] != 0; } }; @@ -1766,7 +1774,7 @@ spine.SkeletonJson.prototype = { } slotData.attachmentName = slotMap["attachment"]; - slotData.additiveBlending = slotMap["additive"] && slotMap["additive"] == "true"; + slotData.blendMode = spine.BlendMode[slotMap["blend"] || "normal"]; skeletonData.slots.push(slotData); } diff --git a/spine-libgdx/LICENSE b/spine-libgdx/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-libgdx/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-libgdx/README.md b/spine-libgdx/README.md index 40a145443..db3d7570b 100644 --- a/spine-libgdx/README.md +++ b/spine-libgdx/README.md @@ -2,6 +2,12 @@ The spine-libgdx runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [libgdx](http://www.libgdx.com/). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-libgdx/spine-libgdx-tests/assets/raptor/raptor.skel b/spine-libgdx/spine-libgdx-tests/assets/raptor/raptor.skel index 249f5e1be..507d86e2e 100644 Binary files a/spine-libgdx/spine-libgdx-tests/assets/raptor/raptor.skel and b/spine-libgdx/spine-libgdx-tests/assets/raptor/raptor.skel differ diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/AttachmentTimelineTests.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/AttachmentTimelineTests.java index 2d98b20aa..2134db0e5 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/AttachmentTimelineTests.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/AttachmentTimelineTests.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/BonePlotting.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/BonePlotting.java new file mode 100644 index 000000000..e6457b76c --- /dev/null +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/BonePlotting.java @@ -0,0 +1,76 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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.files.FileHandle; +import com.esotericsoftware.spine.attachments.AttachmentLoader; +import com.esotericsoftware.spine.attachments.BoundingBoxAttachment; +import com.esotericsoftware.spine.attachments.MeshAttachment; +import com.esotericsoftware.spine.attachments.RegionAttachment; +import com.esotericsoftware.spine.attachments.SkinnedMeshAttachment; + +public class BonePlotting { + static public void main (String[] args) throws Exception { + // This example shows how to load skeleton data and plot a bone transform for each animation. + SkeletonJson json = new SkeletonJson(new AttachmentLoader() { + public SkinnedMeshAttachment newSkinnedMeshAttachment (Skin skin, String name, String path) { + return null; + } + + public RegionAttachment newRegionAttachment (Skin skin, String name, String path) { + return null; + } + + public MeshAttachment newMeshAttachment (Skin skin, String name, String path) { + return null; + } + + public BoundingBoxAttachment newBoundingBoxAttachment (Skin skin, String name) { + return null; + } + }); + SkeletonData skeletonData = json.readSkeletonData(new FileHandle("assets/spineboy/spineboy.json")); + Skeleton skeleton = new Skeleton(skeletonData); + Bone bone = skeleton.findBone("gunTip"); + float fps = 1 / 15f; + for (Animation animation : skeletonData.getAnimations()) { + float time = 0; + while (time < animation.getDuration()) { + animation.apply(skeleton, time, time, false, null); + skeleton.updateWorldTransform(); + System.out.println(animation.getName() + "," + bone.getWorldX() + "," + bone.getWorldY() + "," + + bone.getWorldRotation() + "," + bone.getWorldScaleX() + "," + bone.getWorldScaleY()); + time += fps; + } + } + } +} diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Box2DExample.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Box2DExample.java index d73c92502..4eb4c2216 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Box2DExample.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Box2DExample.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/EventTimelineTests.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/EventTimelineTests.java index 1509193db..96703da54 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/EventTimelineTests.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/EventTimelineTests.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/IkTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/IkTest.java index 7b5b189dd..d8c1a0045 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/IkTest.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/IkTest.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/MixTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/MixTest.java index dd1716bd3..844f49f8a 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/MixTest.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/MixTest.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/NormalMapTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/NormalMapTest.java index ea099758a..8cf25a1fd 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/NormalMapTest.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/NormalMapTest.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -53,8 +54,8 @@ import com.badlogic.gdx.scenes.scene2d.ui.Slider; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.Window; -import com.badlogic.gdx.scenes.scene2d.utils.Align; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; +import com.badlogic.gdx.utils.Align; public class NormalMapTest extends ApplicationAdapter { String skeletonPath, animationName; @@ -303,7 +304,7 @@ public class NormalMapTest extends ApplicationAdapter { TextButton resetButton = new TextButton("Reset", skin); resetButton.getColor().a = 0.66f; - window.getButtonTable().add(resetButton).height(20); + window.getTitleTable().add(resetButton).height(20); window.add(root).expand().fill(); window.pack(); diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java index 18f7c5077..9201d1a1d 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest1.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java index ed1ad2887..f0ffafca2 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest2.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java index eae6d8cd6..e99cdbc2c 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SimpleTest3.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAttachmentTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAttachmentTest.java index 36f613b73..10f553f98 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAttachmentTest.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/SkeletonAttachmentTest.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java index 0a0571dac..20cb87c23 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java index 2a1a17364..f3e40c05d 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -301,7 +302,7 @@ public class AnimationState { TrackEntry next, previous; Animation animation; boolean loop; - float delay, time, lastTime = 0, endTime, timeScale = 1; + float delay, time, lastTime = -1, endTime, timeScale = 1; float mixTime, mixDuration; AnimationStateListener listener; float mix = 1; @@ -312,7 +313,7 @@ public class AnimationState { animation = null; listener = null; timeScale = 1; - lastTime = 0; + lastTime = -1; // Trigger events on frame zero. time = 0; } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java index 1aed2a0f2..84a2151f4 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationStatePR.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationStatePR.java index 9b90a0d63..adf510796 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationStatePR.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationStatePR.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/BlendMode.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/BlendMode.java new file mode 100644 index 000000000..f4a32197d --- /dev/null +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/BlendMode.java @@ -0,0 +1,60 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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.graphics.GL20; + +public enum BlendMode { + normal(GL20.GL_SRC_ALPHA, GL20.GL_ONE, GL20.GL_ONE_MINUS_SRC_ALPHA), // + additive(GL20.GL_SRC_ALPHA, GL20.GL_ONE, GL20.GL_ONE), // + multiply(GL20.GL_DST_COLOR, GL20.GL_DST_COLOR, GL20.GL_ONE_MINUS_SRC_ALPHA), // + screen(GL20.GL_ONE, GL20.GL_ONE, GL20.GL_ONE_MINUS_SRC_COLOR), // + ; + + int source, sourcePMA, dest; + + BlendMode (int source, int sourcePremultipledAlpha, int dest) { + this.source = source; + this.sourcePMA = sourcePremultipledAlpha; + this.dest = dest; + } + + public int getSource (boolean premultipliedAlpha) { + return premultipliedAlpha ? sourcePMA : source; + } + + public int getDest () { + return dest; + } + + static public BlendMode[] values = values(); +} diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java index 46f672b05..d1972637d 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/BoneData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/BoneData.java index 37c5a5e6c..dabbf08e0 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/BoneData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/BoneData.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Event.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Event.java index f3cf56c86..8f0061f05 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Event.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Event.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/EventData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/EventData.java index d76e23ac3..8bd6b61dc 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/EventData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/EventData.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java index 332793ff4..966443894 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java @@ -1,3 +1,33 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraintData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraintData.java index 6031d2c81..ef1bf0bc2 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraintData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraintData.java @@ -1,3 +1,33 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java index 6d0883b11..582e78334 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -402,6 +403,7 @@ public class Skeleton { return color; } + /** A convenience method for setting the skeleton color. The color can also be set by modifying {@link #getColor()}. */ public void setColor (Color color) { this.color.set(color); } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java index a7834d50a..b032e3c28 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -160,7 +161,7 @@ public class SkeletonBinary { SlotData slotData = new SlotData(slotName, boneData); Color.rgba8888ToColor(slotData.color, input.readInt()); slotData.attachmentName = input.readString(); - slotData.additiveBlending = input.readBoolean(); + slotData.blendMode = BlendMode.values[input.readInt(true)]; skeletonData.slots.add(slotData); } @@ -200,6 +201,9 @@ public class SkeletonBinary { skeletonData.bones.shrink(); skeletonData.slots.shrink(); skeletonData.skins.shrink(); + skeletonData.events.shrink(); + skeletonData.animations.shrink(); + skeletonData.ikConstraints.shrink(); return skeletonData; } @@ -224,7 +228,7 @@ public class SkeletonBinary { String name = input.readString(); if (name == null) name = attachmentName; - switch (AttachmentType.values()[input.readByte()]) { + switch (AttachmentType.values[input.readByte()]) { case region: { String path = input.readString(); if (path == null) path = name; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBounds.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBounds.java index d3dd4444c..b8233dbda 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBounds.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBounds.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java index a845e8ab6..cc7b63bcc 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java index 1bf073fae..b5f9c5b90 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -161,9 +162,7 @@ public class SkeletonJson { if (color != null) slotData.getColor().set(Color.valueOf(color)); slotData.attachmentName = slotMap.getString("attachment", null); - - slotData.additiveBlending = slotMap.getBoolean("additive", false); - + slotData.blendMode = BlendMode.valueOf(slotMap.getString("blend", BlendMode.normal.name())); skeletonData.slots.add(slotData); } @@ -198,7 +197,9 @@ public class SkeletonJson { skeletonData.bones.shrink(); skeletonData.slots.shrink(); skeletonData.skins.shrink(); + skeletonData.events.shrink(); skeletonData.animations.shrink(); + skeletonData.ikConstraints.shrink(); return skeletonData; } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java index e0c58a241..d3e16a7e5 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -30,18 +31,16 @@ package com.esotericsoftware.spine; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch; +import com.badlogic.gdx.utils.Array; import com.esotericsoftware.spine.attachments.Attachment; import com.esotericsoftware.spine.attachments.MeshAttachment; import com.esotericsoftware.spine.attachments.RegionAttachment; import com.esotericsoftware.spine.attachments.SkeletonAttachment; import com.esotericsoftware.spine.attachments.SkinnedMeshAttachment; -import com.badlogic.gdx.graphics.GL20; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.Batch; -import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch; -import com.badlogic.gdx.utils.Array; - public class SkeletonRenderer { static private final short[] quadTriangles = {0, 1, 2, 2, 3, 0}; @@ -50,10 +49,7 @@ public class SkeletonRenderer { @SuppressWarnings("null") public void draw (PolygonSpriteBatch batch, Skeleton skeleton) { boolean premultipliedAlpha = this.premultipliedAlpha; - int srcFunc = premultipliedAlpha ? GL20.GL_ONE : GL20.GL_SRC_ALPHA; - batch.setBlendFunction(srcFunc, GL20.GL_ONE_MINUS_SRC_ALPHA); - - boolean additive = false; + BlendMode blendMode = null; float[] vertices = null; short[] triangles = null; @@ -106,12 +102,10 @@ public class SkeletonRenderer { } if (texture != null) { - if (slot.data.getAdditiveBlending() != additive) { - additive = !additive; - if (additive) - batch.setBlendFunction(srcFunc, GL20.GL_ONE); - else - batch.setBlendFunction(srcFunc, GL20.GL_ONE_MINUS_SRC_ALPHA); + BlendMode slotBlendMode = slot.data.getBlendMode(); + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batch.setBlendFunction(blendMode.getSource(premultipliedAlpha), blendMode.getDest()); } batch.draw(texture, vertices, 0, vertices.length, triangles, 0, triangles.length); } @@ -120,10 +114,7 @@ public class SkeletonRenderer { public void draw (Batch batch, Skeleton skeleton) { boolean premultipliedAlpha = this.premultipliedAlpha; - int srcFunc = premultipliedAlpha ? GL20.GL_ONE : GL20.GL_SRC_ALPHA; - batch.setBlendFunction(srcFunc, GL20.GL_ONE_MINUS_SRC_ALPHA); - - boolean additive = false; + BlendMode blendMode = null; Array drawOrder = skeleton.drawOrder; for (int i = 0, n = drawOrder.size; i < n; i++) { @@ -133,12 +124,10 @@ public class SkeletonRenderer { RegionAttachment regionAttachment = (RegionAttachment)attachment; regionAttachment.updateWorldVertices(slot, premultipliedAlpha); float[] vertices = regionAttachment.getWorldVertices(); - if (slot.data.getAdditiveBlending() != additive) { - additive = !additive; - if (additive) - batch.setBlendFunction(srcFunc, GL20.GL_ONE); - else - batch.setBlendFunction(srcFunc, GL20.GL_ONE_MINUS_SRC_ALPHA); + BlendMode slotBlendMode = slot.data.getBlendMode(); + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batch.setBlendFunction(blendMode.getSource(premultipliedAlpha), blendMode.getDest()); } batch.draw(regionAttachment.getRegion().getTexture(), vertices, 0, 20); diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRendererDebug.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRendererDebug.java index 14083c5b0..44e1d63cf 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRendererDebug.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRendererDebug.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skin.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skin.java index 3fdc10980..b42dff56f 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skin.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skin.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slot.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slot.java index 3773be54a..a78b34412 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slot.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slot.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SlotData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SlotData.java index d434ff09c..951e42d23 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SlotData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SlotData.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -37,7 +38,7 @@ public class SlotData { final BoneData boneData; final Color color = new Color(1, 1, 1, 1); String attachmentName; - boolean additiveBlending; + BlendMode blendMode; SlotData () { name = null; @@ -73,12 +74,12 @@ public class SlotData { return attachmentName; } - public boolean getAdditiveBlending () { - return additiveBlending; + public BlendMode getBlendMode () { + return blendMode; } - public void setAdditiveBlending (boolean additiveBlending) { - this.additiveBlending = additiveBlending; + public void setBlendMode (BlendMode blendMode) { + this.blendMode = blendMode; } public String toString () { diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AtlasAttachmentLoader.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AtlasAttachmentLoader.java index ca32cad23..001cc515f 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AtlasAttachmentLoader.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AtlasAttachmentLoader.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/Attachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/Attachment.java index de6f1e9d2..dcd5ccf3c 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/Attachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/Attachment.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AttachmentLoader.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AttachmentLoader.java index 8a74cff3c..8e0786130 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AttachmentLoader.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AttachmentLoader.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AttachmentType.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AttachmentType.java index ba75c605b..f4746cfb0 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AttachmentType.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/AttachmentType.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -31,5 +32,7 @@ package com.esotericsoftware.spine.attachments; public enum AttachmentType { - region, boundingbox, mesh, skinnedmesh + region, boundingbox, mesh, skinnedmesh; + + static public AttachmentType[] values = values(); } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/BoundingBoxAttachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/BoundingBoxAttachment.java index e55390181..91f6d7314 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/BoundingBoxAttachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/BoundingBoxAttachment.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, 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 dc8d40477..88b0a2b4c 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 @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java index c2ce43570..aef0a7c7a 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionSequenceAttachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionSequenceAttachment.java index f904e92e5..8d7feb754 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionSequenceAttachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionSequenceAttachment.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/SkeletonAttachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/SkeletonAttachment.java index a38cfc5e6..7d39fcdad 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/SkeletonAttachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/SkeletonAttachment.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/SkinnedMeshAttachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/SkinnedMeshAttachment.java index 70c0af418..c8119198a 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/SkinnedMeshAttachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/SkinnedMeshAttachment.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java index 551cd91f6..a06b03d3a 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -307,7 +308,7 @@ public class SkeletonViewer extends ApplicationAdapter { minimizeButton.padTop(-2).padLeft(5); minimizeButton.getColor().a = 0.66f; - window.getButtonTable().add(minimizeButton).size(20, 20); + window.getTitleTable().add(minimizeButton).size(20, 20); ScrollPane skinScroll = new ScrollPane(skinList, skin); skinScroll.setFadeScrollBars(false); diff --git a/spine-love/LICENSE b/spine-love/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-love/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-love/README.md b/spine-love/README.md index dffbade6d..f5e97a6de 100644 --- a/spine-love/README.md +++ b/spine-love/README.md @@ -2,6 +2,12 @@ The spine-love runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [LÖVE](https://love2d.org/). spine-love is based on [spine-lua](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-lua). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-love/main.lua b/spine-love/main.lua index e28bee4e7..845f07c11 100644 --- a/spine-love/main.lua +++ b/spine-love/main.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-love/spine-love/spine.lua b/spine-love/spine-love/spine.lua index 894355d0e..8117c0f6a 100644 --- a/spine-love/spine-love/spine.lua +++ b/spine-love/spine-love/spine.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, @@ -52,6 +53,7 @@ spine.AnimationState = require "spine-lua.AnimationState" spine.EventData = require "spine-lua.EventData" spine.Event = require "spine-lua.Event" spine.SkeletonBounds = require "spine-lua.SkeletonBounds" +spine.BlendMode = require "spine-lua.BlendMode" spine.utils.readFile = function (fileName, base) local path = fileName @@ -139,10 +141,14 @@ function spine.Skeleton.new (skeletonData, group) rotation = -rotation end love.graphics.setColor(r * slot.r, g * slot.g, b * slot.b, a * slot.a) - if slot.data.additiveBlending then - love.graphics.setBlendMode("additive") - else + if slot.data.blendMode == spine.BlendMode.normal then love.graphics.setBlendMode("alpha") + elseif slot.data.blendMode == spine.BlendMode.additive then + love.graphics.setBlendMode("additive") + elseif slot.data.blendMode == spine.BlendMode.multiply then + love.graphics.setBlendMode("multiply") + elseif slot.data.blendMode == spine.BlendMode.screen then + love.graphics.setBlendMode("screen") end love.graphics.draw(image, self.x + x, diff --git a/spine-lua/Animation.lua b/spine-lua/Animation.lua index 66edaeb63..c4afe999f 100644 --- a/spine-lua/Animation.lua +++ b/spine-lua/Animation.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/AnimationState.lua b/spine-lua/AnimationState.lua index f067c5512..aeb429aff 100644 --- a/spine-lua/AnimationState.lua +++ b/spine-lua/AnimationState.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/AnimationStateData.lua b/spine-lua/AnimationStateData.lua index bff03c1dc..c238e7103 100644 --- a/spine-lua/AnimationStateData.lua +++ b/spine-lua/AnimationStateData.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/AttachmentLoader.lua b/spine-lua/AttachmentLoader.lua index 33b85ed17..3c93e5210 100644 --- a/spine-lua/AttachmentLoader.lua +++ b/spine-lua/AttachmentLoader.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/AttachmentType.lua b/spine-lua/AttachmentType.lua index 0defa2c52..494e65ac4 100644 --- a/spine-lua/AttachmentType.lua +++ b/spine-lua/AttachmentType.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/BlendMode.lua b/spine-lua/BlendMode.lua new file mode 100644 index 000000000..ecf4dd834 --- /dev/null +++ b/spine-lua/BlendMode.lua @@ -0,0 +1,38 @@ +------------------------------------------------------------------------------- +-- Spine Runtimes Software License +-- Version 2.3 +-- +-- Copyright (c) 2013-2015, Esoteric Software +-- All rights reserved. +-- +-- You are granted a perpetual, non-exclusive, non-sublicensable and +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. +------------------------------------------------------------------------------- + +local BlendMode = { + normal = 0, + additive = 1, + multiply = 2, + screen = 3 +} +return BlendMode diff --git a/spine-lua/Bone.lua b/spine-lua/Bone.lua index 6c1f1555f..ea717f896 100644 --- a/spine-lua/Bone.lua +++ b/spine-lua/Bone.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/BoneData.lua b/spine-lua/BoneData.lua index 7f71289b8..da25545ca 100644 --- a/spine-lua/BoneData.lua +++ b/spine-lua/BoneData.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/BoundingBoxAttachment.lua b/spine-lua/BoundingBoxAttachment.lua index bab3a3afa..5beee7bf3 100644 --- a/spine-lua/BoundingBoxAttachment.lua +++ b/spine-lua/BoundingBoxAttachment.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/Event.lua b/spine-lua/Event.lua index 7c802b2f8..14c9ae616 100644 --- a/spine-lua/Event.lua +++ b/spine-lua/Event.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/EventData.lua b/spine-lua/EventData.lua index a24e68c6b..7b707e323 100644 --- a/spine-lua/EventData.lua +++ b/spine-lua/EventData.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/IkConstraint.lua b/spine-lua/IkConstraint.lua index 96317bdc8..8c8f708ab 100644 --- a/spine-lua/IkConstraint.lua +++ b/spine-lua/IkConstraint.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/IkConstraintData.lua b/spine-lua/IkConstraintData.lua index 589b67f53..1c4eb033f 100644 --- a/spine-lua/IkConstraintData.lua +++ b/spine-lua/IkConstraintData.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/LICENSE b/spine-lua/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-lua/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-lua/MeshAttachment.lua b/spine-lua/MeshAttachment.lua index 7ddc8ad5e..9f6fa2086 100644 --- a/spine-lua/MeshAttachment.lua +++ b/spine-lua/MeshAttachment.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/README.md b/spine-lua/README.md index d141fa82d..af7875595 100644 --- a/spine-lua/README.md +++ b/spine-lua/README.md @@ -1,37 +1,13 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - # spine-lua The spine-lua runtime provides functionality to load and manipulate [Spine](http://esotericsoftware.com) skeletal animation data using [Lua](http://www.lua.org/). It does not perform rendering but can be extended to enable Spine animations for other Lua-based projects. +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-lua/RegionAttachment.lua b/spine-lua/RegionAttachment.lua index 631f33555..5ed962dcf 100644 --- a/spine-lua/RegionAttachment.lua +++ b/spine-lua/RegionAttachment.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/Skeleton.lua b/spine-lua/Skeleton.lua index 5c8ade791..491c81668 100644 --- a/spine-lua/Skeleton.lua +++ b/spine-lua/Skeleton.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/SkeletonBounds.lua b/spine-lua/SkeletonBounds.lua index ad1cdae8e..b168ad42c 100644 --- a/spine-lua/SkeletonBounds.lua +++ b/spine-lua/SkeletonBounds.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/SkeletonData.lua b/spine-lua/SkeletonData.lua index 7ca4010b7..710234151 100644 --- a/spine-lua/SkeletonData.lua +++ b/spine-lua/SkeletonData.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/SkeletonJson.lua b/spine-lua/SkeletonJson.lua index c1dd265f4..f747197c4 100755 --- a/spine-lua/SkeletonJson.lua +++ b/spine-lua/SkeletonJson.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, @@ -39,6 +40,7 @@ local IkConstraint = require "spine-lua.IkConstraint" local EventData = require "spine-lua.EventData" local Event = require "spine-lua.Event" local AttachmentType = require "spine-lua.AttachmentType" +local BlendMode = require "spine-lua.BlendMode" local SkeletonJson = {} function SkeletonJson.new (attachmentLoader) @@ -154,7 +156,7 @@ function SkeletonJson.new (attachmentLoader) end slotData.attachmentName = slotMap["attachment"] - slotData.additiveBlending = slotMap["additive"] + slotData.blendMode = BlendMode[slotMap["blend"] or "normal"] table.insert(skeletonData.slots, slotData) skeletonData.slotNameIndices[slotData.name] = #skeletonData.slots diff --git a/spine-lua/Skin.lua b/spine-lua/Skin.lua index e833b8305..ad1b42a1c 100644 --- a/spine-lua/Skin.lua +++ b/spine-lua/Skin.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/SkinnedMeshAttachment.lua b/spine-lua/SkinnedMeshAttachment.lua index e69135781..607a913e6 100644 --- a/spine-lua/SkinnedMeshAttachment.lua +++ b/spine-lua/SkinnedMeshAttachment.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/Slot.lua b/spine-lua/Slot.lua index bc3722313..daa9c2846 100644 --- a/spine-lua/Slot.lua +++ b/spine-lua/Slot.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-lua/SlotData.lua b/spine-lua/SlotData.lua index 70db649de..bfbba181a 100644 --- a/spine-lua/SlotData.lua +++ b/spine-lua/SlotData.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, @@ -28,6 +29,8 @@ -- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------------- +local BlendMode = require "spine-lua.BlendMode" + local SlotData = {} function SlotData.new (name, boneData) if not name then error("name cannot be nil", 2) end @@ -38,7 +41,7 @@ function SlotData.new (name, boneData) boneData = boneData, r = 1, g = 1, b = 1, a = 1, attachmentName = nil, - additiveBlending = false + blendMode = BlendMode.normal } function self:setColor (r, g, b, a) diff --git a/spine-lua/utils.lua b/spine-lua/utils.lua index 18e29e0f1..d240b4fc9 100644 --- a/spine-lua/utils.lua +++ b/spine-lua/utils.lua @@ -1,25 +1,26 @@ ------------------------------------------------------------------------------- -- Spine Runtimes Software License --- Version 2.1 +-- Version 2.3 -- --- Copyright (c) 2013, Esoteric Software +-- Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. +-- non-transferable license to use, install, execute and perform the Spine +-- Runtimes Software (the "Software") and derivative works solely for personal +-- or internal use. Without the written permission of Esoteric Software (see +-- Section 2 of the Spine Software License Agreement), 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, +-- EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-monogame/LICENSE b/spine-monogame/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-monogame/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-monogame/README.md b/spine-monogame/README.md index 3c396dff9..dabc42368 100644 --- a/spine-monogame/README.md +++ b/spine-monogame/README.md @@ -2,6 +2,12 @@ The spine-monogame runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [MonoGame](http://monogame.codeplex.com/). spine-monogame is based on [spine-xna](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-xna) and adds MonoGame project files. +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-sfml/LICENSE b/spine-sfml/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-sfml/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-sfml/README.md b/spine-sfml/README.md index 6876c56f7..24c4f2980 100644 --- a/spine-sfml/README.md +++ b/spine-sfml/README.md @@ -2,6 +2,12 @@ The spine-sfml runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [SFML](http://www.sfml-dev.org/). spine-sfml is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-sfml/example/main.cpp b/spine-sfml/example/main.cpp index 2a9c556e5..27485fdeb 100644 --- a/spine-sfml/example/main.cpp +++ b/spine-sfml/example/main.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -136,10 +137,10 @@ void spineboy () { void goblins () { // Load atlas, skeleton, and animations. - Atlas* atlas = Atlas_createFromFile("data/goblins-ffd.atlas", 0); + Atlas* atlas = Atlas_createFromFile("data/goblins-mesh.atlas", 0); SkeletonJson* json = SkeletonJson_create(atlas); json->scale = 1.4f; - SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "data/goblins-ffd.json"); + SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "data/goblins-mesh.json"); if (!skeletonData) { printf("Error: %s\n", json->error); exit(0); diff --git a/spine-sfml/src/spine/spine-sfml.cpp b/spine-sfml/src/spine/spine-sfml.cpp index b5b5b06de..e1157bb98 100644 --- a/spine-sfml/src/spine/spine-sfml.cpp +++ b/spine-sfml/src/spine/spine-sfml.cpp @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -95,7 +96,6 @@ void SkeletonDrawable::update (float deltaTime) { void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { vertexArray->clear(); - states.blendMode = BlendAlpha; sf::Vertex vertices[4]; sf::Vertex vertex; @@ -103,6 +103,25 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { Slot* slot = skeleton->drawOrder[i]; Attachment* attachment = slot->attachment; if (!attachment) continue; + + sf::BlendMode blend; + switch (slot->data->blendMode) { + case BLEND_MODE_ADDITIVE: + blend = BlendAdd; + break; + case BLEND_MODE_MULTIPLY: + blend = BlendMultiply; + break; + case BLEND_MODE_SCREEN: // Unsupported, fall through. + default: + blend = BlendAlpha; + } + if (states.blendMode != blend) { + target.draw(*vertexArray, states); + vertexArray->clear(); + states.blendMode = blend; + } + Texture* texture = 0; if (attachment->type == ATTACHMENT_REGION) { RegionAttachment* regionAttachment = (RegionAttachment*)attachment; @@ -212,13 +231,6 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { if (texture) { // SMFL doesn't handle batching for us, so we'll just force a single texture per skeleton. states.texture = texture; - - BlendMode blend = slot->data->additiveBlending ? BlendAdd : BlendAlpha; - if (states.blendMode != blend) { - target.draw(*vertexArray, states); - vertexArray->clear(); - states.blendMode = blend; - } } } target.draw(*vertexArray, states); diff --git a/spine-sfml/src/spine/spine-sfml.h b/spine-sfml/src/spine/spine-sfml.h index 64b7120d0..e51e64e66 100644 --- a/spine-sfml/src/spine/spine-sfml.h +++ b/spine-sfml/src/spine/spine-sfml.h @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-starling/LICENSE b/spine-starling/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-starling/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-starling/README.md b/spine-starling/README.md index 55b8b9d1e..ded0537ac 100644 --- a/spine-starling/README.md +++ b/spine-starling/README.md @@ -2,6 +2,12 @@ The spine-starling runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [Starling](http://gamua.com/starling/). spine-starling is based on [spine-as3](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-as3). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-starling/spine-starling-example/src/spine/GoblinsExample.as b/spine-starling/spine-starling-example/src/spine/GoblinsExample.as index 8aafcdd78..e217a0db4 100644 --- a/spine-starling/spine-starling-example/src/spine/GoblinsExample.as +++ b/spine-starling/spine-starling-example/src/spine/GoblinsExample.as @@ -1,3 +1,34 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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 spine { import spine.atlas.Atlas; diff --git a/spine-starling/spine-starling-example/src/spine/Main.as b/spine-starling/spine-starling-example/src/spine/Main.as index 057c9e0af..7636a041c 100644 --- a/spine-starling/spine-starling-example/src/spine/Main.as +++ b/spine-starling/spine-starling-example/src/spine/Main.as @@ -1,3 +1,33 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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 spine { diff --git a/spine-starling/spine-starling-example/src/spine/RaptorExample.as b/spine-starling/spine-starling-example/src/spine/RaptorExample.as index 706d33713..9f50a052c 100644 --- a/spine-starling/spine-starling-example/src/spine/RaptorExample.as +++ b/spine-starling/spine-starling-example/src/spine/RaptorExample.as @@ -1,3 +1,34 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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 spine { import spine.atlas.Atlas; diff --git a/spine-starling/spine-starling-example/src/spine/SpineboyExample.as b/spine-starling/spine-starling-example/src/spine/SpineboyExample.as index 29142c1fa..6203b9b14 100644 --- a/spine-starling/spine-starling-example/src/spine/SpineboyExample.as +++ b/spine-starling/spine-starling-example/src/spine/SpineboyExample.as @@ -1,3 +1,34 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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 spine { import spine.animation.AnimationStateData; diff --git a/spine-starling/spine-starling/src/spine/starling/PolygonBatch.as b/spine-starling/spine-starling/src/spine/starling/PolygonBatch.as index 9085f03b9..9f314b0d4 100644 --- a/spine-starling/spine-starling/src/spine/starling/PolygonBatch.as +++ b/spine-starling/spine-starling/src/spine/starling/PolygonBatch.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -41,6 +42,9 @@ import flash.geom.Matrix; import flash.geom.Point; import flash.utils.Dictionary; +import spine.BlendMode; +import spine.flash.SkeletonSprite; + import starling.core.RenderSupport; import starling.core.Starling; import starling.display.BlendMode; @@ -61,8 +65,8 @@ internal class PolygonBatch { private var _texture:Texture; private var _support:RenderSupport; private var _programBits:uint; - private var _blendMode:String; - private var _additive:Boolean; + private var _blendModeNormal:String; + private var _blendMode:spine.BlendMode; private var _alpha:Number; private var _verticesCount:int; @@ -88,11 +92,11 @@ internal class PolygonBatch { _support = support; _alpha = alpha; _programBits = 0xffffffff; - _additive = false; + _blendMode = null; support.finishQuadBatch(); support.blendMode = blendMode; - _blendMode = support.blendMode; + _blendModeNormal = support.blendMode; var context:Context3D = Starling.context; context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 1, support.mvpMatrix3D, true); @@ -115,11 +119,14 @@ internal class PolygonBatch { } public function add (texture:Texture, vertices:Vector., vl:int, uvs:Vector., triangles:Vector., - r:Number, g:Number, b:Number, a:Number, additive:Boolean, matrix:Matrix) : void { - if (additive != _additive) { - _additive = additive; + r:Number, g:Number, b:Number, a:Number, blendMode:spine.BlendMode, matrix:Matrix) : void { + if (blendMode != _blendMode) { + _blendMode = blendMode; flush(); - _support.blendMode = additive ? BlendMode.ADD : _blendMode; + if (blendMode == spine.BlendMode.normal) + _support.blendMode = _blendModeNormal; + else + _support.blendMode = spine.starling.SkeletonSprite.blendModes[blendMode.ordinal]; _support.applyBlendMode(true); } diff --git a/spine-starling/spine-starling/src/spine/starling/SkeletonAnimation.as b/spine-starling/spine-starling/src/spine/starling/SkeletonAnimation.as index c4ab93805..8a03be1a8 100644 --- a/spine-starling/spine-starling/src/spine/starling/SkeletonAnimation.as +++ b/spine-starling/spine-starling/src/spine/starling/SkeletonAnimation.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-starling/spine-starling/src/spine/starling/SkeletonImage.as b/spine-starling/spine-starling/src/spine/starling/SkeletonImage.as index aa8569489..dc98c00df 100644 --- a/spine-starling/spine-starling/src/spine/starling/SkeletonImage.as +++ b/spine-starling/spine-starling/src/spine/starling/SkeletonImage.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as index 9ac1e58fc..0d2c3bf91 100644 --- a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as +++ b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -58,6 +59,8 @@ public class SkeletonSprite extends DisplayObject { static private var _tempMatrix:Matrix = new Matrix(); static private var _tempVertices:Vector. = new Vector.(8); static private var _quadTriangles:Vector. = new [0, 1, 2, 2, 3, 0]; + static internal var blendModes:Vector. = new [ + BlendMode.NORMAL, BlendMode.ADD, BlendMode.MULTIPLY, BlendMode.SCREEN]; private var _skeleton:Skeleton; private var _polygonBatch:PolygonBatch; @@ -165,7 +168,7 @@ public class SkeletonSprite extends DisplayObject { r *= skeletonR * slot.r * a; g *= skeletonG * slot.g * a; b *= skeletonB * slot.b * a; - polygonBatch.add(image.texture, worldVertices, verticesLength, uvs, triangles, r, g, b, a, slot.data.additiveBlending, matrix); + polygonBatch.add(image.texture, worldVertices, verticesLength, uvs, triangles, r, g, b, a, slot.data.blendMode, matrix); } } } @@ -206,7 +209,7 @@ public class SkeletonSprite extends DisplayObject { vertexData.setColorAndAlpha(3, rgb, a); image.updateVertices(); - support.blendMode = slot.data.additiveBlending ? BlendMode.ADD : blendMode; + support.blendMode = blendModes[slot.data.blendMode.ordinal]; support.batchQuad(image, alpha, image.texture, _smoothing); } } diff --git a/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as b/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as index 33e0bb6ff..8431509c6 100644 --- a/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as +++ b/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-starling/spine-starling/src/spine/starling/StarlingTextureLoader.as b/spine-starling/spine-starling/src/spine/starling/StarlingTextureLoader.as index 7ec0952ed..43113bf6a 100644 --- a/spine-starling/spine-starling/src/spine/starling/StarlingTextureLoader.as +++ b/spine-starling/spine-starling/src/spine/starling/StarlingTextureLoader.as @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-tk2d/Assets/Gizmos/SkeletonDataAsset Icon.png b/spine-tk2d/Assets/Gizmos/SkeletonDataAsset Icon.png deleted file mode 100644 index 7fd5473c1..000000000 Binary files a/spine-tk2d/Assets/Gizmos/SkeletonDataAsset Icon.png and /dev/null differ diff --git a/spine-tk2d/Assets/Gizmos/SkeletonDataAsset Icon.png.meta b/spine-tk2d/Assets/Gizmos/SkeletonDataAsset Icon.png.meta deleted file mode 100644 index 22239ca4b..000000000 --- a/spine-tk2d/Assets/Gizmos/SkeletonDataAsset Icon.png.meta +++ /dev/null @@ -1,46 +0,0 @@ -fileFormatVersion: 2 -guid: 68defdbc95b30a74a9ad396bfc9a2277 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/Goblins.cs b/spine-tk2d/Assets/examples/goblins/Goblins.cs deleted file mode 100644 index bf3a78079..000000000 --- a/spine-tk2d/Assets/examples/goblins/Goblins.cs +++ /dev/null @@ -1,63 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -using UnityEngine; -using System.Collections; -using Spine; - -public class Goblins : MonoBehaviour { - private bool girlSkin; - private SkeletonAnimation skeletonAnimation; - private Bone headBone; - - public void Start () { - skeletonAnimation = GetComponent(); - headBone = skeletonAnimation.skeleton.FindBone("head"); - skeletonAnimation.UpdateLocal += UpdateLocal; - } - - // This is called after the animation is applied to the skeleton and can be used to adjust the bones dynamically. - public void UpdateLocal (SkeletonAnimation skeletonAnimation) { - headBone.Rotation += 15; - } - - public void OnMouseDown () { - skeletonAnimation.skeleton.SetSkin(girlSkin ? "goblin" : "goblingirl"); - skeletonAnimation.skeleton.SetSlotsToSetupPose(); - - girlSkin = !girlSkin; - - if (girlSkin) { - skeletonAnimation.skeleton.SetAttachment("right hand item", null); - skeletonAnimation.skeleton.SetAttachment("left hand item", "spear"); - } else - skeletonAnimation.skeleton.SetAttachment("left hand item", "dagger"); - } -} diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/GoblinsAtlas.prefab b/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/GoblinsAtlas.prefab deleted file mode 100644 index bc65b6ebb..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/GoblinsAtlas.prefab and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0.png b/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0.png deleted file mode 100644 index d6820aa68..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0.png.meta b/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0.png.meta deleted file mode 100644 index 19b7c864d..000000000 --- a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: e76e8228e3b38264194b3dfad10b7af7 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: 1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 0 - textureType: -1 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas.prefab b/spine-tk2d/Assets/examples/goblins/GoblinsAtlas.prefab deleted file mode 100644 index 08d4890a3..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas.prefab and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/goblins-mesh.json.txt b/spine-tk2d/Assets/examples/goblins/goblins-mesh.json.txt deleted file mode 100644 index a778c0f15..000000000 --- a/spine-tk2d/Assets/examples/goblins/goblins-mesh.json.txt +++ /dev/null @@ -1,1005 +0,0 @@ -{ -"bones": [ - { "name": "root" }, - { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, - { "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 }, - { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, - { "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 }, - { "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 }, - { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 }, - { "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 }, - { "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 }, - { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 }, - { "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 }, - { "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 }, - { "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 }, - { "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 }, - { "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 }, - { "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 }, - { "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 }, - { "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }, - { "name": "spear1", "parent": "left hand", "length": 65.06, "x": 0.48, "y": 17.03, "rotation": 102.43 }, - { "name": "spear2", "parent": "spear1", "length": 61.41, "x": 65.05, "y": 0.04, "rotation": 0.9 }, - { "name": "spear3", "parent": "spear2", "length": 76.79, "x": 61.88, "y": 0.57, "rotation": -0.9 } -], -"slots": [ - { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, - { "name": "left arm", "bone": "left arm", "attachment": "left arm" }, - { "name": "left hand item", "bone": "left hand", "attachment": "spear" }, - { "name": "left hand", "bone": "left hand", "attachment": "left hand" }, - { "name": "left foot", "bone": "left foot", "attachment": "left foot" }, - { "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" }, - { "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, - { "name": "right foot", "bone": "right foot", "attachment": "right foot" }, - { "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" }, - { "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" }, - { "name": "undies", "bone": "pelvis", "attachment": "undies" }, - { "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eyes", "bone": "head" }, - { "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" }, - { "name": "right arm", "bone": "right arm", "attachment": "right arm" }, - { "name": "right hand thumb", "bone": "right hand", "attachment": "right hand thumb" }, - { "name": "right hand item", "bone": "right hand", "attachment": "dagger" }, - { "name": "right hand", "bone": "right hand", "attachment": "right hand" }, - { "name": "right hand item 2", "bone": "right hand", "attachment": "shield" } -], -"skins": { - "default": { - "left hand item": { - "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, - "spear": { - "type": "skinnedmesh", - "uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ], - "triangles": [ 4, 7, 3, 6, 7, 4, 5, 6, 4, 10, 11, 12, 1, 13, 0, 12, 13, 1, 10, 12, 1, 9, 10, 1, 2, 9, 1, 8, 9, 2, 3, 8, 2, 7, 8, 3 ], - "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.51, 20, -0.31, -6.16, 0.48, 2, 18, 64.73, -5.03, 0.5, 19, -0.4, -5.06, 0.49, 1, 16, 4.56, 23.91, 1, 1, 16, 41.7, -138.95, 1, 1, 16, 32.42, -141.1, 1, 1, 16, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.5, 19, 0.53, 6.59, 0.49, 2, 19, 62.18, 6.66, 0.51, 20, 0.2, 6.09, 0.48, 1, 20, 30.96, 6.61, 1, 1, 20, 37.26, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], - "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], - "hull": 14, - "width": 22, - "height": 368 - } - }, - "right hand item": { - "dagger": { - "type": "mesh", - "uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ], - "triangles": [ 5, 7, 8, 4, 8, 3, 4, 5, 8, 5, 6, 7, 9, 11, 8, 8, 11, 3, 3, 0, 2, 3, 11, 0, 9, 10, 11, 0, 1, 2, 11, 12, 0, 0, 12, 13 ], - "vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ], - "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], - "hull": 14, - "width": 26, - "height": 108 - } - }, - "right hand item 2": { - "shield": { "rotation": 93.49, "width": 70, "height": 72 } - } - }, - "goblin": { - "eyes": { - "eyes closed": { "name": "goblin/eyes-closed", "x": 29.19, "y": -24.89, "rotation": -88.92, "width": 34, "height": 12 } - }, - "head": { - "head": { - "name": "goblin/head", - "type": "mesh", - "uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ], - "triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ], - "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.46, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.6, 23.41, 35.89, 40.17, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.8, -24.31, 17.2, -40.65, 20.68, -33.02 ], - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], - "hull": 24, - "width": 103, - "height": 66 - } - }, - "left arm": { - "left arm": { - "name": "goblin/left-arm", - "type": "mesh", - "uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ], - "triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ], - "vertices": [ 18.6, 8.81, 32.19, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], - "hull": 9, - "width": 37, - "height": 35 - } - }, - "left foot": { - "left foot": { - "name": "goblin/left-foot", - "type": "mesh", - "uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ], - "triangles": [ 2, 1, 3, 3, 10, 4, 4, 11, 5, 4, 10, 11, 3, 1, 10, 11, 6, 5, 1, 0, 10, 11, 7, 6, 11, 10, 7, 10, 8, 7, 10, 0, 8, 0, 9, 8 ], - "vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], - "hull": 10, - "width": 65, - "height": 31 - } - }, - "left hand": { - "left hand": { - "name": "goblin/left-hand", - "type": "mesh", - "uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ], - "triangles": [ 2, 3, 0, 4, 5, 0, 3, 4, 0, 0, 7, 8, 6, 7, 0, 0, 5, 6, 2, 0, 1 ], - "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.48, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], - "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], - "hull": 9, - "width": 36, - "height": 41 - } - }, - "left lower leg": { - "left lower leg": { - "name": "goblin/left-lower-leg", - "type": "mesh", - "uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ], - "triangles": [ 1, 3, 4, 7, 4, 5, 5, 6, 7, 3, 1, 2, 1, 4, 7, 0, 1, 10, 7, 8, 10, 1, 7, 10, 10, 8, 9 ], - "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.19, -18.29 ], - "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], - "hull": 11, - "width": 33, - "height": 70 - } - }, - "left shoulder": { - "left shoulder": { - "name": "goblin/left-shoulder", - "type": "mesh", - "uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ], - "triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ], - "vertices": [ 15.18, 5.74, 32.17, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.74, -4.66, 6.54 ], - "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], - "hull": 8, - "width": 29, - "height": 44 - } - }, - "left upper leg": { - "left upper leg": { - "name": "goblin/left-upper-leg", - "type": "mesh", - "uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ], - "triangles": [ 3, 4, 2, 2, 4, 1, 1, 4, 7, 4, 5, 7, 0, 1, 7, 5, 6, 7, 7, 8, 0 ], - "vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ], - "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], - "hull": 9, - "width": 33, - "height": 73 - } - }, - "neck": { - "neck": { - "name": "goblin/neck", - "type": "mesh", - "uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ], - "triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ], - "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.05, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], - "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], - "hull": 10, - "width": 36, - "height": 41 - } - }, - "pelvis": { - "pelvis": { - "name": "goblin/pelvis", - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 3, 0, 1, 2, 3 ], - "vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ], - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "hull": 4, - "width": 62, - "height": 43 - } - }, - "right arm": { - "right arm": { - "name": "goblin/right-arm", - "type": "mesh", - "uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ], - "triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ], - "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.18 ], - "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], - "hull": 8, - "width": 23, - "height": 50 - } - }, - "right foot": { - "right foot": { - "name": "goblin/right-foot", - "type": "mesh", - "uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ], - "triangles": [ 4, 5, 15, 7, 14, 6, 5, 6, 15, 6, 14, 15, 14, 7, 9, 7, 8, 9, 15, 3, 4, 9, 10, 14, 15, 2, 3, 15, 14, 2, 14, 10, 1, 12, 1, 11, 1, 12, 13, 14, 1, 2, 1, 13, 0, 1, 10, 11 ], - "vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ], - "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], - "hull": 14, - "width": 63, - "height": 33 - } - }, - "right hand": { - "right hand": { - "name": "goblin/right-hand", - "type": "mesh", - "uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ], - "triangles": [ 4, 7, 5, 5, 7, 6, 4, 3, 7, 3, 2, 8, 7, 3, 8, 8, 1, 10, 8, 2, 1, 0, 10, 1, 8, 10, 9 ], - "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.88, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], - "hull": 11, - "width": 36, - "height": 37 - } - }, - "right hand thumb": { - "right hand thumb": { - "name": "goblin/right-hand", - "type": "mesh", - "uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ], - "triangles": [ 3, 2, 4, 2, 1, 4, 1, 0, 4 ], - "vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ], - "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], - "hull": 5, - "width": 36, - "height": 37 - } - }, - "right lower leg": { - "right lower leg": { - "name": "goblin/right-lower-leg", - "type": "mesh", - "uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ], - "triangles": [ 4, 5, 2, 2, 5, 8, 5, 6, 8, 6, 7, 8, 4, 2, 3, 2, 8, 1, 8, 9, 1, 9, 10, 1, 1, 10, 0 ], - "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.1, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.77, -1.03, 58.99, -9.19, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], - "hull": 11, - "width": 36, - "height": 76 - } - }, - "right shoulder": { - "right shoulder": { - "name": "goblin/right-shoulder", - "type": "mesh", - "uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ], - "triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ], - "vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ], - "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], - "hull": 8, - "width": 39, - "height": 45 - } - }, - "right upper leg": { - "right upper leg": { - "name": "goblin/right-upper-leg", - "type": "mesh", - "uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ], - "triangles": [ 5, 4, 6, 6, 4, 2, 4, 3, 2, 2, 1, 6, 6, 1, 9, 6, 9, 7, 9, 1, 0, 9, 8, 7 ], - "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.51, 10.18, 19.13, 18.47, 2.85, 16.32, -8.4, 6.14 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], - "hull": 10, - "width": 34, - "height": 63 - } - }, - "torso": { - "torso": { - "name": "goblin/torso", - "type": "mesh", - "uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ], - "triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ], - "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.88, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], - "hull": 16, - "width": 68, - "height": 96 - } - }, - "undie straps": { - "undie straps": { - "name": "goblin/undie-straps", - "type": "mesh", - "uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ], - "triangles": [ 5, 1, 4, 4, 1, 3, 6, 0, 5, 5, 0, 1, 3, 1, 2, 6, 8, 0, 6, 7, 8 ], - "vertices": [ -10.56, 12.87, 6.53, 9.9, 25.62, 17.71, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], - "hull": 9, - "width": 55, - "height": 19 - } - }, - "undies": { - "undies": { - "name": "goblin/undies", - "type": "mesh", - "uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ], - "triangles": [ 3, 10, 4, 4, 10, 5, 10, 3, 1, 3, 2, 1, 1, 11, 10, 1, 0, 11, 10, 11, 5, 5, 11, 6, 0, 8, 11, 11, 8, 6, 0, 9, 8, 6, 8, 7 ], - "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.59, 22.22, 6.11, 22.92, 14.05, 3.75, 9.44, -13.08, 13.71, 4.21, -2.59, 4.03, 2.05 ], - "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], - "hull": 10, - "width": 36, - "height": 29 - } - } - } -}, -"animations": { - "walk": { - "slots": { - "eyes": { - "attachment": [ - { "time": 0.7, "name": "eyes closed" }, - { "time": 0.8, "name": null } - ] - } - }, - "bones": { - "left upper leg": { - "rotate": [ - { "time": 0, "angle": -26.55 }, - { "time": 0.1333, "angle": -8.78 }, - { "time": 0.2333, "angle": 9.51 }, - { "time": 0.3666, "angle": 30.74 }, - { "time": 0.5, "angle": 25.33 }, - { "time": 0.6333, "angle": 26.11 }, - { "time": 0.7333, "angle": 7.45 }, - { "time": 0.8666, "angle": -21.19 }, - { "time": 1, "angle": -26.55 } - ], - "translate": [ - { "time": 0, "x": -1.32, "y": 1.7 }, - { "time": 0.3666, "x": -0.06, "y": 2.42 }, - { "time": 1, "x": -1.32, "y": 1.7 } - ] - }, - "right upper leg": { - "rotate": [ - { "time": 0, "angle": 42.45 }, - { - "time": 0.1333, - "angle": 49.86, - "curve": [ 0.414, 0, 0.705, 0.99 ] - }, - { "time": 0.2333, "angle": 22.51 }, - { "time": 0.5, "angle": -16.93 }, - { "time": 0.6333, "angle": 1.89 }, - { - "time": 0.7333, - "angle": 34.86, - "curve": [ 0.462, 0.11, 1, 1 ] - }, - { - "time": 0.8666, - "angle": 58.68, - "curve": [ 0.5, 0.02, 1, 1 ] - }, - { "time": 1, "angle": 42.45 } - ], - "translate": [ - { "time": 0, "x": 6.23, "y": 0 }, - { "time": 0.2333, "x": 2.14, "y": 2.4 }, - { "time": 0.5, "x": 2.44, "y": 4.8 }, - { "time": 1, "x": 6.23, "y": 0 } - ] - }, - "left lower leg": { - "rotate": [ - { "time": 0, "angle": -18.05 }, - { "time": 0.1333, "angle": -63.5 }, - { "time": 0.2333, "angle": -83.01 }, - { "time": 0.5, "angle": 5.11 }, - { "time": 0.6333, "angle": -28.29 }, - { "time": 0.7333, "angle": -27.52 }, - { "time": 0.8666, "angle": 3.53 }, - { "time": 1, "angle": -18.05 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.2333, "x": 2.55, "y": -0.47 }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "left foot": { - "rotate": [ - { "time": 0, "angle": -14.56 }, - { "time": 0.1333, "angle": -10.42 }, - { "time": 0.2333, "angle": -5.01 }, - { "time": 0.3, "angle": 6.67 }, - { "time": 0.3666, "angle": 3.87 }, - { "time": 0.5, "angle": -3.87 }, - { "time": 0.6333, "angle": 2.78 }, - { "time": 0.7333, "angle": -11.99 }, - { "time": 0.8666, "angle": -12.45 }, - { "time": 1, "angle": -14.56 } - ] - }, - "right shoulder": { - "rotate": [ - { - "time": 0, - "angle": 5.29, - "curve": [ 0.264, 0, 0.75, 1 ] - }, - { "time": 0.6333, "angle": 6.65 }, - { "time": 1, "angle": 5.29 } - ] - }, - "right arm": { - "rotate": [ - { - "time": 0, - "angle": -4.02, - "curve": [ 0.267, 0, 0.804, 0.99 ] - }, - { - "time": 0.6333, - "angle": 19.78, - "curve": [ 0.307, 0, 0.787, 0.99 ] - }, - { "time": 1, "angle": -4.02 } - ] - }, - "right hand": { - "rotate": [ - { "time": 0, "angle": 8.98 }, - { "time": 0.6333, "angle": 0.51 }, - { "time": 1, "angle": 8.98 } - ] - }, - "left shoulder": { - "rotate": [ - { - "time": 0, - "angle": 6.25, - "curve": [ 0.339, 0, 0.683, 1 ] - }, - { - "time": 0.5, - "angle": -11.78, - "curve": [ 0.281, 0, 0.686, 0.99 ] - }, - { "time": 1, "angle": 6.25 } - ], - "translate": [ - { "time": 0, "x": 1.15, "y": 0.23 } - ] - }, - "left hand": { - "rotate": [ - { - "time": 0, - "angle": -21.23, - "curve": [ 0.295, 0, 0.755, 0.98 ] - }, - { - "time": 0.5, - "angle": -27.28, - "curve": [ 0.241, 0, 0.75, 0.97 ] - }, - { "time": 1, "angle": -21.23 } - ] - }, - "left arm": { - "rotate": [ - { - "time": 0, - "angle": 28.37, - "curve": [ 0.339, 0, 0.683, 1 ] - }, - { - "time": 0.5, - "angle": 60.09, - "curve": [ 0.281, 0, 0.686, 0.99 ] - }, - { "time": 1, "angle": 28.37 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -10.28 }, - { - "time": 0.1333, - "angle": -15.38, - "curve": [ 0.545, 0, 0.818, 1 ] - }, - { - "time": 0.3666, - "angle": -9.78, - "curve": [ 0.58, 0.17, 0.669, 0.99 ] - }, - { - "time": 0.6333, - "angle": -15.75, - "curve": [ 0.235, 0.01, 0.795, 1 ] - }, - { - "time": 0.8666, - "angle": -7.06, - "curve": [ 0.209, 0, 0.816, 0.98 ] - }, - { "time": 1, "angle": -10.28 } - ], - "translate": [ - { "time": 0, "x": -3.72, "y": -0.01 } - ] - }, - "right foot": { - "rotate": [ - { "time": 0, "angle": -5.25 }, - { "time": 0.2333, "angle": -17.76 }, - { "time": 0.3666, "angle": -20.09 }, - { "time": 0.5, "angle": -19.73 }, - { "time": 0.7333, "angle": -11.68 }, - { "time": 0.8, "angle": 4.46 }, - { "time": 0.8666, "angle": 0.46 }, - { "time": 1, "angle": -5.25 } - ] - }, - "right lower leg": { - "rotate": [ - { - "time": 0, - "angle": -3.39, - "curve": [ 0.316, 0.01, 0.741, 0.98 ] - }, - { - "time": 0.1333, - "angle": -43.21, - "curve": [ 0.414, 0, 0.705, 0.99 ] - }, - { "time": 0.2333, "angle": -25.98 }, - { "time": 0.5, "angle": -19.53 }, - { "time": 0.6333, "angle": -64.8 }, - { - "time": 0.7333, - "angle": -89.54, - "curve": [ 0.557, 0.18, 1, 1 ] - }, - { "time": 1, "angle": -3.39 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0 }, - { "time": 0.6333, "x": 2.18, "y": 0.21 }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": -8.4 }, - { - "time": 0.1333, - "x": 0, - "y": -9.35, - "curve": [ 0.326, 0.05, 0.674, 0.93 ] - }, - { - "time": 0.2333, - "x": 0, - "y": -0.59, - "curve": [ 0.325, 0.39, 0.643, 0.7 ] - }, - { "time": 0.3666, "x": 0, "y": -3.96 }, - { "time": 0.5, "x": 0, "y": -8.4 }, - { - "time": 0.6333, - "x": 0, - "y": -10, - "curve": [ 0.359, 0.47, 0.646, 0.74 ] - }, - { - "time": 0.7333, - "x": 0, - "y": -5.29, - "curve": [ 0.333, 0.36, 0.662, 0.69 ] - }, - { - "time": 0.8, - "x": 0, - "y": -2.49, - "curve": [ 0.322, 0.35, 0.651, 0.68 ] - }, - { "time": 0.8666, "x": 0, "y": -3.96 }, - { "time": 1, "x": 0, "y": -8.4 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 3.6 }, - { "time": 0.1333, "angle": 17.49 }, - { "time": 0.2333, "angle": 6.1 }, - { "time": 0.3666, "angle": 3.45 }, - { "time": 0.5, "angle": 5.17 }, - { "time": 0.6333, "angle": 18.36 }, - { "time": 0.7333, "angle": 6.09 }, - { "time": 0.8666, "angle": 2.28 }, - { "time": 1, "angle": 3.6 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": 3.6, - "curve": [ 0, 0, 0.704, 1.17 ] - }, - { "time": 0.1333, "angle": -0.2 }, - { "time": 0.2333, "angle": 6.1 }, - { "time": 0.3666, "angle": 3.45 }, - { - "time": 0.5, - "angle": 5.17, - "curve": [ 0, 0, 0.704, 1.61 ] - }, - { "time": 0.6666, "angle": 1.1 }, - { "time": 0.7333, "angle": 6.09 }, - { "time": 0.8666, "angle": 2.28 }, - { "time": 1, "angle": 3.6 } - ] - }, - "pelvis": { - "rotate": [ - { "time": 0, "angle": -1.33 } - ], - "translate": [ - { "time": 0, "x": 0.39, "y": -0.78 } - ] - }, - "spear1": { - "rotate": [ - { "time": 0, "angle": 1.84 }, - { "time": 0.2, "angle": -5.38 }, - { "time": 0.5, "angle": 2.95 }, - { "time": 0.7333, "angle": -3.67 }, - { "time": 1, "angle": 1.84 } - ] - }, - "spear2": { - "rotate": [ - { "time": 0, "angle": 1.84 }, - { "time": 0.2, "angle": -5.38 }, - { "time": 0.5, "angle": 2.95 }, - { "time": 0.7333, "angle": -3.67 }, - { "time": 1, "angle": 1.84 } - ] - }, - "spear3": { - "rotate": [ - { "time": 0, "angle": 3.64 }, - { "time": 0.2, "angle": -3.59 }, - { "time": 0.5, "angle": 4.74 }, - { "time": 0.7333, "angle": -1.87 }, - { "time": 1, "angle": 3.64 } - ] - } - }, - "ffd": { - "default": { - "right hand item": { - "dagger": [ - { - "time": 0, - "offset": 26, - "vertices": [ 2.34, 0.14 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.5, - "offset": 8, - "vertices": [ -1.19, 4.31, 0.07, 6.41, 1.66, 6.18, 1.75, 3.59 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 1, - "offset": 26, - "vertices": [ 2.34, 0.14 ] - } - ] - } - }, - "goblin": { - "head": { - "head": [ - { - "time": 0, - "curve": [ 0.632, 0, 0.75, 1 ] - }, - { - "time": 0.2, - "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08, -1.08, 0.08, -1.08, 0.08, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.3666, - "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09, 1.47, 0.09, 1.47, 0.09, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09 ], - "curve": [ 0.621, 0, 0.75, 1 ] - }, - { - "time": 0.7, - "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17, -1.17, -0.17, -1.17, -0.17, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8666, - "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08, 0.38, 0.08, 0.38, 0.08, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1 } - ] - }, - "left foot": { - "left foot": [ - { - "time": 0, - "offset": 8, - "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] - }, - { "time": 0.1333 }, - { - "time": 0.2333, - "offset": 8, - "vertices": [ -3.96, -2.34, -5.8, -12.47, -2.23, -12.99, 2.02, -9.1, 0, 0, 0, 0, 0, 0, -1.35, -5.28 ] - }, - { - "time": 0.3666, - "offset": 8, - "vertices": [ 0.66, 0.33, 0.33, 2.69, -0.48, 2.54, -1.13, 1.38, 0, 0, 0, 0, 0, 0, -0.11, 0.79 ] - }, - { "time": 0.5, "curve": "stepped" }, - { "time": 0.6333 }, - { - "time": 0.7333, - "offset": 8, - "vertices": [ -2.97, 9.4, -6.91, 19.92, -10.55, 18.41, -12.37, 12.38, -4.72, 6.3, 0, 0, -1.48, 4.88, -7.06, 10.7 ] - }, - { - "time": 0.8333, - "offset": 6, - "vertices": [ 1.05, 1.56, -2.52, 7.99, -5.52, 17.14, -8.93, 15.79, -10.73, 10.22, -4.23, 5.36, 0, 0, 0, 0, -5.83, 8.55 ] - }, - { - "time": 1, - "offset": 8, - "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] - } - ] - }, - "pelvis": { - "pelvis": [ - { "time": 0 }, - { - "time": 0.1333, - "offset": 6, - "vertices": [ -0.68, -4.13 ] - }, - { - "time": 0.3333, - "offset": 6, - "vertices": [ -1.04, -3.1 ] - }, - { - "time": 0.7, - "offset": 6, - "vertices": [ -1.42, -6.3 ] - }, - { - "time": 0.8666, - "offset": 6, - "vertices": [ -1.13, -1.79 ] - }, - { "time": 1 } - ] - }, - "right foot": { - "right foot": [ - { "time": 0 }, - { - "time": 0.1333, - "offset": 2, - "vertices": [ -2.81, 2.63, -2.35, 3.89, -1.99, 4.86, -0.93, 5.57, -0.48, 5.09, -0.34, 3.42, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31, 1.91, -1.32, 3.65 ] - }, - { - "time": 0.2333, - "offset": 2, - "vertices": [ -6.39, 6.41, -7.74, 8.27, -7.02, 11.35, -4.03, 13.93, -2.5, 12.62, -1.46, 7.58, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84, 2.61, -4.53, 7.92 ] - }, - { - "time": 0.3, - "offset": 2, - "vertices": [ -8.27, 6.68, -9.29, 10.13, -8.62, 14.71, -4.58, 18.81, -2.2, 17.1, -0.07, 9.9, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94, 2.38, -4.59, 10.01 ] - }, - { - "time": 0.3666, - "offset": 2, - "vertices": [ -10.47, 9.44, -13.36, 12.4, -14.32, 16.94, -9.24, 23.55, -5.51, 21.51, -1.19, 11.53, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14, 2.29, -6.63, 11.37 ] - }, - { - "time": 0.5, - "offset": 2, - "vertices": [ -5.42, 4.36, -10.59, 7.04, -11.64, 11.55, -6.19, 20.12, -1.45, 18.05, 4.86, 6.41, 2.81, 0.27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96, 4.94 ] - }, - { "time": 0.6333 }, - { - "time": 0.7333, - "offset": 4, - "vertices": [ 1.31, -6.84, -0.87, -12.54, -5.98, -14.08, -7.15, -11.63, -5.67, -4.83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06, -6.93 ] - }, - { - "time": 0.8, - "offset": 4, - "vertices": [ 0.65, -3.42, -0.43, -6.27, -2.99, -7.04, -3.57, -5.81, -2.83, -2.41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79, -1.28, 0, 0, 0, 0, -1.03, -3.46 ] - }, - { "time": 0.8666 } - ] - }, - "right hand": { - "right hand": [ - { - "time": 0, - "offset": 4, - "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] - }, - { "time": 0.5 }, - { - "time": 1, - "offset": 4, - "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] - } - ] - }, - "right lower leg": { - "right lower leg": [ - { "time": 0 }, - { - "time": 0.6, - "offset": 6, - "vertices": [ 1.8, -1.56 ] - }, - { "time": 1 } - ] - }, - "right upper leg": { - "right upper leg": [ - { - "time": 0, - "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] - }, - { "time": 0.3333 }, - { - "time": 0.8666, - "offset": 14, - "vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ] - }, - { - "time": 1, - "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] - } - ] - }, - "torso": { - "torso": [ - { - "time": 0, - "offset": 14, - "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] - }, - { - "time": 0.1333, - "offset": 14, - "vertices": [ 1.31, -0.59, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] - }, - { - "time": 0.3, - "offset": 14, - "vertices": [ 6.03, -3.13, 7.55, -1.38, 6.79, 0.31, 4.23, 1.14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07, -5.16, 0, 0, 4, 0.27, 0, 0, 0, 0, 3.43, -3.52 ] - }, - { - "time": 0.5, - "offset": 14, - "vertices": [ 2.25, -0.87, 2.57, -0.56, 3.17, -0.57, 1.48, 0.99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22, -4.43, 0, 0, 1.48, 0.01, 0, 0, 0, 0, 0.31, -3.28, -1.53, 0.17 ] - }, - { - "time": 0.6333, - "offset": 14, - "vertices": [ 0.75, -1.51, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] - }, - { - "time": 0.8666, - "offset": 14, - "vertices": [ 0.62, -1.26, 0.38, -2.2, 3.25, -0.5, 2.41, 2.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.66, -3.1, 0, 0, 2.3, -1.15, 0, 0, 0, 0, -0.07, -3.63, -0.93, 0.1 ] - }, - { - "time": 1, - "offset": 14, - "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] - } - ] - }, - "undie straps": { - "undie straps": [ - { - "time": 0, - "offset": 2, - "vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ] - }, - { - "time": 0.1333, - "offset": 2, - "vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ] - }, - { - "time": 0.3333, - "offset": 2, - "vertices": [ -2.37, -0.05, -0.49, 0.19, -0.9, 1.16, -1.6, 2.7, 0.96, 0.8 ] - }, - { - "time": 0.7, - "offset": 2, - "vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ] - }, - { - "time": 0.8666, - "offset": 2, - "vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ] - }, - { - "time": 1, - "offset": 2, - "vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ] - } - ] - }, - "undies": { - "undies": [ - { - "time": 0, - "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] - }, - { - "time": 0.1333, - "vertices": [ 0.72, 0.43, 7.2, -0.16, 1.37, 0, 1.37, 0, 1.37, 0, 1.25, 0.04, -0.99, -2.95, -1.37, -3.07, 1.37, 0, 0.35, -0.29, 2.99, -0.07, 3.9, -0.14 ] - }, - { - "time": 0.3333, - "vertices": [ 1.16, 0, 2.1, -0.23, 0, 0, 0, 0, 0, 0, 2.24, -0.24, -0.43, 0.6, -1.55, 0.48 ] - }, - { - "time": 0.5333, - "vertices": [ 1.16, 0, -0.23, -0.93, -2.92, 0.35, 0, 0, 0, 0, 0.49, -0.24, -0.64, -2.07, -0.64, -2.07 ] - }, - { - "time": 0.7, - "vertices": [ 1.86, -0.11, 4.66, -0.09, -1.76, 0.21, 0, 0, -0.56, 0.32, -1.13, -1.15, -2.19, -3.47, -1.29, -3.47, 0, 0, 0, 0, 1.58, -0.04, 2.65, 0.16 ] - }, - { - "time": 0.8333, - "vertices": [ 2.41, -0.2, 8.58, 0.58, -0.83, 0.1, 0, 0, -1.02, 0.59, -2.44, -1.87, -1.62, 0, 0, 0, 0, 0, 0, 0, 2.85, -0.08, 4.78, 0.3 ] - }, - { - "time": 0.8666, - "vertices": [ 2.01, -0.02, 8.98, 0.44, -0.2, 0.08, 0.45, 0, -0.35, 0.47, -1.84, -1.44, -0.79, 1.26, 0.53, 1.23, 0.45, 0, 0.11, -0.09, 3.28, -0.09, 5.13, 0.19 ] - }, - { - "time": 1, - "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] - } - ] - } - } - } - } -} -} \ No newline at end of file diff --git a/spine-tk2d/Assets/examples/goblins/images.meta b/spine-tk2d/Assets/examples/goblins/images.meta deleted file mode 100644 index 4e2133603..000000000 --- a/spine-tk2d/Assets/examples/goblins/images.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 4b989f3dd92ba6d46b9f473be0ef27fc -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/dagger.png b/spine-tk2d/Assets/examples/goblins/images/dagger.png deleted file mode 100644 index 9a666d631..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/dagger.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/dagger.png.meta b/spine-tk2d/Assets/examples/goblins/images/dagger.png.meta deleted file mode 100644 index defa4e75a..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/dagger.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: cff16cdb2ad3d54478e6d12afd6f835c -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin.meta b/spine-tk2d/Assets/examples/goblins/images/goblin.meta deleted file mode 100644 index 9c6edceca..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 5ec67732682a81943a13b2dfd7b316d1 -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/eyes-closed.png b/spine-tk2d/Assets/examples/goblins/images/goblin/eyes-closed.png deleted file mode 100644 index e306dd40f..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/eyes-closed.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/eyes-closed.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/eyes-closed.png.meta deleted file mode 100644 index 700d6c794..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/eyes-closed.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 2f9da4d291a7421488b5d8c4c33fc5b4 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/head.png b/spine-tk2d/Assets/examples/goblins/images/goblin/head.png deleted file mode 100644 index 81c1b5e1b..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/head.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/head.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/head.png.meta deleted file mode 100644 index 9ae734efd..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/head.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: bcce48841f8498e49876846c151dc4d7 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-arm.png b/spine-tk2d/Assets/examples/goblins/images/goblin/left-arm.png deleted file mode 100644 index 42f60e0aa..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/left-arm.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-arm.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/left-arm.png.meta deleted file mode 100644 index 68c269c84..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/left-arm.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: cf0aa5059c48db64380b5d8d9d48bbf7 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-foot.png b/spine-tk2d/Assets/examples/goblins/images/goblin/left-foot.png deleted file mode 100644 index 89c142b7c..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/left-foot.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-foot.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/left-foot.png.meta deleted file mode 100644 index f6ba394a8..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/left-foot.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 14451be1ccd40764e9be7944b1b35d7e -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-hand.png b/spine-tk2d/Assets/examples/goblins/images/goblin/left-hand.png deleted file mode 100644 index 39700f014..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/left-hand.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-hand.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/left-hand.png.meta deleted file mode 100644 index 6eaa71a39..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/left-hand.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 2f39487177b6d0f429497745e64e1db0 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-lower-leg.png b/spine-tk2d/Assets/examples/goblins/images/goblin/left-lower-leg.png deleted file mode 100644 index dd3e83b67..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/left-lower-leg.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-lower-leg.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/left-lower-leg.png.meta deleted file mode 100644 index b4be08c2f..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/left-lower-leg.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: d875337f331493b448affcae727ab7b0 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-shoulder.png b/spine-tk2d/Assets/examples/goblins/images/goblin/left-shoulder.png deleted file mode 100644 index 220b09cbf..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/left-shoulder.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-shoulder.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/left-shoulder.png.meta deleted file mode 100644 index f5255ab88..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/left-shoulder.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 6c0265e742cac734e86738c88cac3187 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-upper-leg.png b/spine-tk2d/Assets/examples/goblins/images/goblin/left-upper-leg.png deleted file mode 100644 index a031cf682..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/left-upper-leg.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/left-upper-leg.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/left-upper-leg.png.meta deleted file mode 100644 index cf0fb0e1e..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/left-upper-leg.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 30edd05fdf3f3ec4897c5f095cfba8f9 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/neck.png b/spine-tk2d/Assets/examples/goblins/images/goblin/neck.png deleted file mode 100644 index f4f3f04dc..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/neck.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/neck.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/neck.png.meta deleted file mode 100644 index 026b96f68..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/neck.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 946e1ac49a597d642940d2bc61a74ceb -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/pelvis.png b/spine-tk2d/Assets/examples/goblins/images/goblin/pelvis.png deleted file mode 100644 index a8fc15c0d..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/pelvis.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/pelvis.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/pelvis.png.meta deleted file mode 100644 index 5989ae20d..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/pelvis.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 34721831e8dc33048a1c642af9c91860 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-arm.png b/spine-tk2d/Assets/examples/goblins/images/goblin/right-arm.png deleted file mode 100644 index c7b752bb2..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/right-arm.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-arm.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/right-arm.png.meta deleted file mode 100644 index c98922722..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/right-arm.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 0fc0421ba4507d7479276646539febf7 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-foot.png b/spine-tk2d/Assets/examples/goblins/images/goblin/right-foot.png deleted file mode 100644 index ce982d310..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/right-foot.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-foot.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/right-foot.png.meta deleted file mode 100644 index 8e4e299ef..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/right-foot.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 232f1d4aee7e76547b4a3349b7fd4f29 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-hand.png b/spine-tk2d/Assets/examples/goblins/images/goblin/right-hand.png deleted file mode 100644 index 2363fba02..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/right-hand.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-hand.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/right-hand.png.meta deleted file mode 100644 index dec41eb80..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/right-hand.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: e89eca7d89b489f4491b5ec1cbb3ddf7 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-lower-leg.png b/spine-tk2d/Assets/examples/goblins/images/goblin/right-lower-leg.png deleted file mode 100644 index b9bb49654..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/right-lower-leg.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-lower-leg.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/right-lower-leg.png.meta deleted file mode 100644 index f5cca1a75..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/right-lower-leg.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: aab7b79018a3ec84baccbeb6d9c40554 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-shoulder.png b/spine-tk2d/Assets/examples/goblins/images/goblin/right-shoulder.png deleted file mode 100644 index 48baa266c..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/right-shoulder.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-shoulder.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/right-shoulder.png.meta deleted file mode 100644 index 64eabbccc..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/right-shoulder.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: d0937186e72f856419c9dbcaec82762d -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-upper-leg.png b/spine-tk2d/Assets/examples/goblins/images/goblin/right-upper-leg.png deleted file mode 100644 index d5fac4424..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/right-upper-leg.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/right-upper-leg.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/right-upper-leg.png.meta deleted file mode 100644 index a5298629c..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/right-upper-leg.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 438e00f2d68cac24bace724555e443b5 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/torso.png b/spine-tk2d/Assets/examples/goblins/images/goblin/torso.png deleted file mode 100644 index f9b4314ae..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/torso.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/torso.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/torso.png.meta deleted file mode 100644 index 56d9f6e3b..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/torso.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 9427b1a031010ab41b9cda104be8c204 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/undie-straps.png b/spine-tk2d/Assets/examples/goblins/images/goblin/undie-straps.png deleted file mode 100644 index 6088d3544..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/undie-straps.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/undie-straps.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/undie-straps.png.meta deleted file mode 100644 index eca91be55..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/undie-straps.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 9cfb974ed9f3dd042895ccfe0e2461b1 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/undies.png b/spine-tk2d/Assets/examples/goblins/images/goblin/undies.png deleted file mode 100644 index 95016babd..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/goblin/undies.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/goblin/undies.png.meta b/spine-tk2d/Assets/examples/goblins/images/goblin/undies.png.meta deleted file mode 100644 index de460e4e0..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblin/undies.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 10fccc8bd5aead04ca7376a040205f6f -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/goblingirl.meta b/spine-tk2d/Assets/examples/goblins/images/goblingirl.meta deleted file mode 100644 index 6d452d669..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/goblingirl.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 1c61c40d4513f844b9c4bb7bfb8992a6 -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/shield.png b/spine-tk2d/Assets/examples/goblins/images/shield.png deleted file mode 100644 index de431217c..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/shield.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/shield.png.meta b/spine-tk2d/Assets/examples/goblins/images/shield.png.meta deleted file mode 100644 index 4b45b9fed..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/shield.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 95c2d261ccd8d8c4b8760693cba0e08a -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/goblins/images/spear.png b/spine-tk2d/Assets/examples/goblins/images/spear.png deleted file mode 100644 index 0704dc326..000000000 Binary files a/spine-tk2d/Assets/examples/goblins/images/spear.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/goblins/images/spear.png.meta b/spine-tk2d/Assets/examples/goblins/images/spear.png.meta deleted file mode 100644 index b14274471..000000000 --- a/spine-tk2d/Assets/examples/goblins/images/spear.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 54e7cc7562d107b4d96e0422dc7ed587 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy.meta b/spine-tk2d/Assets/examples/spineboy.meta deleted file mode 100644 index b24e382b6..000000000 --- a/spine-tk2d/Assets/examples/spineboy.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: aafe437f17003ec449c178c2c329d221 -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/Spineboy SkeletonData.asset.meta b/spine-tk2d/Assets/examples/spineboy/Spineboy SkeletonData.asset.meta deleted file mode 100644 index 3da7130c0..000000000 --- a/spine-tk2d/Assets/examples/spineboy/Spineboy SkeletonData.asset.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: def3cb5fb0c27fe41995a7ecf2924e83 -NativeFormatImporter: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/Spineboy.cs b/spine-tk2d/Assets/examples/spineboy/Spineboy.cs deleted file mode 100644 index 04bcbd931..000000000 --- a/spine-tk2d/Assets/examples/spineboy/Spineboy.cs +++ /dev/null @@ -1,60 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -using UnityEngine; -using System.Collections; -using Spine; -using System; - -public class Spineboy : MonoBehaviour { - private SkeletonAnimation skeletonAnimation; - - void Start() { - // Get the SkeletonAnimation component for the GameObject this script is attached to. - skeletonAnimation = GetComponent(); - // Call our method any time an animation fires an event. - skeletonAnimation.state.Event += Event; - // Queue jump to be played on track 0 two seconds after the starting animation. - skeletonAnimation.state.AddAnimation(0, "jump", false, 2); - // Queue walk to be looped on track 0 after the jump animation. - skeletonAnimation.state.AddAnimation(0, "run", true, 0); - } - - public void Event (Spine.AnimationState state, int trackIndex, Spine.Event e) { - Debug.Log(trackIndex + " " + state.GetCurrent(trackIndex) + ": event " + e + ", " + e.Int); - } - - void OnMouseDown() { - // Set jump to be played on track 0 immediately. - skeletonAnimation.state.SetAnimation(0, "jump", false); - // Queue walk to be looped on track 0 after the jump animation. - skeletonAnimation.state.AddAnimation(0, "run", true, 0); - } -} diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data.meta b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data.meta deleted file mode 100644 index ee99d1479..000000000 --- a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: ecf18700fc84ae94ca3cfa6d301b50c0 -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/SpineboyAtlas.prefab b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/SpineboyAtlas.prefab deleted file mode 100644 index 6e4519428..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/SpineboyAtlas.prefab and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/SpineboyAtlas.prefab.meta b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/SpineboyAtlas.prefab.meta deleted file mode 100644 index 9fdbd2eaa..000000000 --- a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/SpineboyAtlas.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 4cd6560d5de81b240b7e7d9beaa3e2f0 -NativeFormatImporter: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat.meta b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat.meta deleted file mode 100644 index 24292fb50..000000000 --- a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: db97ecfecb17b6f458e01069ad10927d -NativeFormatImporter: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0.png b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0.png deleted file mode 100644 index 1e3188008..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0.png.meta b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0.png.meta deleted file mode 100644 index 1312cf13f..000000000 --- a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 9685688f4dc78cc4c980b5b39c9a6c7e -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: 1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 0 - textureType: -1 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas.prefab b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas.prefab deleted file mode 100644 index 71eaa0c06..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas.prefab and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas.prefab.meta b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas.prefab.meta deleted file mode 100644 index 1688fe351..000000000 --- a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: e04ef676426682f4fbe2b2e248bc3dc4 -NativeFormatImporter: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images.meta b/spine-tk2d/Assets/examples/spineboy/images.meta deleted file mode 100644 index 98831c7f8..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 59b6b8248068c5c48a322d8b794e27ba -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/eye_indifferent.png b/spine-tk2d/Assets/examples/spineboy/images/eye_indifferent.png deleted file mode 100644 index 1d29940ff..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/eye_indifferent.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/eye_indifferent.png.meta b/spine-tk2d/Assets/examples/spineboy/images/eye_indifferent.png.meta deleted file mode 100644 index ae67a57dc..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/eye_indifferent.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 6c0af3682888d1b44b20930c007395ed -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/eye_surprised.png b/spine-tk2d/Assets/examples/spineboy/images/eye_surprised.png deleted file mode 100644 index f411f9432..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/eye_surprised.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/eye_surprised.png.meta b/spine-tk2d/Assets/examples/spineboy/images/eye_surprised.png.meta deleted file mode 100644 index 375f0b90a..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/eye_surprised.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: ae61740dcd21c2a4c9664f29d3c4648d -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_bracer.png b/spine-tk2d/Assets/examples/spineboy/images/front_bracer.png deleted file mode 100644 index aa0fca6fd..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_bracer.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_bracer.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_bracer.png.meta deleted file mode 100644 index 5960623d2..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_bracer.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: f49cadc7ea01b0a4d9e4a54b43f9ae81 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_fist_closed.png b/spine-tk2d/Assets/examples/spineboy/images/front_fist_closed.png deleted file mode 100644 index eb8b24217..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_fist_closed.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_fist_closed.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_fist_closed.png.meta deleted file mode 100644 index 8ed1fd401..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_fist_closed.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: a29fc9a5b299a584e8ef5c9fdf41b165 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_fist_open.png b/spine-tk2d/Assets/examples/spineboy/images/front_fist_open.png deleted file mode 100644 index c950492d7..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_fist_open.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_fist_open.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_fist_open.png.meta deleted file mode 100644 index ee3749cb5..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_fist_open.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: f3263dfbb157c5043b33839d0bbf4990 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_foot.png b/spine-tk2d/Assets/examples/spineboy/images/front_foot.png deleted file mode 100644 index 69ea494c3..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_foot.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_foot.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_foot.png.meta deleted file mode 100644 index edb5b8e8d..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_foot.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: c79a35fcc3cc51a438b2e2a17982a1f7 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend1.png b/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend1.png deleted file mode 100644 index 6cbc1ffcc..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend1.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend1.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend1.png.meta deleted file mode 100644 index 58349da9c..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend1.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 7b87c0f427cf2d64d81bf787019c8211 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend2.png b/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend2.png deleted file mode 100644 index e6b3942c7..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend2.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend2.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend2.png.meta deleted file mode 100644 index ea7fd4879..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_foot_bend2.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: b3ff63c911a51b0459e1a517f1408b4a -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_shin.png b/spine-tk2d/Assets/examples/spineboy/images/front_shin.png deleted file mode 100644 index e63bef05b..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_shin.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_shin.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_shin.png.meta deleted file mode 100644 index 74be6e8bf..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_shin.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 30ef0c5f7aace9246916ecd9b26cc1c9 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_thigh.png b/spine-tk2d/Assets/examples/spineboy/images/front_thigh.png deleted file mode 100644 index 91dbd8df5..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_thigh.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_thigh.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_thigh.png.meta deleted file mode 100644 index 9fe77874b..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_thigh.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 205489628a41ef844bd13b946db011fa -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_upper_arm.png b/spine-tk2d/Assets/examples/spineboy/images/front_upper_arm.png deleted file mode 100644 index 49d16d286..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/front_upper_arm.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/front_upper_arm.png.meta b/spine-tk2d/Assets/examples/spineboy/images/front_upper_arm.png.meta deleted file mode 100644 index ceecb625e..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/front_upper_arm.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: cd1afb74c1b04dc49b5a148610c03839 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/goggles.png b/spine-tk2d/Assets/examples/spineboy/images/goggles.png deleted file mode 100644 index 7eb52b9db..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/goggles.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/goggles.png.meta b/spine-tk2d/Assets/examples/spineboy/images/goggles.png.meta deleted file mode 100644 index 33acd0c51..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/goggles.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: d765c8c54164b8a4fb9e39e197dc0a38 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/gun.png b/spine-tk2d/Assets/examples/spineboy/images/gun.png deleted file mode 100644 index 2ba05f556..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/gun.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/gun.png.meta b/spine-tk2d/Assets/examples/spineboy/images/gun.png.meta deleted file mode 100644 index 8166794d6..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/gun.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 0d603abca31d5994691350ac735c7744 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/head.png b/spine-tk2d/Assets/examples/spineboy/images/head.png deleted file mode 100644 index 2d7f66abf..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/head.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/head.png.meta b/spine-tk2d/Assets/examples/spineboy/images/head.png.meta deleted file mode 100644 index 0ccb6fa1d..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/head.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 14fa7cc064f366c46ba083cc8b3f6588 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/mouth_grind.png b/spine-tk2d/Assets/examples/spineboy/images/mouth_grind.png deleted file mode 100644 index 60046ab92..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/mouth_grind.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/mouth_grind.png.meta b/spine-tk2d/Assets/examples/spineboy/images/mouth_grind.png.meta deleted file mode 100644 index 2f8ec8b6f..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/mouth_grind.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 79978238279f41c4c973d521cabff9be -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/mouth_oooo.png b/spine-tk2d/Assets/examples/spineboy/images/mouth_oooo.png deleted file mode 100644 index e3dc2b1e2..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/mouth_oooo.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/mouth_oooo.png.meta b/spine-tk2d/Assets/examples/spineboy/images/mouth_oooo.png.meta deleted file mode 100644 index 5a9e271a9..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/mouth_oooo.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: f61e69cc476126e43b4e89084bf4ccaa -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/mouth_smile.png b/spine-tk2d/Assets/examples/spineboy/images/mouth_smile.png deleted file mode 100644 index 7a2276ee5..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/mouth_smile.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/mouth_smile.png.meta b/spine-tk2d/Assets/examples/spineboy/images/mouth_smile.png.meta deleted file mode 100644 index ce77acdce..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/mouth_smile.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 8c5e45a7cc597ca4cae33efcf9c24a05 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/muzzle.png b/spine-tk2d/Assets/examples/spineboy/images/muzzle.png deleted file mode 100644 index 6d53f3ad8..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/muzzle.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/muzzle.png.meta b/spine-tk2d/Assets/examples/spineboy/images/muzzle.png.meta deleted file mode 100644 index 5a21dc9a0..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/muzzle.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 9a16764712c632b49a00e17383604fdc -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/neck.png b/spine-tk2d/Assets/examples/spineboy/images/neck.png deleted file mode 100644 index 544ea1ed2..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/neck.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/neck.png.meta b/spine-tk2d/Assets/examples/spineboy/images/neck.png.meta deleted file mode 100644 index bd474849b..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/neck.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 5efaad89af5d0484a870721e289ba2f0 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_bracer.png b/spine-tk2d/Assets/examples/spineboy/images/rear_bracer.png deleted file mode 100644 index 06b9c9cd7..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/rear_bracer.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_bracer.png.meta b/spine-tk2d/Assets/examples/spineboy/images/rear_bracer.png.meta deleted file mode 100644 index 116f32e90..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/rear_bracer.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 5b233b54bf15bd84d8f892f7d60f651f -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_foot.png b/spine-tk2d/Assets/examples/spineboy/images/rear_foot.png deleted file mode 100644 index 6fdf9ad60..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/rear_foot.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_foot.png.meta b/spine-tk2d/Assets/examples/spineboy/images/rear_foot.png.meta deleted file mode 100644 index dfd3ab0e3..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/rear_foot.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 486dbb0e0e31aee47ad78051ffadcb67 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend1.png b/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend1.png deleted file mode 100644 index 10f2a72e9..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend1.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend1.png.meta b/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend1.png.meta deleted file mode 100644 index bd8dc58aa..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend1.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: 5d1789963e286334ab3f6964d37caddb -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend2.png b/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend2.png deleted file mode 100644 index 01dff6265..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend2.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend2.png.meta b/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend2.png.meta deleted file mode 100644 index ab3e80315..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/rear_foot_bend2.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: ff57e994b04010d458a584f4ed3ba9d8 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_shin.png b/spine-tk2d/Assets/examples/spineboy/images/rear_shin.png deleted file mode 100644 index 02335c263..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/rear_shin.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_shin.png.meta b/spine-tk2d/Assets/examples/spineboy/images/rear_shin.png.meta deleted file mode 100644 index a0d83d35d..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/rear_shin.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: e035fed7792ebf34ba6424833e244f5e -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_thigh.png b/spine-tk2d/Assets/examples/spineboy/images/rear_thigh.png deleted file mode 100644 index d5da9f15d..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/rear_thigh.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_thigh.png.meta b/spine-tk2d/Assets/examples/spineboy/images/rear_thigh.png.meta deleted file mode 100644 index bc6c81c44..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/rear_thigh.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: ed18ae5dd9428eb4590274b5620d0dcf -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_upper_arm.png b/spine-tk2d/Assets/examples/spineboy/images/rear_upper_arm.png deleted file mode 100644 index 52d3a9ef5..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/rear_upper_arm.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/rear_upper_arm.png.meta b/spine-tk2d/Assets/examples/spineboy/images/rear_upper_arm.png.meta deleted file mode 100644 index 1841f3278..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/rear_upper_arm.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: b7fd5d33d25bd59449a21c8a35dcb1ae -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/images/torso.png b/spine-tk2d/Assets/examples/spineboy/images/torso.png deleted file mode 100644 index c38b2ef45..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/images/torso.png and /dev/null differ diff --git a/spine-tk2d/Assets/examples/spineboy/images/torso.png.meta b/spine-tk2d/Assets/examples/spineboy/images/torso.png.meta deleted file mode 100644 index 9574fd8bd..000000000 --- a/spine-tk2d/Assets/examples/spineboy/images/torso.png.meta +++ /dev/null @@ -1,45 +0,0 @@ -fileFormatVersion: 2 -guid: c9d347920dea372469c0bafcc27a6320 -TextureImporter: - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 1 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 4096 - textureSettings: - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapMode: -1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/examples/spineboy/spineboy.json.txt b/spine-tk2d/Assets/examples/spineboy/spineboy.json.txt deleted file mode 100644 index 1ffa7aad5..000000000 --- a/spine-tk2d/Assets/examples/spineboy/spineboy.json.txt +++ /dev/null @@ -1,2412 +0,0 @@ -{ -"bones": [ - { "name": "hip", "y": 247.47 }, - { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, - { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, - { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, - { - "name": "front_shin", - "parent": "front_thigh", - "length": 128.76, - "x": 78.69, - "y": 1.6, - "rotation": -2.21, - "inheritScale": false, - "color": "00ff04ff" - }, - { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, - { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, - { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, - { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, - { - "name": "front_bracer", - "parent": "front_upper_arm", - "length": 40.57, - "x": 68.8, - "y": -0.68, - "rotation": 18.29, - "color": "00ff04ff" - }, - { "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" }, - { "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, - { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, - { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" }, - { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, - { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, - { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" } -], -"slots": [ - { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, - { "name": "rear_bracer", "bone": "rear_bracer", "attachment": "rear_bracer" }, - { "name": "gun", "bone": "gun", "attachment": "gun" }, - { "name": "rear_foot", "bone": "rear_foot", "attachment": "rear_foot" }, - { "name": "rear_thigh", "bone": "rear_thigh", "attachment": "rear_thigh" }, - { "name": "rear_shin", "bone": "rear_shin", "attachment": "rear_shin" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "front_upper_arm", "bone": "front_upper_arm", "attachment": "front_upper_arm" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eye", "bone": "head", "attachment": "eye_indifferent" }, - { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, - { "name": "front_foot", "bone": "front_foot", "attachment": "front_foot" }, - { "name": "front_shin", "bone": "front_shin", "attachment": "front_shin" }, - { "name": "mouth", "bone": "head", "attachment": "mouth_smile" }, - { "name": "goggles", "bone": "head", "attachment": "goggles" }, - { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, - { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "additive": true } -], -"skins": { - "default": { - "eye": { - "eye_indifferent": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }, - "eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 } - }, - "front_bracer": { - "front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 } - }, - "front_fist": { - "front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, - "front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 } - }, - "front_foot": { - "front_foot": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 126, "height": 69 }, - "front_foot_bend1": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 128, "height": 70 }, - "front_foot_bend2": { "x": 16.07, "y": 13.83, "rotation": 18.68, "width": 108, "height": 93 } - }, - "front_shin": { - "front_shin": { "x": 55.11, "y": -3.54, "rotation": 96.59, "width": 82, "height": 184 } - }, - "front_thigh": { - "front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 } - }, - "front_upper_arm": { - "front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 } - }, - "goggles": { - "goggles": { "x": 97.07, "y": 6.54, "rotation": -70.63, "width": 261, "height": 166 } - }, - "gun": { - "gun": { "x": 77.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 } - }, - "head": { - "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } - }, - "mouth": { - "mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, - "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, - "mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 } - }, - "muzzle": { - "muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 } - }, - "neck": { - "neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } - }, - "rear_bracer": { - "rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } - }, - "rear_foot": { - "rear_foot": { "x": 31.51, "y": 3.57, "rotation": 23.07, "width": 113, "height": 60 }, - "rear_foot_bend1": { "x": 34.39, "y": 4.8, "rotation": 23.07, "width": 117, "height": 66 }, - "rear_foot_bend2": { "x": 30.38, "y": 12.62, "rotation": 23.07, "width": 103, "height": 83 } - }, - "rear_shin": { - "rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } - }, - "rear_thigh": { - "rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 } - }, - "rear_upper_arm": { - "rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 } - }, - "torso": { - "torso": { "x": 63.61, "y": 7.12, "rotation": -94.53, "width": 98, "height": 180 } - } - } -}, -"events": { - "footstep": {}, - "headAttach": { "int": 3, "float": 4 }, - "headBehind": { "int": 5, "float": 6, "string": "setup" }, - "headPop": { "int": 1, "float": 2 } -}, -"animations": { - "death": { - "slots": { - "eye": { - "attachment": [ - { "time": 0, "name": "eye_surprised" }, - { "time": 0.4666, "name": "eye_indifferent" }, - { "time": 2.2333, "name": "eye_surprised" }, - { "time": 4.5333, "name": "eye_indifferent" } - ] - }, - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_oooo" }, - { "time": 2.2333, "name": "mouth_grind" }, - { "time": 4.5333, "name": "mouth_oooo" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { "time": 0, "angle": -2.82 }, - { "time": 0.1333, "angle": -28.74 }, - { "time": 0.2333, "angle": 11.42 }, - { "time": 0.3333, "angle": -50.24 }, - { "time": 0.4, "angle": -72.66, "curve": "stepped" }, - { "time": 0.4333, "angle": -72.66 }, - { "time": 0.5, "angle": -20.24 }, - { "time": 0.5666, "angle": -85.28, "curve": "stepped" }, - { "time": 0.9333, "angle": -85.28, "curve": "stepped" }, - { "time": 2.2333, "angle": -85.28 }, - { "time": 2.5, "angle": -51.96, "curve": "stepped" }, - { "time": 4.5333, "angle": -51.96 }, - { "time": 4.6666, "angle": -85.28 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": -2.82 }, - { "time": 0.1333, "angle": 12.35 }, - { "time": 0.2333, "angle": 29.89 }, - { "time": 0.3, "angle": 70.36 }, - { "time": 0.4, "angle": -10.22, "curve": "stepped" }, - { "time": 0.4333, "angle": -10.22 }, - { "time": 0.5, "angle": 2.92 }, - { "time": 0.5666, "angle": 47.94, "curve": "stepped" }, - { "time": 2.2333, "angle": 47.94 }, - { "time": 2.5, "angle": 18.5, "curve": "stepped" }, - { "time": 4.5333, "angle": 18.5 }, - { "time": 4.6666, "angle": 47.94 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -8.61 }, - { "time": 0.1333, "angle": 28.19 }, - { "time": 0.2666, "angle": -280.19 }, - { "time": 0.4, "angle": -237.22, "curve": "stepped" }, - { "time": 0.4333, "angle": -237.22 }, - { "time": 0.5, "angle": 76.03, "curve": "stepped" }, - { "time": 0.8, "angle": 76.03, "curve": "stepped" }, - { "time": 0.9333, "angle": 76.03, "curve": "stepped" }, - { "time": 2.2333, "angle": 76.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 2.2333, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -38.85 }, - { "time": 0.1333, "angle": -299.58 }, - { "time": 0.2666, "angle": -244.74 }, - { "time": 0.4, "angle": -292.35 }, - { "time": 0.4333, "angle": -315.84 }, - { "time": 0.5, "angle": -347.94 }, - { "time": 0.7, "angle": -347.33, "curve": "stepped" }, - { "time": 2.2333, "angle": -347.33 }, - { "time": 2.7, "angle": -290.68 }, - { "time": 2.7666, "angle": -285.1 }, - { "time": 4.6666, "angle": -290.68 }, - { "time": 4.8, "angle": 8.61 }, - { "time": 4.8666, "angle": 10.94 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": -44.69 }, - { "time": 0.1333, "angle": 112.26 }, - { "time": 0.2666, "angle": 129.07 }, - { "time": 0.4, "angle": 134.94, "curve": "stepped" }, - { "time": 0.4333, "angle": 134.94 }, - { "time": 0.5666, "angle": 172.6, "curve": "stepped" }, - { "time": 0.9333, "angle": 172.6, "curve": "stepped" }, - { "time": 2.2333, "angle": 172.6 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 21.88 }, - { "time": 0.1333, "angle": 11.48 }, - { "time": 0.2666, "angle": -18.81 }, - { "time": 0.4, "angle": -18.92 }, - { "time": 0.4333, "angle": -18.28 }, - { "time": 0.5, "angle": 60.61 }, - { "time": 0.7, "angle": -18.87, "curve": "stepped" }, - { "time": 2.2333, "angle": -18.87 }, - { "time": 2.7, "angle": -1.95, "curve": "stepped" }, - { "time": 4.6666, "angle": -1.95 }, - { "time": 4.8, "angle": 34.55 }, - { "time": 4.9333, "angle": -18.74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -2.33 }, - { "time": 0.2666, "angle": 26.34 }, - { "time": 0.7, "angle": -6.07, "curve": "stepped" }, - { "time": 2.2333, "angle": -6.07 }, - { "time": 2.7, "angle": 5.72, "curve": "stepped" }, - { "time": 4.6666, "angle": 5.72 }, - { "time": 4.8666, "angle": -6.52 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 10.36 }, - { "time": 0.1333, "angle": -23.12 }, - { "time": 0.2666, "angle": -23.11 }, - { "time": 0.4, "angle": -23.16, "curve": "stepped" }, - { "time": 0.4333, "angle": -23.16 }, - { "time": 0.5666, "angle": -23.2, "curve": "stepped" }, - { "time": 0.9333, "angle": -23.2, "curve": "stepped" }, - { "time": 2.2333, "angle": -23.2 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": -2.78 }, - { "time": 0.1333, "angle": -24.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.9333, "angle": 0, "curve": "stepped" }, - { "time": 2.2333, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.2, "x": 50.34, "y": 151.73 }, - { "time": 0.4, "x": 5.16, "y": -119.64, "curve": "stepped" }, - { "time": 0.4333, "x": 5.16, "y": -119.64 }, - { "time": 0.5, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 0.8, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 0.9333, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 2.2333, "x": 50.34, "y": -205.18 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 8.47 }, - { "time": 0.2666, "angle": 115.95 }, - { "time": 0.4, "angle": 180.66, "curve": "stepped" }, - { "time": 0.4333, "angle": 180.66 }, - { "time": 0.5, "angle": 155.22 }, - { "time": 0.6, "angle": 97.73 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": -27.37 }, - { "time": 0.2666, "angle": -35.1 }, - { "time": 0.4, "angle": -37.72, "curve": "stepped" }, - { "time": 0.4333, "angle": -37.72 }, - { "time": 0.5, "angle": -40.06 }, - { "time": 0.6, "angle": 2.76 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 70.45 }, - { "time": 0.2666, "angle": 155.34 }, - { "time": 0.4, "angle": 214.31, "curve": "stepped" }, - { "time": 0.4333, "angle": 214.31 }, - { "time": 0.5, "angle": 169.67 }, - { "time": 0.8, "angle": 83.27 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 18.93 }, - { "time": 0.2666, "angle": -21.04 }, - { "time": 0.4, "angle": -29.93, "curve": "stepped" }, - { "time": 0.4333, "angle": -29.93 }, - { "time": 0.5, "angle": -16.79 }, - { "time": 0.8, "angle": 7.77 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": -11.62 }, - { "time": 0.4, "angle": -45.59, "curve": "stepped" }, - { "time": 0.4333, "angle": -45.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4, "angle": -48.75, "curve": "stepped" }, - { "time": 0.4333, "angle": -48.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gunTip": { - "rotate": [ - { "time": 0, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - } - } - }, - "hit": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0.1666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" }, - { "time": 0.3333, "name": "mouth_smile" } - ] - } - }, - "bones": { - "torso": { - "rotate": [ - { "time": 0, "angle": 56.42 }, - { "time": 0.3333, "angle": 8.89 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 35.38 }, - { "time": 0.2333, "angle": 24.94 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 10.21 }, - { "time": 0.3333, "angle": -41.3 } - ] - }, - "front_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": -310.92, - "curve": [ 0.38, 0.53, 0.744, 1 ] - }, - { "time": 0.3333, "angle": -112.59 } - ], - "translate": [ - { "time": 0, "x": 7.23, "y": -13.13 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 36.99 }, - { "time": 0.3333, "angle": -28.64 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": 13.59 }, - { "time": 0.3333, "angle": 7.55 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": 271.02, - "curve": [ 0.342, 0.36, 0.68, 0.71 ] - }, - { "time": 0.3333, "angle": -15.84 } - ], - "translate": [ - { "time": 0.3333, "x": -0.09, "y": -0.46 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3333, "angle": 40.03 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 14.98 }, - { "time": 0.3333, "angle": 39.75 } - ] - }, - "hip": { - "translate": [ - { "time": 0, "x": -75.54, "y": -78.03 }, - { "time": 0.2333, "x": -36.48, "y": 12.42 }, - { "time": 0.3333, "x": -36.48, "y": -2.99 } - ] - }, - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 90.94, - "curve": [ 0.227, 0.26, 0.432, 1 ] - }, - { "time": 0.3333, "angle": 32.02 } - ], - "translate": [ - { "time": 0, "x": 7.21, "y": -4 } - ] - }, - "rear_thigh": { - "rotate": [ - { - "time": 0, - "angle": 40.51, - "curve": [ 0.295, 0.3, 0.59, 0.99 ] - }, - { "time": 0.3333, "angle": 90.76 } - ], - "translate": [ - { "time": 0, "x": -1.96, "y": -0.32 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": -96.62 }, - { "time": 0.3333, "angle": -15.13 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 7.99 }, - { "time": 0.3333, "angle": -67.54 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 5.4 }, - { "time": 0.3333, "angle": -16.26 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 2.67 }, - { "time": 0.3333, "angle": -10.31 } - ] - } - } - }, - "idle": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" }, - { "time": 1.6666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_smile" }, - { "time": 1.6666, "name": "mouth_smile" } - ] - } - }, - "bones": { - "torso": { - "rotate": [ - { - "time": 0, - "angle": -5.61, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8333, - "angle": -9.65, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -5.61 } - ], - "translate": [ - { "time": 0, "x": -6.49, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": -59.85, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -54.31, - "curve": [ 0.324, 0.11, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -59.85 } - ], - "translate": [ - { "time": 0, "x": -7.12, "y": -8.23 }, - { "time": 0.6666, "x": -6.32, "y": -8.3 }, - { "time": 1.6666, "x": -7.12, "y": -8.23 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": 62.41, - "curve": [ 0.504, 0.02, 0.75, 1 ] - }, - { - "time": 0.7333, - "angle": 43.83, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": 62.41 } - ], - "translate": [ - { "time": 0, "x": -1.83, "y": -16.78 }, - { "time": 0.6666, "x": 0.34, "y": -15.23 }, - { "time": 1.6666, "x": -1.83, "y": -16.78 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.6666, "angle": 2.39 }, - { "time": 1.6666, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -1.88, "y": -4.76, "curve": "stepped" }, - { "time": 1.6666, "x": -1.88, "y": -4.76 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 0.64, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": -4.34, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 0.64 } - ], - "translate": [ - { "time": 0, "x": -13.39, "y": 6.69, "curve": "stepped" }, - { "time": 1.6666, "x": -13.39, "y": 6.69 } - ], - "scale": [ - { - "time": 0, - "x": 0.896, - "y": 1, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 0.825, - "y": 1, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": 0.896, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": -19.28, "curve": "stepped" }, - { "time": 1.6666, "angle": -19.28 } - ], - "scale": [ - { - "time": 0, - "x": 1, - "y": 1, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 0.994, - "y": 1, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { - "time": 0, - "angle": 30.5, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 40.15, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 30.5 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { - "time": 0, - "angle": -23.83, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": -43.77, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": -23.83 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { - "time": 0, - "angle": 5.13, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 10.04, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 5.13 } - ], - "scale": [ - { "time": 0, "x": 0.755, "y": 1.309, "curve": "stepped" }, - { "time": 1.6666, "x": 0.755, "y": 1.309 } - ] - }, - "hip": { - "translate": [ - { - "time": 0, - "x": -6.63, - "y": -23.01, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 6.27, - "y": -35, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": -6.63, "y": -23.01 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { - "time": 0, - "angle": -7.34, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 3.85, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": -7.34 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { - "time": 0, - "angle": -17.16, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": 12.52, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -17.16 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": -5.51, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -3.12, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -5.51 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { - "time": 0, - "angle": 45.46, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": 41.33, - "curve": [ 0.32, 0.1, 0.736, 0.91 ] - }, - { "time": 1.6666, "angle": 45.46 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -15.59, - "curve": [ 0.732, 0, 0.769, 0.99 ] - }, - { "time": 1.6666, "angle": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { - "time": 0, - "angle": -6.84, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -14.63, - "curve": [ 0.324, 0.11, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -6.84 } - ], - "scale": [ - { - "time": 0, - "x": 1, - "y": 1, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "x": 0.689, - "y": 1.1, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - } - } - }, - "jump": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" }, - { "time": 0.2, "name": "front_fist_closed" }, - { "time": 0.6666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 91.53, - "curve": [ 0.278, 0.46, 0.763, 1 ] - }, - { - "time": 0.2, - "angle": -35.83, - "curve": [ 0.761, 0, 0.75, 1 ] - }, - { "time": 0.4333, "angle": 127.74 }, - { - "time": 0.7333, - "angle": 48.18, - "curve": [ 0.227, 0.26, 0.432, 1 ] - }, - { "time": 0.8333, "angle": 25.35 }, - { "time": 0.9333, "angle": 45.37 }, - { "time": 1.0333, "angle": 38.12 }, - { "time": 1.1333, "angle": 25.35 }, - { "time": 1.3333, "angle": 91.53 } - ], - "translate": [ - { "time": 0, "x": -2.56, "y": 5.77 }, - { "time": 0.4333, "x": 8.3, "y": 7.98 }, - { "time": 0.7333, "x": 7.21, "y": -4 }, - { "time": 1.3333, "x": -2.56, "y": 5.77 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -42.63 }, - { "time": 0.2, "angle": -5.74 }, - { "time": 0.4333, "angle": -50.76 }, - { "time": 0.7333, "angle": 1.89 }, - { "time": 0.8333, "angle": 11.58 }, - { "time": 0.9666, "angle": -1.89 }, - { "time": 1.1333, "angle": 11.58 }, - { "time": 1.3333, "angle": -42.63 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -26.32 }, - { "time": 0.2, "angle": 121.44 }, - { "time": 0.4333, "angle": 70.54 }, - { - "time": 0.7333, - "angle": 79.89, - "curve": [ 0.295, 0.3, 0.59, 0.99 ] - }, - { "time": 0.8333, "angle": 99.12 }, - { "time": 0.9333, "angle": 74.05 }, - { "time": 1.0333, "angle": 98.04 }, - { "time": 1.1333, "angle": 99.12 }, - { "time": 1.3333, "angle": -26.32 } - ], - "translate": [ - { "time": 0, "x": -0.56, "y": -0.32 }, - { "time": 0.4333, "x": -8.5, "y": 10.58 }, - { "time": 0.7333, "x": -1.96, "y": -0.32 }, - { "time": 1.3333, "x": -0.56, "y": -0.32 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -78.69 }, - { "time": 0.4333, "angle": -55.56 }, - { "time": 0.7333, "angle": -62.84 }, - { "time": 0.8333, "angle": -80.74 }, - { "time": 0.9333, "angle": -41.12 }, - { "time": 1.0333, "angle": -77.4 }, - { "time": 1.1333, "angle": -80.74 }, - { "time": 1.3333, "angle": -78.69 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.7333, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -22.61 }, - { "time": 0.2, "angle": -246.68 }, - { - "time": 0.6, - "angle": 11.28, - "curve": [ 0.246, 0, 0.633, 0.53 ] - }, - { - "time": 0.7333, - "angle": -57.45, - "curve": [ 0.38, 0.53, 0.744, 1 ] - }, - { "time": 0.8666, "angle": -112.59 }, - { "time": 0.9333, "angle": -102.17 }, - { "time": 1.0333, "angle": -108.61 }, - { "time": 1.1333, "angle": -112.59 }, - { "time": 1.3333, "angle": -22.61 } - ], - "translate": [ - { "time": 0, "x": 6.08, "y": 7.15 }, - { "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" }, - { "time": 0.7333, "x": 7.23, "y": -13.13 }, - { "time": 1.3333, "x": 6.08, "y": 7.15 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 66.46 }, - { "time": 0.2, "angle": 42.39 }, - { "time": 0.4333, "angle": 26.06 }, - { "time": 0.7333, "angle": 13.28 }, - { "time": 0.8666, "angle": -28.64 }, - { "time": 0.9333, "angle": -22.31 }, - { "time": 1.0333, "angle": -35.39 }, - { "time": 1.1333, "angle": -28.64 }, - { "time": 1.3333, "angle": 66.46 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -28.43 }, - { "time": 0.4333, "angle": -45.6 }, - { "time": 0.7333, "angle": -53.66 }, - { "time": 0.8666, "angle": 7.55 }, - { "time": 0.9333, "angle": 31.15 }, - { "time": 1.0333, "angle": -32.58 }, - { "time": 1.1333, "angle": 7.55 }, - { "time": 1.3333, "angle": -28.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 39.68 }, - { "time": 0.2, "angle": 276.57 }, - { "time": 0.3, "angle": 17.73 }, - { "time": 0.4333, "angle": 83.38 }, - { - "time": 0.6, - "angle": -4.71, - "curve": [ 0.246, 0, 0.633, 0.53 ] - }, - { - "time": 0.7333, - "angle": -69.63, - "curve": [ 0.342, 0.36, 0.68, 0.71 ] - }, - { - "time": 0.7666, - "angle": 321.47, - "curve": [ 0.333, 0.33, 0.667, 0.66 ] - }, - { - "time": 0.8, - "angle": 33.7, - "curve": [ 0.358, 0.64, 0.693, 1 ] - }, - { "time": 0.8666, "angle": 34.56 }, - { "time": 1.0333, "angle": 71.96 }, - { "time": 1.1333, "angle": 34.56 }, - { "time": 1.3333, "angle": 39.68 } - ], - "translate": [ - { "time": 0, "x": -3.1, "y": -4.86 }, - { "time": 0.2, "x": 23.33, "y": 49.07 }, - { "time": 0.4333, "x": 20.78, "y": 40.21 }, - { "time": 1.3333, "x": -3.1, "y": -4.86 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 29.66 }, - { "time": 0.2, "angle": 45.06 }, - { "time": 0.4333, "angle": -4.34 }, - { "time": 0.7666, "angle": 61.68 }, - { "time": 0.8, "angle": 82.59 }, - { "time": 0.8666, "angle": 80.06 }, - { "time": 1.0333, "angle": 57.56 }, - { "time": 1.1333, "angle": 80.06 }, - { "time": 1.3333, "angle": 29.66 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 24.9 }, - { "time": 0.2, "angle": 16.31 }, - { "time": 0.4333, "angle": 7.44 }, - { "time": 0.7333, "angle": -20.35 }, - { "time": 0.8333, "angle": -0.69, "curve": "stepped" }, - { "time": 1.1333, "angle": -0.69 }, - { "time": 1.3333, "angle": 24.9 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 24.92 }, - { "time": 0.2, "angle": 10.36 }, - { "time": 0.4333, "angle": 28.65 }, - { "time": 0.7333, "angle": -2.65 }, - { "time": 0.8333, "angle": -28.94, "curve": "stepped" }, - { "time": 1.1333, "angle": -28.94 }, - { "time": 1.3333, "angle": 24.92 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": -34.51, - "y": -78.62, - "curve": [ 0.232, 1, 0.75, 1 ] - }, - { - "time": 0.2, - "x": -34.51, - "y": 182.5, - "curve": [ 0.232, 0.48, 0.598, 0.79 ] - }, - { - "time": 0.7666, - "x": -34.51, - "y": 596.22, - "curve": [ 0.329, 0.17, 0.66, 0.21 ] - }, - { "time": 1.1333, "x": -34.51, "y": 2.49 }, - { "time": 1.3333, "x": -34.51, "y": -78.62 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": -90.62, - "curve": [ 0.416, 0.54, 0.743, 1 ] - }, - { - "time": 0.2, - "angle": -10.52, - "curve": [ 0.644, 0, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -127.72 }, - { "time": 0.7333, "angle": -19.91 }, - { "time": 0.8333, "angle": -5.16 }, - { "time": 0.9333, "angle": -35.06 }, - { "time": 1.0333, "angle": -43.97 }, - { "time": 1.1333, "angle": -5.16 }, - { "time": 1.3333, "angle": -90.62 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": -0.79 }, - { "time": 0.0333, "angle": 16.27 }, - { "time": 0.0666, "angle": 23.52 }, - { "time": 0.1, "angle": 21.02 }, - { "time": 0.1333, "angle": 10.92 }, - { "time": 0.2, "angle": -38.45 }, - { "time": 0.4333, "angle": 6.62 }, - { "time": 0.7333, "angle": -11.51 }, - { "time": 1.0333, "angle": -22.91 }, - { "time": 1.3333, "angle": -0.79 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": -12.77 }, - { "time": 0.2, "angle": 17.05 }, - { "time": 0.4333, "angle": 19.45 }, - { "time": 0.7333, "angle": 2.67 }, - { "time": 1.0333, "angle": -28.49 }, - { "time": 1.3333, "angle": -12.77 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 6.18 }, - { "time": 0.2, "angle": 30.81 }, - { "time": 0.4333, "angle": 13.25 }, - { "time": 0.7333, "angle": 14.98 }, - { "time": 0.7666, "angle": 25.64 }, - { "time": 0.8, "angle": 20.62 }, - { "time": 0.8666, "angle": 64.52 }, - { "time": 1.0333, "angle": 8.59 }, - { "time": 1.1333, "angle": 64.52 }, - { "time": 1.3333, "angle": 6.18 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - } - } - }, - "run": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 42.05, - "curve": [ 0.195, 0.86, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 46.07 }, - { "time": 0.1333, "angle": -20.28 }, - { "time": 0.2, "angle": -27.23 }, - { "time": 0.2666, "angle": -47.16 }, - { "time": 0.3333, "angle": -39.79 }, - { "time": 0.4, "angle": -25.86 }, - { "time": 0.4666, "angle": 14.35 }, - { "time": 0.5333, "angle": 55.62 }, - { "time": 0.6, "angle": 69.65 }, - { "time": 0.6666, "angle": 86.4 }, - { "time": 0.7333, "angle": 65.87 }, - { "time": 0.8, "angle": 42.05 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.0333, "x": -5.79, "y": 11.15 }, - { "time": 0.0666, "x": -5.13, "y": 11.55 }, - { "time": 0.1333, "x": -7.7, "y": 8.98 }, - { "time": 0.5333, "x": -1.26, "y": 3.83 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -39.7 }, - { "time": 0.2, "angle": -57.29 }, - { "time": 0.4, "angle": -39.7 }, - { "time": 0.6, "angle": -57.29 }, - { "time": 0.8, "angle": -39.7 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -56.59 }, - { "time": 0.0666, "angle": -21.57 }, - { "time": 0.1333, "angle": 27.95 }, - { "time": 0.2, "angle": 42.42 }, - { "time": 0.2666, "angle": 62.37 }, - { "time": 0.3333, "angle": 45.42 }, - { "time": 0.4, "angle": 15.67 }, - { "time": 0.4666, "angle": 28.22 }, - { "time": 0.5333, "angle": -38.62 }, - { "time": 0.6, "angle": -53.26 }, - { "time": 0.6666, "angle": -79.31 }, - { "time": 0.7333, "angle": -86.47 }, - { "time": 0.8, "angle": -56.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -6.76, "y": -3.86 }, - { "time": 0.4333, "x": -15.85, "y": 7.28 }, - { "time": 0.4666, "x": -13.04, "y": 4.04 }, - { "time": 0.5, "x": -10.24, "y": 7.11 }, - { "time": 0.5333, "x": -9.01, "y": -5.15 }, - { "time": 0.6666, "x": -23.18, "y": -2.57 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -74 }, - { "time": 0.0666, "angle": -83.38 }, - { "time": 0.1333, "angle": -106.69 }, - { "time": 0.2, "angle": -66.01 }, - { "time": 0.2666, "angle": -55.22 }, - { "time": 0.3333, "angle": -24.8 }, - { - "time": 0.4, - "angle": 18.44, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.4666, "angle": -56.65 }, - { - "time": 0.5333, - "angle": -11.94, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "angle": -41.26 }, - { "time": 0.7333, "angle": -43.6 }, - { "time": 0.8, "angle": -74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -89.36 }, - { "time": 0.0666, "angle": -95.67 }, - { "time": 0.1333, "angle": -22 }, - { "time": 0.2, "angle": -316.04 }, - { "time": 0.2666, "angle": -274.94 }, - { "time": 0.3333, "angle": -273.74 }, - { "time": 0.4, "angle": -272.09 }, - { "time": 0.4666, "angle": -264.89 }, - { "time": 0.5333, "angle": -320.09 }, - { "time": 0.6, "angle": -50.83 }, - { "time": 0.6666, "angle": -81.72 }, - { "time": 0.7333, "angle": -83.92 }, - { "time": 0.8, "angle": -89.36 } - ], - "translate": [ - { "time": 0, "x": 6.24, "y": 10.05 }, - { "time": 0.2666, "x": 4.95, "y": -13.13 }, - { "time": 0.6, "x": -2.43, "y": 1.94 }, - { "time": 0.8, "x": 6.24, "y": 10.05 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 33.43 }, - { "time": 0.0666, "angle": 20.53 }, - { "time": 0.1333, "angle": 15.26 }, - { "time": 0.2, "angle": 19.28 }, - { "time": 0.2666, "angle": 22.62 }, - { "time": 0.3333, "angle": 37.29 }, - { "time": 0.4, "angle": 41.53 }, - { "time": 0.4666, "angle": 31.73 }, - { "time": 0.5333, "angle": 67.45 }, - { "time": 0.6666, "angle": 39.77 }, - { "time": 0.7333, "angle": 30.95 }, - { "time": 0.8, "angle": 33.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -19.75 }, - { "time": 0.0666, "angle": -37.11 }, - { "time": 0.1333, "angle": -50.79 }, - { "time": 0.2666, "angle": -12.69 }, - { "time": 0.3333, "angle": 3.01 }, - { "time": 0.4333, "angle": 12.05 }, - { "time": 0.5333, "angle": 13.25 }, - { "time": 0.8, "angle": -19.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 68.68 }, - { "time": 0.0666, "angle": 73.89 }, - { "time": 0.1333, "angle": -9.64 }, - { "time": 0.2, "angle": 284.27 }, - { "time": 0.2666, "angle": 283.29 }, - { "time": 0.3333, "angle": 278.28 }, - { "time": 0.4, "angle": 271.02 }, - { "time": 0.4666, "angle": 263.2 }, - { "time": 0.5333, "angle": 314.25 }, - { "time": 0.6, "angle": 16.83 }, - { "time": 0.6666, "angle": 70.35 }, - { "time": 0.7333, "angle": 73.53 }, - { "time": 0.8, "angle": 68.68 } - ], - "translate": [ - { "time": 0, "x": -2.57, "y": -8.89 }, - { "time": 0.1333, "x": -4.68, "y": 7.2 }, - { "time": 0.2, "x": 21.73, "y": 51.17 }, - { "time": 0.6, "x": 4.33, "y": 2.05 }, - { "time": 0.8, "x": -2.57, "y": -8.89 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 31.04 }, - { "time": 0.0666, "angle": 28.28 }, - { "time": 0.1333, "angle": 49.36 }, - { "time": 0.2, "angle": 59.37 }, - { "time": 0.2666, "angle": 8.56 }, - { "time": 0.3333, "angle": 9.38 }, - { "time": 0.4, "angle": 11.51 }, - { "time": 0.4666, "angle": 7.22 }, - { "time": 0.5333, "angle": -18.44 }, - { "time": 0.6, "angle": 11.44 }, - { "time": 0.6666, "angle": 9.99 }, - { "time": 0.7333, "angle": 8.28 }, - { "time": 0.8, "angle": 31.04 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.2, "angle": 13.58 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.6, "angle": 13.58 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.1, "angle": 12.34 }, - { "time": 0.2, "angle": 25.55 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.5, "angle": 12.34 }, - { "time": 0.6, "angle": 25.55 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -62.47, "y": -23.1 }, - { - "time": 0.0666, - "x": -62.47, - "y": -38.51, - "curve": [ 0.244, 0.04, 0.75, 1 ] - }, - { - "time": 0.2666, - "x": -62.47, - "y": 22.28, - "curve": [ 0.17, 0.52, 0.75, 1 ] - }, - { "time": 0.4, "x": -62.47, "y": -23.1 }, - { "time": 0.4333, "x": -62.47, "y": -24.59 }, - { - "time": 0.4666, - "x": -62.47, - "y": -43.29, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "x": -62.47, "y": 22.28 }, - { "time": 0.8, "x": -62.47, "y": -23.1 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.481, 0.01, 0.75, 1 ] - }, - { "time": 0.0666, "angle": -64.42 }, - { - "time": 0.1333, - "angle": -20.59, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.2666, "angle": -62.51 }, - { "time": 0.3333, "angle": -79.74 }, - { "time": 0.4, "angle": -78.28 }, - { - "time": 0.4666, - "angle": -118.96, - "curve": [ 0.93, 0, 0.952, 0.95 ] - }, - { "time": 0.6, "angle": -88.95 }, - { "time": 0.6666, "angle": -79.09 }, - { "time": 0.7333, "angle": -47.77 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { - "time": 0.0333, - "angle": -21.13, - "curve": [ 0.121, 0.23, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 17.64 }, - { "time": 0.1, "angle": 29.92 }, - { "time": 0.1333, "angle": 16.44 }, - { "time": 0.2, "angle": -29.22 }, - { "time": 0.2666, "angle": -1.61 }, - { "time": 0.3333, "angle": -10.22 }, - { "time": 0.4666, "angle": -15.99 }, - { "time": 0.6, "angle": 9.03 }, - { "time": 0.7333, "angle": 17.32 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.0666, "angle": -12.04 }, - { "time": 0.1333, "angle": -0.87 }, - { "time": 0.2, "angle": 25.81 }, - { "time": 0.2666, "angle": 4.71 }, - { - "time": 0.4, - "angle": 18.09, - "curve": [ 0.281, 0.73, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -1.7 }, - { "time": 0.4666, "angle": 27.12 }, - { "time": 0.5, "angle": 38.83 }, - { "time": 0.5333, "angle": 30.76 }, - { "time": 0.5666, "angle": -20.49 }, - { "time": 0.6, "angle": -30.8 }, - { "time": 0.6666, "angle": -1.31 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 24.72 }, - { "time": 0.5, "angle": -11.87 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - } - }, - "events": [ - { "time": 0, "name": "footstep" }, - { "time": 0.4, "name": "footstep", "int": 1 } - ] - }, - "shoot": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0.1333, "name": "front_fist_closed" }, - { "time": 0.4, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0.1333, "name": "mouth_grind" } - ] - }, - "muzzle": { - "attachment": [ - { "time": 0.1333, "name": "muzzle" }, - { "time": 0.2666, "name": null } - ], - "color": [ - { - "time": 0.1333, - "color": "ffffff00", - "curve": [ 0.118, 0.99, 0.75, 1 ] - }, - { - "time": 0.1666, - "color": "ffffffff", - "curve": [ 0.821, 0, 0.909, 0.89 ] - }, - { "time": 0.2666, "color": "ffffff00" } - ] - } - }, - "bones": { - "front_fist": { - "scale": [ - { "time": 0.1333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.4, "x": 1, "y": 1 } - ] - }, - "gunTip": { - "translate": [ - { "time": 0.1333, "x": 0, "y": 0 }, - { "time": 0.2, "x": 20.93, "y": 1.57 } - ], - "scale": [ - { "time": 0.1333, "x": 1, "y": 1 }, - { "time": 0.2, "x": 1.247, "y": 1.516 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 1.9 } - ], - "translate": [ - { - "time": 0, - "x": 7.95, - "y": 5.84, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": -9.3, "y": -1.41 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": -30.47 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": -5.99, "y": -3.71 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 62.3 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": 2.81, "y": 11.41 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - } - } - }, - "test": { - "slots": { - "front_foot": { - "color": [ - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "ff0700ff" } - ] - }, - "gun": { - "color": [ - { "time": 0, "color": "ffffffff", "curve": "stepped" }, - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "32ff00ff" } - ] - }, - "rear_foot": { - "color": [ - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "ff0700ff" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3333, "angle": -20.72 }, - { "time": 0.6666, "angle": -32.41 }, - { "time": 1, "angle": -5.3 }, - { "time": 1.3333, "angle": 24.96 }, - { "time": 1.6666, "angle": 15.61 }, - { "time": 2, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0.172, 0.37, 0.574, 0.73 ] - }, - { - "time": 0.1666, - "x": 144.19, - "y": -77.59, - "curve": [ 0.372, 0.61, 0.765, 1 ] - }, - { - "time": 0.3333, - "x": 217.61, - "y": -192.63, - "curve": [ 0.282, 0, 0.624, 0.31 ] - }, - { - "time": 0.5, - "x": 181.21, - "y": -365.66, - "curve": [ 0.313, 0.21, 0.654, 0.54 ] - }, - { - "time": 0.6666, - "x": 20.09, - "y": -500.4, - "curve": [ 0.147, 0.27, 0.75, 1 ] - }, - { "time": 0.8333, "x": -194.24, "y": -341.84 }, - { "time": 1, "x": -307.93, "y": -114 }, - { - "time": 1.1666, - "x": -330.38, - "y": 121.42, - "curve": [ 0.25, 0, 0.764, 0.48 ] - }, - { - "time": 1.3333, - "x": -240.42, - "y": 335.66, - "curve": [ 0.229, 0.37, 0.58, 0.73 ] - }, - { - "time": 1.5, - "x": -56.12, - "y": 288.06, - "curve": [ 0.296, 0.6, 0.641, 1 ] - }, - { - "time": 1.6666, - "x": 87.63, - "y": 191.33, - "curve": [ 0.238, 0, 0.626, 0.39 ] - }, - { - "time": 1.8333, - "x": 60.62, - "y": 95.14, - "curve": [ 0.41, 0.26, 0.803, 0.62 ] - }, - { "time": 2, "x": 0, "y": 0 } - ] - } - }, - "draworder": [ - { - "time": 0.6666, - "offsets": [ - { "slot": "head", "offset": -9 }, - { "slot": "eye", "offset": -9 }, - { "slot": "mouth", "offset": -12 }, - { "slot": "goggles", "offset": -12 } - ] - }, - { "time": 1.3333 } - ], - "events": [ - { "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" }, - { "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" }, - { "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" } - ] - }, - "walk": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_smile" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { "time": 0, "angle": 15.79 }, - { "time": 0.1, "angle": 27.39 }, - { "time": 0.2, "angle": -7.94 }, - { "time": 0.3, "angle": -16.94 }, - { "time": 0.4, "angle": -28.62 }, - { "time": 0.5, "angle": -19.3 }, - { "time": 0.6, "angle": -3.08 }, - { "time": 0.7, "angle": 29.51 }, - { "time": 0.8, "angle": 15.79 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -1.18, "y": 0.54 }, - { "time": 0.5, "x": 0.11, "y": 0.41 }, - { "time": 0.6, "x": 9.48, "y": 0.27 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.4, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": 5.12 }, - { "time": 0.1, "angle": -20.87 }, - { "time": 0.2, "angle": 13.37 }, - { "time": 0.3, "angle": 15.98 }, - { "time": 0.4, "angle": 5.94 }, - { "time": 0.5, "angle": -26.76 }, - { "time": 0.7, "angle": -55.44 }, - { "time": 0.8, "angle": 5.12 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -34.38 }, - { "time": 0.1, "angle": -30.32 }, - { "time": 0.2, "angle": -37.22 }, - { "time": 0.3, "angle": 20.73 }, - { "time": 0.4, "angle": 8.69 }, - { "time": 0.5, "angle": 12.16 }, - { "time": 0.6, "angle": -24.62 }, - { "time": 0.7, "angle": -27.26 }, - { "time": 0.8, "angle": -34.38 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": 4.08, "y": -9.53 }, - { "time": 0.5, "x": 0, "y": 0 }, - { "time": 0.7, "x": -21.14, "y": -9.6 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 14.26 }, - { "time": 0.1, "angle": -17.3 }, - { "time": 0.2, "angle": -12.67 }, - { "time": 0.3, "angle": -58.89 }, - { "time": 0.4, "angle": 15.95 }, - { "time": 0.5, "angle": -9 }, - { "time": 0.6, "angle": 26.06 }, - { "time": 0.7, "angle": 21.85 }, - { "time": 0.8, "angle": 14.26 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 }, - { "time": 0.1, "x": 0.951, "y": 1 }, - { "time": 0.5, "x": 0.975, "y": 1 }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 10.13 }, - { "time": 0.1, "angle": 12.27 }, - { "time": 0.2, "angle": -2.94 }, - { "time": 0.3, "angle": 6.29 }, - { "time": 0.4, "angle": 13.45 }, - { "time": 0.5, "angle": -3.57 }, - { "time": 0.6, "angle": -0.97 }, - { "time": 0.7, "angle": 2.97 }, - { "time": 0.8, "angle": 10.13 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -23.74 }, - { "time": 0.4, "angle": -320.57 }, - { "time": 0.8, "angle": -23.74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 11.62 }, - { "time": 0.1, "angle": 19.36 }, - { "time": 0.4, "angle": 345.26 }, - { "time": 0.5, "angle": 343.44 }, - { "time": 0.8, "angle": 11.62 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -12.11 }, - { "time": 0.1666, "angle": -17.16 }, - { "time": 0.4, "angle": -12.11 }, - { "time": 0.5666, "angle": -15.81 }, - { "time": 0.8, "angle": -12.11 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 1.41 }, - { "time": 0.2333, "angle": -3.04 }, - { "time": 0.4, "angle": 1.41 }, - { "time": 0.6333, "angle": -3.04 }, - { "time": 0.8, "angle": 1.41 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 6.97 }, - { "time": 0.1666, "angle": 8.02 }, - { "time": 0.2666, "angle": 12.65 }, - { "time": 0.4, "angle": 6.97 }, - { "time": 0.5666, "angle": 8.02 }, - { "time": 0.6666, "angle": 12.65 }, - { "time": 0.8, "angle": 6.97 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": -23.93, - "y": 3.22, - "curve": [ 0.518, 0.03, 0.807, 0.61 ] - }, - { - "time": 0.1, - "x": -23.93, - "y": -9.24, - "curve": [ 0.135, 0.33, 0.601, 0.99 ] - }, - { - "time": 0.2, - "x": -23.93, - "y": 4.35, - "curve": [ 0.204, 0.68, 0.75, 1 ] - }, - { - "time": 0.3, - "x": -23.93, - "y": 2.38, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.4, - "x": -23.93, - "y": -2.5, - "curve": [ 0.692, 0.01, 0.75, 1 ] - }, - { - "time": 0.5, - "x": -23.93, - "y": -10.32, - "curve": [ 0.235, 0.77, 0.75, 1 ] - }, - { - "time": 0.6, - "x": -23.93, - "y": 4.35, - "curve": [ 0.287, 0.37, 0.718, 0.76 ] - }, - { - "time": 0.7, - "x": -23.93, - "y": 10.34, - "curve": [ 0.615, 0, 0.75, 1 ] - }, - { "time": 0.8, "x": -23.93, "y": 3.22 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4, "angle": 20.59 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 12.49 }, - { "time": 0.1, "angle": -8.34 }, - { "time": 0.2, "angle": -6.17 }, - { "time": 0.3, "angle": -0.75 }, - { "time": 0.3333, "angle": 3.89 }, - { "time": 0.4, "angle": 10.22 }, - { "time": 0.5, "angle": 11.44 }, - { "time": 0.6, "angle": -0.33 }, - { "time": 0.7, "angle": 0.15 }, - { "time": 0.8, "angle": 12.49 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 3.58 }, - { "time": 0.1, "angle": 5.51 }, - { "time": 0.4, "angle": -22.77 }, - { "time": 0.5, "angle": -9.65 }, - { "time": 0.8, "angle": 3.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -15.22 }, - { "time": 0.1, "angle": -51.4 }, - { "time": 0.4, "angle": -39.4 }, - { "time": 0.5, "angle": 19.26 }, - { "time": 0.8, "angle": -15.22 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { - "time": 0, - "angle": -24.06, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.1, - "angle": -10.94, - "curve": [ 0.381, 0.54, 0.742, 1 ] - }, - { - "time": 0.4, - "angle": 25.34, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -27.47, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.8, "angle": -24.06 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - } - } - } -} -} \ No newline at end of file diff --git a/spine-tk2d/Assets/examples/spineboy/spineboy.unity b/spine-tk2d/Assets/examples/spineboy/spineboy.unity deleted file mode 100644 index c358e4804..000000000 Binary files a/spine-tk2d/Assets/examples/spineboy/spineboy.unity and /dev/null differ diff --git a/spine-tk2d/Assets/spine-csharp.meta b/spine-tk2d/Assets/spine-csharp.meta deleted file mode 100644 index 6b09776f5..000000000 --- a/spine-tk2d/Assets/spine-csharp.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: fd5a58479265f7248ae0e2c97c958b7e -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/spine-csharp/Place spine-csharp src here.txt b/spine-tk2d/Assets/spine-csharp/Place spine-csharp src here.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/spine-tk2d/Assets/spine-tk2d.meta b/spine-tk2d/Assets/spine-tk2d.meta deleted file mode 100644 index f7c809bbc..000000000 --- a/spine-tk2d/Assets/spine-tk2d.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: ca05969319ad1e94694474804763fecc -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/BoneFollower.cs b/spine-tk2d/Assets/spine-tk2d/BoneFollower.cs deleted file mode 100644 index e900ba8ee..000000000 --- a/spine-tk2d/Assets/spine-tk2d/BoneFollower.cs +++ /dev/null @@ -1,143 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -using System; -using System.IO; -using System.Collections.Generic; -using UnityEngine; -using Spine; - -/// Sets a GameObject's transform to match a bone on a Spine skeleton. -[ExecuteInEditMode] -[AddComponentMenu("Spine/BoneFollower")] -public class BoneFollower : MonoBehaviour { - - [System.NonSerialized] - public bool - valid; - public SkeletonRenderer skeletonRenderer; - public Bone bone; - public bool followZPosition = true; - public bool followBoneRotation = true; - - public SkeletonRenderer SkeletonRenderer { - get { return skeletonRenderer; } - set { - skeletonRenderer = value; - Reset(); - } - } - - - /// If a bone isn't set, boneName is used to find the bone. - public String boneName; - public bool resetOnAwake = true; - protected Transform cachedTransform; - protected Transform skeletonTransform; - - public void HandleResetRenderer (SkeletonRenderer skeletonRenderer) { - Reset(); - } - - public void Reset () { - bone = null; - cachedTransform = transform; - valid = skeletonRenderer != null && skeletonRenderer.valid; - if (!valid) - return; - skeletonTransform = skeletonRenderer.transform; - - skeletonRenderer.OnReset -= HandleResetRenderer; - skeletonRenderer.OnReset += HandleResetRenderer; - - if (Application.isEditor) - DoUpdate(); - } - - void OnDestroy () { - //cleanup - if (skeletonRenderer != null) - skeletonRenderer.OnReset -= HandleResetRenderer; - } - - public void Awake () { - if (resetOnAwake) - Reset(); - } - - void LateUpdate () { - DoUpdate(); - } - - public void DoUpdate () { - if (!valid) { - Reset(); - return; - } - - if (bone == null) { - if (boneName == null || boneName.Length == 0) - return; - bone = skeletonRenderer.skeleton.FindBone(boneName); - if (bone == null) { - Debug.LogError("Bone not found: " + boneName, this); - return; - } else { - - } - } - - Spine.Skeleton skeleton = skeletonRenderer.skeleton; - float flipRotation = (skeleton.flipX ^ skeleton.flipY) ? -1f : 1f; - - if (cachedTransform.parent == skeletonTransform) { - cachedTransform.localPosition = new Vector3(bone.worldX, bone.worldY, followZPosition ? 0f : cachedTransform.localPosition.z); - - if (followBoneRotation) { - Vector3 rotation = cachedTransform.localRotation.eulerAngles; - cachedTransform.localRotation = Quaternion.Euler(rotation.x, rotation.y, bone.worldRotation * flipRotation); - } - - } else { - Vector3 targetWorldPosition = skeletonTransform.TransformPoint(new Vector3(bone.worldX, bone.worldY, 0f)); - if (!followZPosition) - targetWorldPosition.z = cachedTransform.position.z; - - cachedTransform.position = targetWorldPosition; - - if (followBoneRotation) { - Vector3 rotation = skeletonTransform.rotation.eulerAngles; - - cachedTransform.rotation = Quaternion.Euler(rotation.x, rotation.y, skeletonTransform.rotation.eulerAngles.z + (bone.worldRotation * flipRotation)); - } - } - - } -} \ No newline at end of file diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/BoneFollowerInspector.cs b/spine-tk2d/Assets/spine-tk2d/Editor/BoneFollowerInspector.cs deleted file mode 100644 index 943a98715..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/BoneFollowerInspector.cs +++ /dev/null @@ -1,106 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ -using System; -using UnityEditor; -using UnityEngine; - -[CustomEditor(typeof(BoneFollower))] -public class BoneFollowerInspector : Editor { - private SerializedProperty boneName, skeletonRenderer, followZPosition, followBoneRotation; - BoneFollower component; - - void OnEnable () { - skeletonRenderer = serializedObject.FindProperty("skeletonRenderer"); - boneName = serializedObject.FindProperty("boneName"); - followBoneRotation = serializedObject.FindProperty("followBoneRotation"); - followZPosition = serializedObject.FindProperty("followZPosition"); - component = (BoneFollower)target; - ForceReload(); - } - - void FindRenderer () { - if (skeletonRenderer.objectReferenceValue == null) { - SkeletonRenderer parentRenderer = SkeletonUtility.GetInParent(component.transform); - - if (parentRenderer != null) { - skeletonRenderer.objectReferenceValue = (UnityEngine.Object)parentRenderer; - } - - } - } - - void ForceReload () { - if (component.skeletonRenderer != null) { - if (component.skeletonRenderer.valid == false) - component.skeletonRenderer.Reset(); - } - } - - override public void OnInspectorGUI () { - serializedObject.Update(); - - FindRenderer(); - - EditorGUILayout.PropertyField(skeletonRenderer); - - if (component.valid) { - String[] bones = new String[1]; - try { - bones = new String[component.skeletonRenderer.skeleton.Data.Bones.Count + 1]; - } catch { - - } - - bones[0] = ""; - for (int i = 0; i < bones.Length - 1; i++) - bones[i + 1] = component.skeletonRenderer.skeleton.Data.Bones[i].Name; - Array.Sort(bones); - int boneIndex = Math.Max(0, Array.IndexOf(bones, boneName.stringValue)); - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Bone"); - EditorGUIUtility.LookLikeControls(); - boneIndex = EditorGUILayout.Popup(boneIndex, bones); - EditorGUILayout.EndHorizontal(); - - boneName.stringValue = boneIndex == 0 ? null : bones[boneIndex]; - EditorGUILayout.PropertyField(followBoneRotation); - EditorGUILayout.PropertyField(followZPosition); - } else { - GUILayout.Label("INVALID"); - } - - if (serializedObject.ApplyModifiedProperties() || - (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed") - ) { - component.Reset(); - } - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI.meta deleted file mode 100644 index d730a5573..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: bfaea6b7e7f52bc46b8d1c3cb5e9eaa1 -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animation.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animation.png deleted file mode 100644 index f44d38e90..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animation.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animation.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animation.png.meta deleted file mode 100644 index 6d9bc41dd..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animation.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 52b12ec801461494185a4d3dc66f3d1d -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animationRoot.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animationRoot.png deleted file mode 100644 index 610754689..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animationRoot.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animationRoot.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animationRoot.png.meta deleted file mode 100644 index 4bcf433e8..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-animationRoot.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 3d1be4ea889f3a14b864352fe49a1bde -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-bone.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-bone.png deleted file mode 100644 index ec66a6a85..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-bone.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-bone.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-bone.png.meta deleted file mode 100644 index 9c59ed87d..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-bone.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 8322793223a533a4ca8be6f430256dfc -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boneNib.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boneNib.png deleted file mode 100644 index 87373b8f0..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boneNib.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boneNib.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boneNib.png.meta deleted file mode 100644 index 955598a84..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boneNib.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 97a43f11e00735147a9dc3dff6d68191 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boundingBox.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boundingBox.png deleted file mode 100644 index 82beedfce..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boundingBox.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boundingBox.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boundingBox.png.meta deleted file mode 100644 index c90f54d3c..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-boundingBox.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 955aed20030d0504b8a9c6934a5cb47a -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-constraintNib.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-constraintNib.png deleted file mode 100644 index 175bcb047..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-constraintNib.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-constraintNib.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-constraintNib.png.meta deleted file mode 100644 index e7ab7aca3..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-constraintNib.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: de1a4f5ad4bdf1a4ea072c4d59ba87d8 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-event.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-event.png deleted file mode 100644 index 4547f254c..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-event.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-event.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-event.png.meta deleted file mode 100644 index 2ab786189..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-event.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: d226a80acc775714aa78b85e16a00e9b -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-hingeChain.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-hingeChain.png deleted file mode 100644 index a27af1c7c..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-hingeChain.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-image.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-image.png deleted file mode 100644 index 663d11350..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-image.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-image.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-image.png.meta deleted file mode 100644 index 24d78a242..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-image.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 2b3a6f35bbaa8414eb51a344743ee641 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-mesh.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-mesh.png deleted file mode 100644 index 1035553b7..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-mesh.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-mesh.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-mesh.png.meta deleted file mode 100644 index a98b0e9c8..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-mesh.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: a309a2e14638a204091b915126910f45 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-null.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-null.png deleted file mode 100644 index 9a6d738eb..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-null.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-null.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-null.png.meta deleted file mode 100644 index a949f63a6..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-null.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: d1de1604dfe4cb64c9d31246a8e43c78 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-poseBones.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-poseBones.png deleted file mode 100644 index 102700af0..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-poseBones.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-poseBones.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-poseBones.png.meta deleted file mode 100644 index c3748ea88..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-poseBones.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: da6f6d414e43aac46a57cc5a87208db4 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeleton.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeleton.png deleted file mode 100644 index b5d5adf28..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeleton.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeleton.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeleton.png.meta deleted file mode 100644 index f607575fb..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeleton.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: f2216037084d99d4481810cb521ed96f -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeletonUtility.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeletonUtility.png deleted file mode 100644 index ce4d937b2..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeletonUtility.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeletonUtility.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeletonUtility.png.meta deleted file mode 100644 index 9d3c22794..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skeletonUtility.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 5bb0631368b462047869d8788673cb48 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skin.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skin.png deleted file mode 100644 index 3d9bddeb4..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skin.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skin.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skin.png.meta deleted file mode 100644 index 3be7a6e69..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skin.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: bfd9f3d2607e9e44c97384d7575a17dc -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinPlaceholder.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinPlaceholder.png deleted file mode 100644 index 3b11d379e..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinPlaceholder.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinPlaceholder.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinPlaceholder.png.meta deleted file mode 100644 index e6ebc95cc..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinPlaceholder.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 04c82a4acf7b5244e947f2709ec3a6cf -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinsRoot.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinsRoot.png deleted file mode 100644 index 289871e41..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinsRoot.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinsRoot.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinsRoot.png.meta deleted file mode 100644 index e332380e8..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-skinsRoot.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 8bd14c7643597a74ba2edc10a5e4c4ed -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-slot.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-slot.png deleted file mode 100644 index ca938722d..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-slot.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-slot.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-slot.png.meta deleted file mode 100644 index 89224b580..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-slot.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 0338faf3e7d93e2478fcbc022d13e081 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-spine.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-spine.png deleted file mode 100644 index 7fd5473c1..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-spine.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-spine.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-spine.png.meta deleted file mode 100644 index c0ec65ca2..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-spine.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 4e7c964fa5e07024c8bf1debecc3b7c8 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-subMeshRenderer.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-subMeshRenderer.png deleted file mode 100644 index ec7c9e64b..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-subMeshRenderer.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-warning.png b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-warning.png deleted file mode 100644 index 05e3f4cdc..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-warning.png and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-warning.png.meta b/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-warning.png.meta deleted file mode 100644 index e32950ca4..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-warning.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 754d724c1bd750048852e8cf3d4a05ee -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - linearTexture: 1 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 1 - textureType: 2 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/Menus.cs b/spine-tk2d/Assets/spine-tk2d/Editor/Menus.cs deleted file mode 100644 index a01ad8312..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/Menus.cs +++ /dev/null @@ -1,70 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -using System; -using System.IO; -using UnityEditor; -using UnityEngine; -using Spine; - -public class Menus { - [MenuItem("Assets/Create/Spine SkeletonData")] - static public void CreateSkeletonData () { - CreateAsset("New SkeletonData"); - } - - static private void CreateAsset (String name) where T : ScriptableObject { - var dir = "Assets/"; - var selected = Selection.activeObject; - if (selected != null) { - var assetDir = AssetDatabase.GetAssetPath(selected.GetInstanceID()); - if (assetDir.Length > 0 && Directory.Exists(assetDir)) dir = assetDir + "/"; - } - ScriptableObject asset = ScriptableObject.CreateInstance(); - AssetDatabase.CreateAsset(asset, dir + name + ".asset"); - AssetDatabase.SaveAssets(); - EditorUtility.FocusProjectWindow(); - Selection.activeObject = asset; - } - - [MenuItem("GameObject/Create Other/Spine SkeletonRenderer")] - static public void CreateSkeletonRendererGameObject () { - GameObject gameObject = new GameObject("New SkeletonRenderer", typeof(SkeletonRenderer)); - EditorUtility.FocusProjectWindow(); - Selection.activeObject = gameObject; - } - - [MenuItem("GameObject/Create Other/Spine SkeletonAnimation")] - static public void CreateSkeletonAnimationGameObject () { - GameObject gameObject = new GameObject("New SkeletonAnimation", typeof(SkeletonAnimation)); - EditorUtility.FocusProjectWindow(); - Selection.activeObject = gameObject; - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/Menus.cs.meta b/spine-tk2d/Assets/spine-tk2d/Editor/Menus.cs.meta deleted file mode 100644 index f524d5648..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/Menus.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1907c00e57244fd4c8ff68eee5a58761 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonAnimationInspector.cs b/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonAnimationInspector.cs deleted file mode 100644 index f338626b2..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonAnimationInspector.cs +++ /dev/null @@ -1,111 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ -using System; -using UnityEditor; -using UnityEngine; -using Spine; - -[CustomEditor(typeof(SkeletonAnimation))] -public class SkeletonAnimationInspector : SkeletonRendererInspector { - protected SerializedProperty animationName, loop, timeScale; - protected bool isPrefab; - - protected override void OnEnable () { - base.OnEnable(); - animationName = serializedObject.FindProperty("_animationName"); - loop = serializedObject.FindProperty("loop"); - timeScale = serializedObject.FindProperty("timeScale"); - - if (PrefabUtility.GetPrefabType(this.target) == PrefabType.Prefab) - isPrefab = true; - - - } - - protected override void gui () { - base.gui(); - - SkeletonAnimation component = (SkeletonAnimation)target; - if (!component.valid) - return; - - //catch case where SetAnimation was used to set track 0 without using AnimationName - if (Application.isPlaying) { - TrackEntry currentState = component.state.GetCurrent(0); - if (currentState != null) { - if (component.AnimationName != animationName.stringValue) { - animationName.stringValue = currentState.Animation.Name; - } - } - } - - - //TODO: Refactor this to use GenericMenu and callbacks to avoid interfering with control by other behaviours. - // Animation name. - { - String[] animations = new String[component.skeleton.Data.Animations.Count + 1]; - animations[0] = ""; - int animationIndex = 0; - for (int i = 0; i < animations.Length - 1; i++) { - String name = component.skeleton.Data.Animations[i].Name; - animations[i + 1] = name; - if (name == animationName.stringValue) - animationIndex = i + 1; - } - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Animation", GUILayout.Width(EditorGUIUtility.labelWidth)); - animationIndex = EditorGUILayout.Popup(animationIndex, animations); - EditorGUILayout.EndHorizontal(); - - String selectedAnimationName = animationIndex == 0 ? null : animations[animationIndex]; - if (component.AnimationName != selectedAnimationName) { - component.AnimationName = selectedAnimationName; - animationName.stringValue = selectedAnimationName; - } - - - } - - EditorGUILayout.PropertyField(loop); - EditorGUILayout.PropertyField(timeScale); - component.timeScale = Math.Max(component.timeScale, 0); - - EditorGUILayout.Space(); - - if (!isPrefab) { - if (component.GetComponent() == null) { - if (GUILayout.Button(new GUIContent("Add Skeleton Utility", SpineEditorUtilities.Icons.skeletonUtility), GUILayout.Height(30))) { - component.gameObject.AddComponent(); - } - } - } - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonAnimationInspector.cs.meta b/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonAnimationInspector.cs.meta deleted file mode 100644 index 890c139f8..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonAnimationInspector.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a21294688dd7a7349a5ca17241fb40e0 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonDataAssetInspector.cs b/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonDataAssetInspector.cs deleted file mode 100644 index 97fb6715c..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonDataAssetInspector.cs +++ /dev/null @@ -1,636 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -/***************************************************************************** - * Automatic import and advanced preview added by Mitch Thompson - * Full irrevocable rights and permissions granted to Esoteric Software -*****************************************************************************/ -using System; -using System.Collections.Generic; -using UnityEditor; - -#if !UNITY_4_3 -using UnityEditor.AnimatedValues; -#endif -using UnityEngine; -using Spine; - -[CustomEditor(typeof(SkeletonDataAsset))] -public class SkeletonDataAssetInspector : Editor { - private SerializedProperty spriteCollection, skeletonJSON, scale, fromAnimation, toAnimation, duration, defaultMix; - private bool showAnimationStateData = true; - - #if UNITY_4_3 - private bool m_showAnimationList = true; - #else - private AnimBool m_showAnimationList = new AnimBool(true); - #endif - - private bool m_initialized = false; - private SkeletonDataAsset m_skeletonDataAsset; - private string m_skeletonDataAssetGUID; - bool failedSkeletonDataLatch = false; - - void OnEnable () { - try { - - spriteCollection = serializedObject.FindProperty("spriteCollection"); - skeletonJSON = serializedObject.FindProperty("skeletonJSON"); - scale = serializedObject.FindProperty("scale"); - fromAnimation = serializedObject.FindProperty("fromAnimation"); - toAnimation = serializedObject.FindProperty("toAnimation"); - duration = serializedObject.FindProperty("duration"); - defaultMix = serializedObject.FindProperty("defaultMix"); - - m_skeletonDataAsset = (SkeletonDataAsset)target; - m_skeletonDataAssetGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(m_skeletonDataAsset)); - - EditorApplication.update += Update; - - } catch { - - - } - } - - void OnDestroy () { - m_initialized = false; - EditorApplication.update -= Update; - this.DestroyPreviewInstances(); - if (this.m_previewUtility != null) { - this.m_previewUtility.Cleanup(); - this.m_previewUtility = null; - } - } - - override public void OnInspectorGUI () { - serializedObject.Update(); - SkeletonDataAsset asset = (SkeletonDataAsset)target; - - EditorGUI.BeginChangeCheck(); - EditorGUILayout.PropertyField(spriteCollection); - EditorGUILayout.PropertyField(skeletonJSON); - EditorGUILayout.PropertyField(scale); - if (EditorGUI.EndChangeCheck()) { - - if(failedSkeletonDataLatch){ - failedSkeletonDataLatch = false; - } - - if (m_previewUtility != null) { - m_previewUtility.Cleanup(); - m_previewUtility = null; - } - - serializedObject.ApplyModifiedProperties(); - } - - if(failedSkeletonDataLatch){ - GUI.color = Color.red; - GUILayout.Label("WARNING: Skeleton JSON and Sprite Collection Mismatch"); - return; - } - - SkeletonData skeletonData = asset.GetSkeletonData(asset.spriteCollection == null || asset.skeletonJSON == null); - if (skeletonData != null) { - showAnimationStateData = EditorGUILayout.Foldout(showAnimationStateData, "Animation State Data"); - if (showAnimationStateData) { - EditorGUILayout.PropertyField(defaultMix); - - // Animation names - String[] animations = new String[skeletonData.Animations.Count]; - for (int i = 0; i < animations.Length; i++) - animations[i] = skeletonData.Animations[i].Name; - - for (int i = 0; i < fromAnimation.arraySize; i++) { - SerializedProperty from = fromAnimation.GetArrayElementAtIndex(i); - SerializedProperty to = toAnimation.GetArrayElementAtIndex(i); - SerializedProperty durationProp = duration.GetArrayElementAtIndex(i); - EditorGUILayout.BeginHorizontal(); - from.stringValue = animations[EditorGUILayout.Popup(Math.Max(Array.IndexOf(animations, from.stringValue), 0), animations)]; - to.stringValue = animations[EditorGUILayout.Popup(Math.Max(Array.IndexOf(animations, to.stringValue), 0), animations)]; - durationProp.floatValue = EditorGUILayout.FloatField(durationProp.floatValue); - if (GUILayout.Button("Delete")) { - duration.DeleteArrayElementAtIndex(i); - toAnimation.DeleteArrayElementAtIndex(i); - fromAnimation.DeleteArrayElementAtIndex(i); - } - EditorGUILayout.EndHorizontal(); - } - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.Space(); - if (GUILayout.Button("Add Mix")) { - duration.arraySize++; - toAnimation.arraySize++; - fromAnimation.arraySize++; - } - EditorGUILayout.Space(); - EditorGUILayout.EndHorizontal(); - } - - if (GUILayout.Button(new GUIContent("Setup Pose", SpineEditorUtilities.Icons.skeleton), GUILayout.Width(105), GUILayout.Height(18))) { - StopAnimation(); - m_skeletonAnimation.skeleton.SetToSetupPose(); - m_requireRefresh = true; - } - - #if UNITY_4_3 - m_showAnimationList = EditorGUILayout.Foldout(m_showAnimationList, new GUIContent("Animations", SpineEditorUtilities.Icons.animationRoot)); - if(m_showAnimationList){ - #else - m_showAnimationList.target = EditorGUILayout.Foldout(m_showAnimationList.target, new GUIContent("Animations", SpineEditorUtilities.Icons.animationRoot)); - if (EditorGUILayout.BeginFadeGroup(m_showAnimationList.faded)) { - #endif - - - - - EditorGUILayout.LabelField("Name", "Duration"); - foreach (Spine.Animation a in skeletonData.Animations) { - GUILayout.BeginHorizontal(); - - if (m_skeletonAnimation != null && m_skeletonAnimation.state != null) { - if (m_skeletonAnimation.state.GetCurrent(0) != null && m_skeletonAnimation.state.GetCurrent(0).Animation == a) { - GUI.contentColor = Color.black; - if (GUILayout.Button("\u25BA", GUILayout.Width(24))) { - StopAnimation(); - } - GUI.contentColor = Color.white; - } else { - if (GUILayout.Button("\u25BA", GUILayout.Width(24))) { - PlayAnimation(a.Name, true); - } - } - } else { - GUILayout.Label("?", GUILayout.Width(24)); - } - EditorGUILayout.LabelField(new GUIContent(a.Name, SpineEditorUtilities.Icons.animation), new GUIContent(a.Duration.ToString("f3") + "s" + ("(" + (Mathf.RoundToInt(a.Duration * 30)) + ")").PadLeft(12, ' '))); - GUILayout.EndHorizontal(); - } - } - #if !UNITY_4_3 - EditorGUILayout.EndFadeGroup(); - #endif - } - - if (!Application.isPlaying) { - if (serializedObject.ApplyModifiedProperties() || - (UnityEngine.Event.current.type == EventType.ValidateCommand && UnityEngine.Event.current.commandName == "UndoRedoPerformed") - ) { - asset.Reset(); - } - } - } - - //preview window stuff - private PreviewRenderUtility m_previewUtility; - private GameObject m_previewInstance; - private Vector2 previewDir; - private SkeletonAnimation m_skeletonAnimation; - private SkeletonData m_skeletonData; - private static int sliderHash = "Slider".GetHashCode(); - private float m_lastTime; - private bool m_playing; - private bool m_requireRefresh; - private Color m_originColor = new Color(0.3f, 0.3f, 0.3f, 1); - - private void StopAnimation () { - m_skeletonAnimation.state.ClearTrack(0); - m_playing = false; - } - - List m_animEvents = new List(); - List m_animEventFrames = new List(); - - private void PlayAnimation (string animName, bool loop) { - m_animEvents.Clear(); - m_animEventFrames.Clear(); - - m_skeletonAnimation.state.SetAnimation(0, animName, loop); - - Spine.Animation a = m_skeletonAnimation.state.GetCurrent(0).Animation; - foreach (Timeline t in a.Timelines) { - if (t.GetType() == typeof(EventTimeline)) { - EventTimeline et = (EventTimeline)t; - - for (int i = 0; i < et.Events.Length; i++) { - m_animEvents.Add(et.Events[i]); - m_animEventFrames.Add(et.Frames[i]); - } - - } - } - - m_playing = true; - } - - private void InitPreview () { - if (this.m_previewUtility == null && m_skeletonDataAsset.spriteCollection != null && !failedSkeletonDataLatch) { - this.m_lastTime = Time.realtimeSinceStartup; - this.m_previewUtility = new PreviewRenderUtility(true); - this.m_previewUtility.m_Camera.isOrthoGraphic = true; - this.m_previewUtility.m_Camera.orthographicSize = (scale.floatValue * (m_skeletonDataAsset.spriteCollection.invOrthoSize * m_skeletonDataAsset.spriteCollection.halfTargetHeight)) / 100; - this.m_previewUtility.m_Camera.cullingMask = -2147483648; - this.CreatePreviewInstances(); - } - } - - private void CreatePreviewInstances () { - this.DestroyPreviewInstances(); - if (this.m_previewInstance == null) { - string skinName = EditorPrefs.GetString(m_skeletonDataAssetGUID + "_lastSkin", ""); - SkeletonAnimation skelAnim = SpineEditorUtilities.SpawnAnimatedSkeleton((SkeletonDataAsset)target, skinName); - if(skelAnim == null){ - failedSkeletonDataLatch = true; - //EditorUtility.DisplayDialog("Skeleton / SpriteCollection Mismatch", "GetSkeletonData failed, make sure JSON and SpriteCollection match.\nSprite Collection must contain all attachments referenced in SkeletonJSON", "OK"); - return; //failed - } - - m_previewInstance = skelAnim.gameObject; - //m_previewInstance.transform.localScale = Vector3.one * 0.01f; - m_previewInstance.hideFlags = HideFlags.HideAndDontSave; - m_previewInstance.layer = 0x1f; - - - m_skeletonAnimation = m_previewInstance.GetComponent(); - m_skeletonAnimation.initialSkinName = skinName; - m_skeletonAnimation.LateUpdate(); - m_skeletonData = m_skeletonAnimation.skeletonDataAsset.GetSkeletonData(true); - - m_previewInstance.renderer.enabled = false; - - m_initialized = true; - AdjustCameraGoals(true); - } - } - - private void DestroyPreviewInstances () { - if (this.m_previewInstance != null) { - DestroyImmediate(this.m_previewInstance); - m_previewInstance = null; - } - m_initialized = false; - } - - public override bool HasPreviewGUI () { - //TODO: validate json data - - return skeletonJSON.objectReferenceValue != null && spriteCollection.objectReferenceValue != null && !failedSkeletonDataLatch; - } - - Texture m_previewTex = new Texture(); - - public override void OnInteractivePreviewGUI (Rect r, GUIStyle background) { - if(m_skeletonDataAsset.spriteCollection == null) - return; - - this.InitPreview(); - - if (UnityEngine.Event.current.type == EventType.Repaint) { - if (m_requireRefresh) { - this.m_previewUtility.BeginPreview(r, background); - this.DoRenderPreview(true); - this.m_previewTex = this.m_previewUtility.EndPreview(); - m_requireRefresh = false; - } - if (this.m_previewTex != null) - GUI.DrawTexture(r, m_previewTex, ScaleMode.StretchToFill, false); - } - - DrawSkinToolbar(r); - NormalizedTimeBar(r); - //TODO: implement panning - // this.previewDir = Drag2D(this.previewDir, r); - MouseScroll(r); - } - - float m_orthoGoal = 1; - Vector3 m_posGoal = new Vector3(0, 0, -10); - double m_adjustFrameEndTime = 0; - - private void AdjustCameraGoals (bool calculateMixTime) { - if (calculateMixTime) { - if (m_skeletonAnimation.state.GetCurrent(0) != null) { - m_adjustFrameEndTime = EditorApplication.timeSinceStartup + m_skeletonAnimation.state.GetCurrent(0).Mix; - } - } - - GameObject go = this.m_previewInstance; - Bounds bounds = go.renderer.bounds; - m_orthoGoal = bounds.size.y; - m_posGoal = bounds.center + new Vector3(0, 0, -10); - } - - private void AdjustCameraGoals () { - AdjustCameraGoals(false); - } - - private void AdjustCamera () { - if (m_previewUtility == null) - return; - - - if (EditorApplication.timeSinceStartup < m_adjustFrameEndTime) { - AdjustCameraGoals(); - } - - float orthoSet = Mathf.Lerp(this.m_previewUtility.m_Camera.orthographicSize, m_orthoGoal, 0.1f); - - this.m_previewUtility.m_Camera.orthographicSize = orthoSet; - - - float dist = Vector3.Distance(m_previewUtility.m_Camera.transform.position, m_posGoal); - if (dist > m_skeletonDataAsset.scale) { - Vector3 pos = Vector3.Lerp(this.m_previewUtility.m_Camera.transform.position, m_posGoal, 0.1f); - pos.x = 0; - this.m_previewUtility.m_Camera.transform.position = pos; - this.m_previewUtility.m_Camera.transform.rotation = Quaternion.identity; - m_requireRefresh = true; - } - } - - private void DoRenderPreview (bool drawHandles) { - GameObject go = this.m_previewInstance; - - if (m_requireRefresh && go != null) { - go.renderer.enabled = true; - - if (EditorApplication.isPlaying) { - //do nothing - } else { - m_skeletonAnimation.Update((Time.realtimeSinceStartup - m_lastTime)); - } - - m_lastTime = Time.realtimeSinceStartup; - - if (!EditorApplication.isPlaying) - m_skeletonAnimation.LateUpdate(); - - if (drawHandles) { - Handles.SetCamera(m_previewUtility.m_Camera); - Handles.color = m_originColor; - - Handles.DrawLine(new Vector3(-1000 * m_skeletonDataAsset.scale, 0, 0), new Vector3(1000 * m_skeletonDataAsset.scale, 0, 0)); - Handles.DrawLine(new Vector3(0, 1000 * m_skeletonDataAsset.scale, 0), new Vector3(0, -1000 * m_skeletonDataAsset.scale, 0)); - } - - this.m_previewUtility.m_Camera.Render(); - go.renderer.enabled = false; - } - - - } - - void Update () { - AdjustCamera(); - - if (m_playing) { - m_requireRefresh = true; - Repaint(); - } else if (m_requireRefresh) { - Repaint(); - } else { - #if !UNITY_4_3 - if (m_showAnimationList.isAnimating) - Repaint(); - #endif - } - } - - void DrawSkinToolbar (Rect r) { - if (m_skeletonAnimation == null) - return; - - if (m_skeletonAnimation.skeleton != null) { - string label = (m_skeletonAnimation.skeleton != null && m_skeletonAnimation.skeleton.Skin != null) ? m_skeletonAnimation.skeleton.Skin.Name : "default"; - - Rect popRect = new Rect(r); - popRect.y += 32; - popRect.x += 4; - popRect.height = 24; - popRect.width = 40; - EditorGUI.DropShadowLabel(popRect, new GUIContent("Skin", SpineEditorUtilities.Icons.skinsRoot)); - - popRect.y += 11; - popRect.width = 150; - popRect.x += 44; - - if (GUI.Button(popRect, label, EditorStyles.popup)) { - SelectSkinContext(); - } - } - } - - void SelectSkinContext () { - GenericMenu menu = new GenericMenu(); - - foreach (Skin s in m_skeletonData.Skins) { - menu.AddItem(new GUIContent(s.Name), this.m_skeletonAnimation.skeleton.Skin == s, SetSkin, (object)s); - } - - menu.ShowAsContext(); - } - - void SetSkin (object o) { - Skin skin = (Skin)o; - - m_skeletonAnimation.initialSkinName = skin.Name; - m_skeletonAnimation.Reset(); - m_requireRefresh = true; - - EditorPrefs.SetString(m_skeletonDataAssetGUID + "_lastSkin", skin.Name); - } - - void NormalizedTimeBar (Rect r) { - Rect barRect = new Rect(r); - barRect.height = 32; - barRect.x += 4; - barRect.width -= 4; - - GUI.Box(barRect, ""); - - Rect lineRect = new Rect(barRect); - float width = lineRect.width; - TrackEntry t = m_skeletonAnimation.state.GetCurrent(0); - - if (t != null) { - int loopCount = (int)(t.Time / t.EndTime); - float currentTime = t.Time - (t.EndTime * loopCount); - - float normalizedTime = currentTime / t.Animation.Duration; - - lineRect.x = barRect.x + (width * normalizedTime) - 0.5f; - lineRect.width = 2; - - GUI.color = Color.red; - GUI.DrawTexture(lineRect, EditorGUIUtility.whiteTexture); - GUI.color = Color.white; - - for (int i = 0; i < m_animEvents.Count; i++) { - //TODO: Tooltip - //Spine.Event spev = animEvents[i]; - - float fr = m_animEventFrames[i]; - - Rect evRect = new Rect(barRect); - evRect.x = Mathf.Clamp(((fr / t.Animation.Duration) * width) - (SpineEditorUtilities.Icons._event.width / 2), barRect.x, float.MaxValue); - evRect.width = SpineEditorUtilities.Icons._event.width; - evRect.height = SpineEditorUtilities.Icons._event.height; - evRect.y += SpineEditorUtilities.Icons._event.height; - GUI.DrawTexture(evRect, SpineEditorUtilities.Icons._event); - - - //TODO: Tooltip - /* - UnityEngine.Event ev = UnityEngine.Event.current; - if(ev.isMouse){ - if(evRect.Contains(ev.mousePosition)){ - Rect tooltipRect = new Rect(evRect); - tooltipRect.width = 500; - tooltipRect.y -= 4; - tooltipRect.x += 4; - GUI.Label(tooltipRect, spev.Data.Name); - } - } - */ - } - } - } - - void MouseScroll (Rect position) { - UnityEngine.Event current = UnityEngine.Event.current; - int controlID = GUIUtility.GetControlID(sliderHash, FocusType.Passive); - - switch (current.GetTypeForControl(controlID)) { - case EventType.ScrollWheel: - if (position.Contains(current.mousePosition)) { - - m_orthoGoal += current.delta.y * ((SkeletonDataAsset)target).scale * 10; - GUIUtility.hotControl = controlID; - current.Use(); - } - break; - } - - } - - //TODO: Implement preview panning - /* - static Vector2 Drag2D(Vector2 scrollPosition, Rect position) - { - int controlID = GUIUtility.GetControlID(sliderHash, FocusType.Passive); - UnityEngine.Event current = UnityEngine.Event.current; - switch (current.GetTypeForControl(controlID)) - { - case EventType.MouseDown: - if (position.Contains(current.mousePosition) && (position.width > 50f)) - { - GUIUtility.hotControl = controlID; - current.Use(); - EditorGUIUtility.SetWantsMouseJumping(1); - } - return scrollPosition; - - case EventType.MouseUp: - if (GUIUtility.hotControl == controlID) - { - GUIUtility.hotControl = 0; - } - EditorGUIUtility.SetWantsMouseJumping(0); - return scrollPosition; - - case EventType.MouseMove: - return scrollPosition; - - case EventType.MouseDrag: - if (GUIUtility.hotControl == controlID) - { - scrollPosition -= (Vector2) (((current.delta * (!current.shift ? ((float) 1) : ((float) 3))) / Mathf.Min(position.width, position.height)) * 140f); - scrollPosition.y = Mathf.Clamp(scrollPosition.y, -90f, 90f); - current.Use(); - GUI.changed = true; - } - return scrollPosition; - } - return scrollPosition; - } - */ - - public override GUIContent GetPreviewTitle () { - return new GUIContent("Preview"); - } - - public override void OnPreviewSettings () { - if (!m_initialized) { - GUILayout.HorizontalSlider(0, 0, 2, GUILayout.MaxWidth(64)); - } else { - float speed = GUILayout.HorizontalSlider(m_skeletonAnimation.timeScale, 0, 2, GUILayout.MaxWidth(64)); - - //snap to nearest 0.25 - float y = speed / 0.25f; - int q = Mathf.RoundToInt(y); - speed = q * 0.25f; - - m_skeletonAnimation.timeScale = speed; - } - } - - //TODO: Fix first-import error - //TODO: Update preview without thumbnail - public override Texture2D RenderStaticPreview (string assetPath, UnityEngine.Object[] subAssets, int width, int height) { - if(m_skeletonDataAsset.spriteCollection == null) - return null; - Texture2D tex = new Texture2D(width, height, TextureFormat.ARGB32, false); - - this.InitPreview(); - - if (this.m_previewUtility.m_Camera == null) - return null; - - m_requireRefresh = true; - this.DoRenderPreview(false); - AdjustCameraGoals(false); - - this.m_previewUtility.m_Camera.orthographicSize = m_orthoGoal / 2; - this.m_previewUtility.m_Camera.transform.position = m_posGoal; - this.m_previewUtility.BeginStaticPreview(new Rect(0, 0, width, height)); - this.DoRenderPreview(false); - - //TODO: Figure out why this is throwing errors on first attempt - // if(m_previewUtility != null){ - // Handles.SetCamera(this.m_previewUtility.m_Camera); - // Handles.BeginGUI(); - // GUI.DrawTexture(new Rect(40,60,width,height), SpineEditorUtilities.Icons.spine, ScaleMode.StretchToFill); - // Handles.EndGUI(); - // } - tex = this.m_previewUtility.EndStaticPreview(); - return tex; - } -} \ No newline at end of file diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonDataAssetInspector.cs.meta b/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonDataAssetInspector.cs.meta deleted file mode 100644 index fba64b6e3..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonDataAssetInspector.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 01cbef8f24d105f4bafa9668d669e040 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonRendererInspector.cs b/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonRendererInspector.cs deleted file mode 100644 index c8410749a..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonRendererInspector.cs +++ /dev/null @@ -1,105 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -using System; -using UnityEditor; -using UnityEngine; - -[CustomEditor(typeof(SkeletonRenderer))] -public class SkeletonRendererInspector : Editor { - protected SerializedProperty skeletonDataAsset, initialSkinName, normals, tangents, meshes, immutableTriangles; - - protected virtual void OnEnable () { - skeletonDataAsset = serializedObject.FindProperty("skeletonDataAsset"); - initialSkinName = serializedObject.FindProperty("initialSkinName"); - normals = serializedObject.FindProperty("calculateNormals"); - tangents = serializedObject.FindProperty("calculateTangents"); - meshes = serializedObject.FindProperty("renderMeshes"); - immutableTriangles = serializedObject.FindProperty("immutableTriangles"); - } - - protected virtual void gui () { - SkeletonRenderer component = (SkeletonRenderer)target; - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.PropertyField(skeletonDataAsset); - float reloadWidth = GUI.skin.label.CalcSize(new GUIContent("Reload")).x + 20; - if (GUILayout.Button("Reload", GUILayout.Width(reloadWidth))) { - if (component.skeletonDataAsset != null) { - component.skeletonDataAsset.Reset(); - } - component.Reset(); - } - EditorGUILayout.EndHorizontal(); - - if (!component.valid) { - component.Reset(); - component.LateUpdate(); - if (!component.valid) return; - } - - - // Initial skin name. - { - String[] skins = new String[component.skeleton.Data.Skins.Count]; - int skinIndex = 0; - for (int i = 0; i < skins.Length; i++) { - String name = component.skeleton.Data.Skins[i].Name; - skins[i] = name; - if (name == initialSkinName.stringValue) - skinIndex = i; - } - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Initial Skin", GUILayout.Width(EditorGUIUtility.labelWidth)); - skinIndex = EditorGUILayout.Popup(skinIndex, skins); - EditorGUILayout.EndHorizontal(); - - initialSkinName.stringValue = skins[skinIndex]; - } - - EditorGUILayout.PropertyField(meshes, - new GUIContent("Render Meshes", "Disable to optimize rendering for skeletons that don't use meshes")); - EditorGUILayout.PropertyField(immutableTriangles, - new GUIContent("Immutable Triangles", "Enable to optimize rendering for skeletons that never change attachment visbility")); - EditorGUILayout.PropertyField(normals); - EditorGUILayout.PropertyField(tangents); - } - - override public void OnInspectorGUI () { - serializedObject.Update(); - gui(); - if (serializedObject.ApplyModifiedProperties() || - (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed") - ) { - if (!Application.isPlaying) ((SkeletonRenderer)target).Reset(); - } - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonRendererInspector.cs.meta b/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonRendererInspector.cs.meta deleted file mode 100644 index 9d775f336..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/SkeletonRendererInspector.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 350bd1e336864e045a8d44c7afe923e8 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/SpineEditorUtilities.cs b/spine-tk2d/Assets/spine-tk2d/Editor/SpineEditorUtilities.cs deleted file mode 100644 index 94102d866..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/SpineEditorUtilities.cs +++ /dev/null @@ -1,376 +0,0 @@ -#pragma warning disable 0219 -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -/***************************************************************************** - * Spine Editor Utilities created by Mitch Thompson - * Full irrevocable rights and permissions granted to Esoteric Software -*****************************************************************************/ -using UnityEngine; -using UnityEditor; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Text; -using Spine; - -[InitializeOnLoad] -public class SpineEditorUtilities : AssetPostprocessor { - - public static class Icons { - public static Texture2D skeleton; - public static Texture2D nullBone; - public static Texture2D bone; - public static Texture2D poseBones; - public static Texture2D boneNib; - public static Texture2D slot; - public static Texture2D skinPlaceholder; - public static Texture2D image; - public static Texture2D boundingBox; - public static Texture2D mesh; - public static Texture2D skin; - public static Texture2D skinsRoot; - public static Texture2D animation; - public static Texture2D animationRoot; - public static Texture2D spine; - public static Texture2D _event; - public static Texture2D constraintNib; - public static Texture2D warning; - public static Texture2D skeletonUtility; - public static Texture2D hingeChain; - public static Texture2D subMeshRenderer; - - public static Mesh boneMesh { - get { - if (_boneMesh == null) { - _boneMesh = new Mesh(); - _boneMesh.vertices = new Vector3[4] { - Vector3.zero, - new Vector3(-0.1f, 0.1f, 0), - Vector3.up, - new Vector3(0.1f, 0.1f, 0) - }; - _boneMesh.uv = new Vector2[4]; - _boneMesh.triangles = new int[6]{0,1,2,2,3,0}; - _boneMesh.RecalculateBounds(); - _boneMesh.RecalculateNormals(); - } - - return _boneMesh; - } - } - - internal static Mesh _boneMesh; - - public static Material boneMaterial { - get { - if (_boneMaterial == null) { -#if UNITY_4_3 - _boneMaterial = new Material(Shader.Find("Particles/Alpha Blended")); - _boneMaterial.SetColor("_TintColor", new Color(0.4f, 0.4f, 0.4f, 0.25f)); -#else - _boneMaterial = new Material(Shader.Find("Spine/Bones")); - _boneMaterial.SetColor("_Color", new Color(0.4f, 0.4f, 0.4f, 0.25f)); -#endif - - } - - return _boneMaterial; - } - } - - internal static Material _boneMaterial; - - public static void Initialize () { - skeleton = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skeleton.png"); - nullBone = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-null.png"); - bone = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-bone.png"); - poseBones = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-poseBones.png"); - boneNib = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-boneNib.png"); - slot = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-slot.png"); - skinPlaceholder = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skinPlaceholder.png"); - image = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-image.png"); - boundingBox = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-boundingBox.png"); - mesh = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-mesh.png"); - skin = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skinPlaceholder.png"); - skinsRoot = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skinsRoot.png"); - animation = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-animation.png"); - animationRoot = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-animationRoot.png"); - spine = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-spine.png"); - _event = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-event.png"); - constraintNib = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-constraintNib.png"); - warning = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-warning.png"); - skeletonUtility = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skeletonUtility.png"); - hingeChain = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-hingeChain.png"); - subMeshRenderer = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-subMeshRenderer.png"); - } - } - - public static string editorPath = ""; - public static string editorGUIPath = ""; - static Dictionary skeletonRendererTable; - static Dictionary skeletonUtilityBoneTable; - public static float defaultScale = 0.01f; - public static float defaultMix = 0.2f; - public static string defaultShader = "Spine/Skeleton"; - - static SpineEditorUtilities () { - DirectoryInfo rootDir = new DirectoryInfo(Application.dataPath); - FileInfo[] files = rootDir.GetFiles("SpineEditorUtilities.cs", SearchOption.AllDirectories); - editorPath = Path.GetDirectoryName(files[0].FullName.Replace("\\", "/").Replace(Application.dataPath, "Assets")); - editorGUIPath = editorPath + "/GUI"; - - Icons.Initialize(); - - skeletonRendererTable = new Dictionary(); - skeletonUtilityBoneTable = new Dictionary(); - - EditorApplication.hierarchyWindowChanged += HierarchyWindowChanged; - EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI; - - HierarchyWindowChanged(); - } - - static void HierarchyWindowChanged () { - skeletonRendererTable.Clear(); - skeletonUtilityBoneTable.Clear(); - - SkeletonRenderer[] arr = Object.FindObjectsOfType(); - - foreach (SkeletonRenderer r in arr) - skeletonRendererTable.Add(r.gameObject.GetInstanceID(), r.gameObject); - - SkeletonUtilityBone[] boneArr = Object.FindObjectsOfType(); - foreach (SkeletonUtilityBone b in boneArr) - skeletonUtilityBoneTable.Add(b.gameObject.GetInstanceID(), b); - } - - static void HierarchyWindowItemOnGUI (int instanceId, Rect selectionRect) { - if (skeletonRendererTable.ContainsKey(instanceId)) { - Rect r = new Rect(selectionRect); - r.x = r.width - 15; - r.width = 15; - - GUI.Label(r, Icons.spine); - } else if (skeletonUtilityBoneTable.ContainsKey(instanceId)) { - Rect r = new Rect(selectionRect); - r.x -= 26; - - if (skeletonUtilityBoneTable[instanceId] != null) { - if (skeletonUtilityBoneTable[instanceId].transform.childCount == 0) - r.x += 13; - - r.y += 2; - - r.width = 13; - r.height = 13; - - if (skeletonUtilityBoneTable[instanceId].mode == SkeletonUtilityBone.Mode.Follow) { - GUI.DrawTexture(r, Icons.bone); - } else { - GUI.DrawTexture(r, Icons.poseBones); - } - } - - } - - } - - [MenuItem("Assets/Spine/Spawn")] - static void SpawnAnimatedSkeleton () { - Object[] arr = Selection.objects; - foreach (Object o in arr) { - string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(o)); - string skinName = EditorPrefs.GetString(guid + "_lastSkin", ""); - - SpawnAnimatedSkeleton((SkeletonDataAsset)o, skinName); - SceneView.RepaintAll(); - } - } - - [MenuItem("Assets/Spine/Spawn", true)] - static bool ValidateSpawnAnimatedSkeleton () { - Object[] arr = Selection.objects; - - if (arr.Length == 0) - return false; - - foreach (Object o in arr) { - if (o.GetType() != typeof(SkeletonDataAsset)) - return false; - } - - return true; - } - - public static SkeletonAnimation SpawnAnimatedSkeleton (SkeletonDataAsset skeletonDataAsset, string skinName) { - SkeletonData skelData = skeletonDataAsset.GetSkeletonData(false); - if(skelData == null){ - return null; - } - return SpawnAnimatedSkeleton(skeletonDataAsset, skelData.FindSkin(skinName)); - } - - public static SkeletonAnimation SpawnAnimatedSkeleton (SkeletonDataAsset skeletonDataAsset, Skin skin = null) { - GameObject go = new GameObject(skeletonDataAsset.name.Replace("_SkeletonData", ""), typeof(MeshFilter), typeof(MeshRenderer), typeof(SkeletonAnimation)); - SkeletonAnimation anim = go.GetComponent(); - anim.skeletonDataAsset = skeletonDataAsset; - - - - SkeletonData data = skeletonDataAsset.GetSkeletonData(false); - - if (data == null) { - return null; - } - - if (skin == null) - skin = data.DefaultSkin; - - if (skin == null) - skin = data.Skins[0]; - - anim.Reset(); - - anim.skeleton.SetSkin(skin); - anim.initialSkinName = skin.Name; - - anim.skeleton.Update(1); - anim.state.Update(1); - anim.state.Apply(anim.skeleton); - anim.skeleton.UpdateWorldTransform(); - - return anim; - } - - static bool IsSpineJSON (TextAsset asset) { - object obj = Json.Deserialize(new StringReader(asset.text)); - if (obj == null) { - Debug.LogError("Is not valid JSON"); - return false; - } - - Dictionary root = (Dictionary)obj; - - if (!root.ContainsKey("skeleton")) - return false; - - Dictionary skeletonInfo = (Dictionary)root["skeleton"]; - - string spineVersion = (string)skeletonInfo["spine"]; - //TODO: reject old versions - - return true; - } - - //TK2D helpers - - [MenuItem("Assets/Create/Spine/SkeletonData From Selection", true)] - static bool CreateSkeletonDataFromSelectionValidate(){ - int spineJsonCount = 0; - int collectionCount = 0; - - foreach(Object obj in Selection.objects){ - if(obj is TextAsset){ - TextAsset t = obj as TextAsset; - if(IsSpineJSON(t)) - spineJsonCount++; - } - else if(obj is GameObject){ - GameObject go = obj as GameObject; - var spriteCollection = go.GetComponent(); - if(spriteCollection != null){ - if(spriteCollection.spriteCollection != null){ - collectionCount++; - if(collectionCount > 1){ - Debug.LogWarning("SkeletonData From Selection only works when 1 Collection is selected."); - return false; - } - } - } - } - } - - if(spineJsonCount > 0 && collectionCount == 1){ - return true; - } - - return false; - } - - [MenuItem("Assets/Create/Spine/SkeletonData From Selection")] - static void CreateSkeletonDataFromSelection(){ - - List jsonList = new List(); - tk2dSpriteCollectionData collectionData = null; - - foreach(Object obj in Selection.objects){ - if(obj is TextAsset){ - TextAsset t = obj as TextAsset; - if(IsSpineJSON(t)) - jsonList.Add(t); - } - else if(obj is GameObject){ - GameObject go = obj as GameObject; - var spriteCollection = go.GetComponent(); - if(spriteCollection != null){ - if(spriteCollection.spriteCollection != null){ - collectionData = spriteCollection.spriteCollection; - } - } - } - } - - if(collectionData == null) - return; - - foreach(TextAsset t in jsonList){ - string path = Path.GetDirectoryName(AssetDatabase.GetAssetPath(t)) + "/" + t.name + "_SkeletonData.asset"; - - SkeletonDataAsset skeletonDataAsset = (SkeletonDataAsset)AssetDatabase.LoadAssetAtPath(path, typeof(SkeletonDataAsset)); - if(skeletonDataAsset == null){ - skeletonDataAsset = SkeletonDataAsset.CreateInstance(); - AssetDatabase.CreateAsset(skeletonDataAsset, path); - } - - skeletonDataAsset.skeletonJSON = t; - skeletonDataAsset.spriteCollection = collectionData; - skeletonDataAsset.defaultMix = 0.2f; - skeletonDataAsset.fromAnimation = new string[0]; - skeletonDataAsset.toAnimation = new string[0]; - skeletonDataAsset.duration = new float[0]; - - EditorUtility.SetDirty(skeletonDataAsset); - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - } - - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/SpineEditorUtilities.cs.meta b/spine-tk2d/Assets/spine-tk2d/Editor/SpineEditorUtilities.cs.meta deleted file mode 100644 index 544e47769..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Editor/SpineEditorUtilities.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f834d5cd806ec4645915ac315edbdc60 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/Bones.shader b/spine-tk2d/Assets/spine-tk2d/Shaders/Bones.shader deleted file mode 100644 index 61fc977e5..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/Bones.shader +++ /dev/null @@ -1,69 +0,0 @@ -Shader "Spine/Bones" { -Properties { - _Color ("Color", Color) = (0.5,0.5,0.5,0.5) - _MainTex ("Particle Texture", 2D) = "white" {} -} - -Category { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } - Blend SrcAlpha OneMinusSrcAlpha - AlphaTest Greater .01 - ColorMask RGB - - Lighting Off Cull Off ZTest Always ZWrite Off Fog { Mode Off } - - SubShader { - Pass { - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile_particles - - #include "UnityCG.cginc" - - sampler2D _MainTex; - fixed4 _Color; - - struct appdata_t { - float4 vertex : POSITION; - fixed4 color : COLOR; - float2 texcoord : TEXCOORD0; - }; - - struct v2f { - float4 vertex : SV_POSITION; - fixed4 color : COLOR; - float2 texcoord : TEXCOORD0; - #ifdef SOFTPARTICLES_ON - float4 projPos : TEXCOORD1; - #endif - }; - - float4 _MainTex_ST; - - v2f vert (appdata_t v) - { - v2f o; - o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); - #ifdef SOFTPARTICLES_ON - o.projPos = ComputeScreenPos (o.vertex); - COMPUTE_EYEDEPTH(o.projPos.z); - #endif - o.color = v.color; - o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); - return o; - } - - sampler2D_float _CameraDepthTexture; - - - fixed4 frag (v2f i) : SV_Target - { - return 2.0f * i.color * _Color * tex2D(_MainTex, i.texcoord); - } - ENDCG - } - } -} -} diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/Bones.shader.meta b/spine-tk2d/Assets/spine-tk2d/Shaders/Bones.shader.meta deleted file mode 100644 index d01814ef9..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/Bones.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 66988de88a15abd4e8846c6805485f57 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.mat b/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.mat deleted file mode 100644 index 31cf39d99..000000000 Binary files a/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.mat and /dev/null differ diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.mat.meta b/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.mat.meta deleted file mode 100644 index ef267ef07..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.mat.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 43227e5adadc6f24bb4bf74b92a56fb4 -NativeFormatImporter: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.shader b/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.shader deleted file mode 100644 index 3a0de6756..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.shader +++ /dev/null @@ -1,21 +0,0 @@ -Shader "Spine/HiddenPass" { - SubShader - - { - - Tags {"Queue" = "Geometry-1" } - - Lighting Off - - Pass - - { - - ZWrite Off - - ColorMask 0 - - } - - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.shader.meta b/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.shader.meta deleted file mode 100644 index bcc031d30..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/HiddenPass.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 913475501bf19374c84390868a9d6d3d -ShaderImporter: - defaultTextures: [] - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/Skeleton.shader b/spine-tk2d/Assets/spine-tk2d/Shaders/Skeleton.shader deleted file mode 100644 index 890aea1e3..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/Skeleton.shader +++ /dev/null @@ -1,82 +0,0 @@ -Shader "Spine/Skeleton" { - Properties { - _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 - _MainTex ("Texture to blend", 2D) = "black" {} - } - // 2 texture stage GPUs - SubShader { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } - LOD 100 - - Cull Off - ZWrite Off - Blend One OneMinusSrcAlpha - Lighting Off - - Pass { - ColorMaterial AmbientAndDiffuse - SetTexture [_MainTex] { - Combine texture * primary - } - } - - Pass { - Name "Caster" - Tags { "LightMode"="ShadowCaster" } - Offset 1, 1 - - Fog { Mode Off } - ZWrite On - ZTest LEqual - Cull Off - Lighting Off - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile_shadowcaster - #pragma fragmentoption ARB_precision_hint_fastest - #include "UnityCG.cginc" - struct v2f { - V2F_SHADOW_CASTER; - float2 uv : TEXCOORD1; - }; - - uniform float4 _MainTex_ST; - - v2f vert (appdata_base v) { - v2f o; - TRANSFER_SHADOW_CASTER(o) - o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); - return o; - } - - uniform sampler2D _MainTex; - uniform fixed _Cutoff; - - float4 frag (v2f i) : COLOR { - fixed4 texcol = tex2D(_MainTex, i.uv); - clip(texcol.a - _Cutoff); - SHADOW_CASTER_FRAGMENT(i) - } - ENDCG - } - } - // 1 texture stage GPUs - SubShader { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } - LOD 100 - - Cull Off - ZWrite Off - Blend One OneMinusSrcAlpha - Lighting Off - - Pass { - ColorMaterial AmbientAndDiffuse - SetTexture [_MainTex] { - Combine texture * primary DOUBLE, texture * primary - } - } - } -} \ No newline at end of file diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/Skeleton.shader.meta b/spine-tk2d/Assets/spine-tk2d/Shaders/Skeleton.shader.meta deleted file mode 100644 index 753129e68..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/Skeleton.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 1e8a610c9e01c3648bac42585e5fc676 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/SkeletonLit.shader b/spine-tk2d/Assets/spine-tk2d/Shaders/SkeletonLit.shader deleted file mode 100644 index 7cee739f6..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/SkeletonLit.shader +++ /dev/null @@ -1,84 +0,0 @@ -Shader "Spine/Skeleton Lit" { - Properties { - _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 - _MainTex ("Texture to blend", 2D) = "black" {} - } - // 2 texture stage GPUs - SubShader { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } - LOD 100 - - Cull Off - ZWrite Off - Blend One OneMinusSrcAlpha - - Pass { - Tags { "LightMode"="Vertex" } - ColorMaterial AmbientAndDiffuse - Lighting On - SetTexture [_MainTex] { - Combine texture * primary DOUBLE, texture * primary - } - } - - Pass { - Name "Caster" - Tags { "LightMode"="ShadowCaster" } - Offset 1, 1 - - Fog { Mode Off } - ZWrite On - ZTest LEqual - Cull Off - Lighting Off - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile_shadowcaster - #pragma fragmentoption ARB_precision_hint_fastest - #include "UnityCG.cginc" - struct v2f { - V2F_SHADOW_CASTER; - float2 uv : TEXCOORD1; - }; - - uniform float4 _MainTex_ST; - - v2f vert (appdata_base v) { - v2f o; - TRANSFER_SHADOW_CASTER(o) - o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); - return o; - } - - uniform sampler2D _MainTex; - uniform fixed _Cutoff; - - float4 frag (v2f i) : COLOR { - fixed4 texcol = tex2D(_MainTex, i.uv); - clip(texcol.a - _Cutoff); - SHADOW_CASTER_FRAGMENT(i) - } - ENDCG - } - } - // 1 texture stage GPUs - SubShader { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } - LOD 100 - - Cull Off - ZWrite Off - Blend One OneMinusSrcAlpha - - Pass { - Tags { "LightMode"="Vertex" } - ColorMaterial AmbientAndDiffuse - Lighting On - SetTexture [_MainTex] { - Combine texture * primary DOUBLE, texture * primary - } - } - } -} \ No newline at end of file diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders/SkeletonLit.shader.meta b/spine-tk2d/Assets/spine-tk2d/Shaders/SkeletonLit.shader.meta deleted file mode 100644 index a8444eec9..000000000 --- a/spine-tk2d/Assets/spine-tk2d/Shaders/SkeletonLit.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: bd83c75f51f5e23498ae22ffcdfe92c3 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonAnimation.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonAnimation.cs deleted file mode 100644 index 0c4c9a44f..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonAnimation.cs +++ /dev/null @@ -1,108 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -using System; -using System.IO; -using System.Collections.Generic; -using UnityEngine; -using Spine; - -[ExecuteInEditMode] -[AddComponentMenu("Spine/SkeletonAnimation")] -public class SkeletonAnimation : SkeletonRenderer { - public float timeScale = 1; - public bool loop; - public Spine.AnimationState state; - - public delegate void UpdateBonesDelegate (SkeletonAnimation skeleton); - - public UpdateBonesDelegate UpdateLocal; - public UpdateBonesDelegate UpdateWorld; - public UpdateBonesDelegate UpdateComplete; - [SerializeField] - private String - _animationName; - - public String AnimationName { - get { - TrackEntry entry = state.GetCurrent(0); - return entry == null ? null : entry.Animation.Name; - } - set { - if (_animationName == value) - return; - _animationName = value; - if (value == null || value.Length == 0) - state.ClearTrack(0); - else - state.SetAnimation(0, value, loop); - } - } - - public override void Reset () { - base.Reset(); - if (!valid) - return; - - state = new Spine.AnimationState(skeletonDataAsset.GetAnimationStateData()); - if (_animationName != null && _animationName.Length > 0) { - state.SetAnimation(0, _animationName, loop); - Update(0); - } - } - - public virtual void Update () { - Update(Time.deltaTime); - } - - public virtual void Update (float deltaTime) { - if (!valid) - return; - - deltaTime *= timeScale; - skeleton.Update(deltaTime); - state.Update(deltaTime); - state.Apply(skeleton); - - if (UpdateLocal != null) - UpdateLocal(this); - - skeleton.UpdateWorldTransform(); - - if (UpdateWorld != null) { - UpdateWorld(this); - skeleton.UpdateWorldTransform(); - } - - if (UpdateComplete != null) { - UpdateComplete(this); - } - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonAnimation.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonAnimation.cs.meta deleted file mode 100644 index 4c8681a72..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonAnimation.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 41133952e6d5fe04ca82a24ed4c02990 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonDataAsset.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonDataAsset.cs deleted file mode 100644 index 3e760787e..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonDataAsset.cs +++ /dev/null @@ -1,98 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -using System; -using System.IO; -using System.Collections.Generic; -using UnityEngine; -using Spine; - -public class SkeletonDataAsset : ScriptableObject { - public tk2dSpriteCollectionData spriteCollection; - public TextAsset skeletonJSON; - public float scale = 1; - public String[] fromAnimation; - public String[] toAnimation; - public float[] duration; - public float defaultMix; - private SkeletonData skeletonData; - private AnimationStateData stateData; - - public void Reset () { - skeletonData = null; - stateData = null; - } - - public SkeletonData GetSkeletonData (bool quiet) { - if (spriteCollection == null) { - if (!quiet) - Debug.LogError("SpriteCollection not set for SkeletonData asset: " + name, this); - Reset(); - return null; - } - - if (skeletonJSON == null) { - if (!quiet) - Debug.LogError("Skeleton JSON file not set for SkeletonData asset: " + name, this); - Reset(); - return null; - } - - if (skeletonData != null) - return skeletonData; - - SkeletonJson json = new SkeletonJson(new SpriteCollectionAttachmentLoader(spriteCollection)); - json.Scale = 1.0f / (spriteCollection.invOrthoSize * spriteCollection.halfTargetHeight) * scale; - try { - skeletonData = json.ReadSkeletonData(new StringReader(skeletonJSON.text)); - } catch (Exception ex) { - if (!quiet) - Debug.LogError("Error reading skeleton JSON file for SkeletonData asset: " + name + "\n" + ex.Message + "\n" + ex.StackTrace, this); - return null; - } - - stateData = new AnimationStateData(skeletonData); - stateData.DefaultMix = defaultMix; - for (int i = 0, n = fromAnimation.Length; i < n; i++) { - if (fromAnimation[i].Length == 0 || toAnimation[i].Length == 0) - continue; - stateData.SetMix(fromAnimation[i], toAnimation[i], duration[i]); - } - - return skeletonData; - } - - public AnimationStateData GetAnimationStateData () { - if (stateData != null) - return stateData; - GetSkeletonData(false); - return stateData; - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonDataAsset.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonDataAsset.cs.meta deleted file mode 100644 index 1760b1a58..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonDataAsset.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1bdfe79e336474848808de1467defd7f -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonExtensions.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonExtensions.cs deleted file mode 100644 index a483e47e6..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonExtensions.cs +++ /dev/null @@ -1,108 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -/***************************************************************************** - * Spine Extensions created by Mitch Thompson - * Full irrevocable rights and permissions granted to Esoteric Software -*****************************************************************************/ - -using UnityEngine; -using System.Collections; -using Spine; - -public static class SkeletonExtensions { - - public static void SetColor (this Slot slot, Color color) { - slot.A = color.a; - slot.R = color.r; - slot.G = color.g; - slot.B = color.b; - } - - public static void SetColor (this Slot slot, Color32 color) { - slot.A = color.a / 255f; - slot.R = color.r / 255f; - slot.G = color.g / 255f; - slot.B = color.b / 255f; - } - - public static void SetColor (this RegionAttachment attachment, Color color) { - attachment.A = color.a; - attachment.R = color.r; - attachment.G = color.g; - attachment.B = color.b; - } - - public static void SetColor (this RegionAttachment attachment, Color32 color) { - attachment.A = color.a / 255f; - attachment.R = color.r / 255f; - attachment.G = color.g / 255f; - attachment.B = color.b / 255f; - } - - public static void SetColor (this MeshAttachment attachment, Color color) { - attachment.A = color.a; - attachment.R = color.r; - attachment.G = color.g; - attachment.B = color.b; - } - - public static void SetColor (this MeshAttachment attachment, Color32 color) { - attachment.A = color.a / 255f; - attachment.R = color.r / 255f; - attachment.G = color.g / 255f; - attachment.B = color.b / 255f; - } - - public static void SetColor (this SkinnedMeshAttachment attachment, Color color) { - attachment.A = color.a; - attachment.R = color.r; - attachment.G = color.g; - attachment.B = color.b; - } - - public static void SetColor (this SkinnedMeshAttachment attachment, Color32 color) { - attachment.A = color.a / 255f; - attachment.R = color.r / 255f; - attachment.G = color.g / 255f; - attachment.B = color.b / 255f; - } - - public static void SetPosition (this Bone bone, Vector2 position) { - bone.X = position.x; - bone.Y = position.y; - } - - public static void SetPosition (this Bone bone, Vector3 position) { - bone.X = position.x; - bone.Y = position.y; - } - -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonExtensions.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonExtensions.cs.meta deleted file mode 100644 index 427cdd10a..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonExtensions.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ea85c8f6a91a6ab45881b0dbdaabb7d0 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs deleted file mode 100644 index f20cc4ad9..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs +++ /dev/null @@ -1,423 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -using System; -using System.IO; -using System.Collections.Generic; -using UnityEngine; -using Spine; - -/// Renders a skeleton. -[ExecuteInEditMode, RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))] -public class SkeletonRenderer : MonoBehaviour { - - public delegate void SkeletonRendererDelegate (SkeletonRenderer skeletonRenderer); - - public SkeletonRendererDelegate OnReset; - [System.NonSerialized] - public bool valid; - [System.NonSerialized] - public Skeleton skeleton; - public SkeletonDataAsset skeletonDataAsset; - public String initialSkinName; - public bool calculateNormals, calculateTangents; - public float zSpacing; - public bool renderMeshes = true, immutableTriangles; - public bool logErrors = false; - private MeshFilter meshFilter; - private Mesh mesh, mesh1, mesh2; - private bool useMesh1; - private float[] tempVertices = new float[8]; - private int lastVertexCount; - private Vector3[] vertices; - private Color32[] colors; - private Vector2[] uvs; - private Material[] sharedMaterials = new Material[0]; - private readonly List submeshMaterials = new List(); - private readonly List submeshes = new List(); - - public virtual void Reset () { - if (meshFilter != null) - meshFilter.sharedMesh = null; - if (renderer != null) - renderer.sharedMaterial = null; - mesh1 = null; - mesh2 = null; - lastVertexCount = 0; - vertices = null; - colors = null; - uvs = null; - sharedMaterials = new Material[0]; - submeshMaterials.Clear(); - submeshes.Clear(); - skeleton = null; - - valid = false; - if (!skeletonDataAsset) { - if (logErrors) - Debug.LogError("Missing SkeletonData asset.", this); - - return; - } - SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false); - if (skeletonData == null) - return; - valid = true; - - meshFilter = GetComponent(); - mesh1 = newMesh(); - mesh2 = newMesh(); - vertices = new Vector3[0]; - - skeleton = new Skeleton(skeletonData); - if (initialSkinName != null && initialSkinName.Length > 0 && initialSkinName != "default") - skeleton.SetSkin(initialSkinName); - if (OnReset != null) - OnReset(this); - } - - public void Awake () { - Reset(); - } - - private Mesh newMesh () { - Mesh mesh = new Mesh(); - mesh.name = "Skeleton Mesh"; - mesh.hideFlags = HideFlags.HideAndDontSave; - mesh.MarkDynamic(); - return mesh; - } - - public virtual void LateUpdate () { - if (!valid) - return; - // Count vertices and submesh triangles. - int vertexCount = 0; - int submeshTriangleCount = 0, submeshFirstVertex = 0, submeshStartSlotIndex = 0; - Material lastMaterial = null; - submeshMaterials.Clear(); - List drawOrder = skeleton.DrawOrder; - int drawOrderCount = drawOrder.Count; - bool renderMeshes = this.renderMeshes; - for (int i = 0; i < drawOrderCount; i++) { - Slot slot = drawOrder[i]; - Attachment attachment = slot.attachment; - - object rendererObject; - int attachmentVertexCount, attachmentTriangleCount; - - if (attachment is RegionAttachment) { - rendererObject = ((RegionAttachment)attachment).RendererObject; - attachmentVertexCount = 4; - attachmentTriangleCount = 6; - } else { - if (!renderMeshes) - continue; - if (attachment is MeshAttachment) { - MeshAttachment meshAttachment = (MeshAttachment)attachment; - rendererObject = meshAttachment.RendererObject; - attachmentVertexCount = meshAttachment.vertices.Length >> 1; - attachmentTriangleCount = meshAttachment.triangles.Length; - } else if (attachment is SkinnedMeshAttachment) { - SkinnedMeshAttachment meshAttachment = (SkinnedMeshAttachment)attachment; - rendererObject = meshAttachment.RendererObject; - attachmentVertexCount = meshAttachment.uvs.Length >> 1; - attachmentTriangleCount = meshAttachment.triangles.Length; - } else - continue; - } - - // Populate submesh when material changes. - Material material = (Material)rendererObject; - if ((lastMaterial != material && lastMaterial != null) || slot.Data.name[0] == '*') { - AddSubmesh(lastMaterial, submeshStartSlotIndex, i, submeshTriangleCount, submeshFirstVertex, false); - submeshTriangleCount = 0; - submeshFirstVertex = vertexCount; - submeshStartSlotIndex = i; - } - lastMaterial = material; - - submeshTriangleCount += attachmentTriangleCount; - vertexCount += attachmentVertexCount; - } - AddSubmesh(lastMaterial, submeshStartSlotIndex, drawOrderCount, submeshTriangleCount, submeshFirstVertex, true); - - // Set materials. - if (submeshMaterials.Count == sharedMaterials.Length) - submeshMaterials.CopyTo(sharedMaterials); - else - sharedMaterials = submeshMaterials.ToArray(); - renderer.sharedMaterials = sharedMaterials; - - // Ensure mesh data is the right size. - Vector3[] vertices = this.vertices; - bool newTriangles = vertexCount > vertices.Length; - if (newTriangles) { - // Not enough vertices, increase size. - this.vertices = vertices = new Vector3[vertexCount]; - this.colors = new Color32[vertexCount]; - this.uvs = new Vector2[vertexCount]; - mesh1.Clear(); - mesh2.Clear(); - } else { - // Too many vertices, zero the extra. - Vector3 zero = Vector3.zero; - for (int i = vertexCount, n = lastVertexCount; i < n; i++) - vertices[i] = zero; - } - lastVertexCount = vertexCount; - - // Setup mesh. - float[] tempVertices = this.tempVertices; - Vector2[] uvs = this.uvs; - Color32[] colors = this.colors; - int vertexIndex = 0; - Color32 color = new Color32(); - float zSpacing = this.zSpacing; - float a = skeleton.a * 255, r = skeleton.r, g = skeleton.g, b = skeleton.b; - for (int i = 0; i < drawOrderCount; i++) { - Slot slot = drawOrder[i]; - Attachment attachment = slot.attachment; - if (attachment is RegionAttachment) { - RegionAttachment regionAttachment = (RegionAttachment)attachment; - regionAttachment.ComputeWorldVertices(slot.bone, tempVertices); - - float z = i * zSpacing; - vertices[vertexIndex] = new Vector3(tempVertices[RegionAttachment.X1], tempVertices[RegionAttachment.Y1], z); - vertices[vertexIndex + 1] = new Vector3(tempVertices[RegionAttachment.X4], tempVertices[RegionAttachment.Y4], z); - vertices[vertexIndex + 2] = new Vector3(tempVertices[RegionAttachment.X2], tempVertices[RegionAttachment.Y2], z); - vertices[vertexIndex + 3] = new Vector3(tempVertices[RegionAttachment.X3], tempVertices[RegionAttachment.Y3], z); - - color.a = (byte)(a * slot.a * regionAttachment.a); - color.r = (byte)(r * slot.r * regionAttachment.r * color.a); - color.g = (byte)(g * slot.g * regionAttachment.g * color.a); - color.b = (byte)(b * slot.b * regionAttachment.b * color.a); - if (slot.data.additiveBlending) - color.a = 0; - colors[vertexIndex] = color; - colors[vertexIndex + 1] = color; - colors[vertexIndex + 2] = color; - colors[vertexIndex + 3] = color; - - float[] regionUVs = regionAttachment.uvs; - uvs[vertexIndex] = new Vector2(regionUVs[RegionAttachment.X1], regionUVs[RegionAttachment.Y1]); - uvs[vertexIndex + 1] = new Vector2(regionUVs[RegionAttachment.X4], regionUVs[RegionAttachment.Y4]); - uvs[vertexIndex + 2] = new Vector2(regionUVs[RegionAttachment.X2], regionUVs[RegionAttachment.Y2]); - uvs[vertexIndex + 3] = new Vector2(regionUVs[RegionAttachment.X3], regionUVs[RegionAttachment.Y3]); - - vertexIndex += 4; - } else { - if (!renderMeshes) - continue; - if (attachment is MeshAttachment) { - MeshAttachment meshAttachment = (MeshAttachment)attachment; - int meshVertexCount = meshAttachment.vertices.Length; - if (tempVertices.Length < meshVertexCount) - this.tempVertices = tempVertices = new float[meshVertexCount]; - meshAttachment.ComputeWorldVertices(slot, tempVertices); - - color.a = (byte)(a * slot.a * meshAttachment.a); - color.r = (byte)(r * slot.r * meshAttachment.r * color.a); - color.g = (byte)(g * slot.g * meshAttachment.g * color.a); - color.b = (byte)(b * slot.b * meshAttachment.b * color.a); - if (slot.data.additiveBlending) - color.a = 0; - - float[] meshUVs = meshAttachment.uvs; - float z = i * zSpacing; - for (int ii = 0; ii < meshVertexCount; ii += 2, vertexIndex++) { - vertices[vertexIndex] = new Vector3(tempVertices[ii], tempVertices[ii + 1], z); - colors[vertexIndex] = color; - uvs[vertexIndex] = new Vector2(meshUVs[ii], meshUVs[ii + 1]); - } - } else if (attachment is SkinnedMeshAttachment) { - SkinnedMeshAttachment meshAttachment = (SkinnedMeshAttachment)attachment; - int meshVertexCount = meshAttachment.uvs.Length; - if (tempVertices.Length < meshVertexCount) - this.tempVertices = tempVertices = new float[meshVertexCount]; - meshAttachment.ComputeWorldVertices(slot, tempVertices); - - color.a = (byte)(a * slot.a * meshAttachment.a); - color.r = (byte)(r * slot.r * meshAttachment.r * color.a); - color.g = (byte)(g * slot.g * meshAttachment.g * color.a); - color.b = (byte)(b * slot.b * meshAttachment.b * color.a); - if (slot.data.additiveBlending) - color.a = 0; - - float[] meshUVs = meshAttachment.uvs; - float z = i * zSpacing; - for (int ii = 0; ii < meshVertexCount; ii += 2, vertexIndex++) { - vertices[vertexIndex] = new Vector3(tempVertices[ii], tempVertices[ii + 1], z); - colors[vertexIndex] = color; - uvs[vertexIndex] = new Vector2(meshUVs[ii], meshUVs[ii + 1]); - } - } - } - } - - // Double buffer mesh. - Mesh mesh = useMesh1 ? mesh1 : mesh2; - meshFilter.sharedMesh = mesh; - - mesh.vertices = vertices; - mesh.colors32 = colors; - mesh.uv = uvs; - - int submeshCount = submeshMaterials.Count; - mesh.subMeshCount = submeshCount; - for (int i = 0; i < submeshCount; ++i) - mesh.SetTriangles(submeshes[i].triangles, i); - mesh.RecalculateBounds(); - - if (newTriangles && calculateNormals) { - Vector3[] normals = new Vector3[vertexCount]; - Vector3 normal = new Vector3(0, 0, -1); - for (int i = 0; i < vertexCount; i++) - normals[i] = normal; - (useMesh1 ? mesh2 : mesh1).vertices = vertices; // Set other mesh vertices. - mesh1.normals = normals; - mesh2.normals = normals; - - if (calculateTangents) { - Vector4[] tangents = new Vector4[vertexCount]; - Vector3 tangent = new Vector3(0, 0, 1); - for (int i = 0; i < vertexCount; i++) - tangents[i] = tangent; - mesh1.tangents = tangents; - mesh2.tangents = tangents; - } - } - - useMesh1 = !useMesh1; - } - - /** Stores vertices and triangles for a single material. */ - private void AddSubmesh (Material material, int startSlot, int endSlot, int triangleCount, int firstVertex, bool lastSubmesh) { - int submeshIndex = submeshMaterials.Count; - submeshMaterials.Add(material); - - if (submeshes.Count <= submeshIndex) - submeshes.Add(new Submesh()); - else if (immutableTriangles) - return; - - Submesh submesh = submeshes[submeshIndex]; - - int[] triangles = submesh.triangles; - int trianglesCapacity = triangles.Length; - if (lastSubmesh && trianglesCapacity > triangleCount) { - // Last submesh may have more triangles than required, so zero triangles to the end. - for (int i = triangleCount; i < trianglesCapacity; i++) - triangles[i] = 0; - submesh.triangleCount = triangleCount; - } else if (trianglesCapacity != triangleCount) { - // Reallocate triangles when not the exact size needed. - submesh.triangles = triangles = new int[triangleCount]; - submesh.triangleCount = 0; - } - - if (!renderMeshes) { - // Use stored triangles if possible. - if (submesh.firstVertex != firstVertex || submesh.triangleCount < triangleCount) { - submesh.triangleCount = triangleCount; - submesh.firstVertex = firstVertex; - for (int i = 0; i < triangleCount; i += 6, firstVertex += 4) { - triangles[i] = firstVertex; - triangles[i + 1] = firstVertex + 2; - triangles[i + 2] = firstVertex + 1; - triangles[i + 3] = firstVertex + 2; - triangles[i + 4] = firstVertex + 3; - triangles[i + 5] = firstVertex + 1; - } - } - return; - } - - // Store triangles. - List drawOrder = skeleton.DrawOrder; - for (int i = startSlot, triangleIndex = 0; i < endSlot; i++) { - Attachment attachment = drawOrder[i].attachment; - if (attachment is RegionAttachment) { - triangles[triangleIndex] = firstVertex; - triangles[triangleIndex + 1] = firstVertex + 2; - triangles[triangleIndex + 2] = firstVertex + 1; - triangles[triangleIndex + 3] = firstVertex + 2; - triangles[triangleIndex + 4] = firstVertex + 3; - triangles[triangleIndex + 5] = firstVertex + 1; - triangleIndex += 6; - firstVertex += 4; - continue; - } - int[] attachmentTriangles; - int attachmentVertexCount; - if (attachment is MeshAttachment) { - MeshAttachment meshAttachment = (MeshAttachment)attachment; - attachmentVertexCount = meshAttachment.vertices.Length >> 1; - attachmentTriangles = meshAttachment.triangles; - } else if (attachment is SkinnedMeshAttachment) { - SkinnedMeshAttachment meshAttachment = (SkinnedMeshAttachment)attachment; - attachmentVertexCount = meshAttachment.uvs.Length >> 1; - attachmentTriangles = meshAttachment.triangles; - } else - continue; - for (int ii = 0, nn = attachmentTriangles.Length; ii < nn; ii++, triangleIndex++) - triangles[triangleIndex] = firstVertex + attachmentTriangles[ii]; - firstVertex += attachmentVertexCount; - } - } - -#if UNITY_EDITOR - void OnDrawGizmos() { - // Make selection easier by drawing a clear gizmo over the skeleton. - if (vertices == null) return; - Vector3 gizmosCenter = new Vector3(); - Vector3 gizmosSize = new Vector3(); - Vector3 min = new Vector3(float.MaxValue, float.MaxValue, 0f); - Vector3 max = new Vector3(float.MinValue, float.MinValue, 0f); - foreach (Vector3 vert in vertices) { - min = Vector3.Min(min, vert); - max = Vector3.Max(max, vert); - } - float width = max.x - min.x; - float height = max.y - min.y; - gizmosCenter = new Vector3(min.x + (width / 2f), min.y + (height / 2f), 0f); - gizmosSize = new Vector3(width, height, 1f); - Gizmos.color = Color.clear; - Gizmos.matrix = transform.localToWorldMatrix; - Gizmos.DrawCube(gizmosCenter, gizmosSize); - } -#endif -} - -class Submesh { - public int[] triangles = new int[0]; - public int triangleCount; - public int firstVertex = -1; -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs.meta deleted file mode 100644 index 1bc275571..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0f77b79230dc4c246a1194a03578bb4e -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility.meta deleted file mode 100644 index d690c94de..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: f6e0caaafe294de48af468a6a9321473 -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor.meta deleted file mode 100644 index 386e1e90b..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: a751a9d1e3e26d64d997b66a781df8e9 -folderAsset: yes -DefaultImporter: - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs deleted file mode 100644 index a6950aa84..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs +++ /dev/null @@ -1,304 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -/***************************************************************************** - * Skeleton Utility created by Mitch Thompson - * Full irrevocable rights and permissions granted to Esoteric Software -*****************************************************************************/ -using UnityEngine; -using UnityEditor; -using System.Collections; -using System.Collections.Generic; -using Spine; - -[CustomEditor(typeof(SkeletonUtilityBone)), CanEditMultipleObjects] -public class SkeletonUtilityBoneInspector : Editor { - SerializedProperty mode, boneName, zPosition, position, rotation, scale, overrideAlpha, parentReference, flip, flipX; - - //multi selected flags - bool containsFollows, containsOverrides, multiObject; - - //single selected helpers - SkeletonUtilityBone utilityBone; - SkeletonUtility skeletonUtility; - bool canCreateHingeChain = false; - - void OnEnable () { - mode = this.serializedObject.FindProperty("mode"); - boneName = this.serializedObject.FindProperty("boneName"); - zPosition = this.serializedObject.FindProperty("zPosition"); - position = this.serializedObject.FindProperty("position"); - rotation = this.serializedObject.FindProperty("rotation"); - scale = this.serializedObject.FindProperty("scale"); - overrideAlpha = this.serializedObject.FindProperty("overrideAlpha"); - parentReference = this.serializedObject.FindProperty("parentReference"); - flip = this.serializedObject.FindProperty("flip"); - flipX = this.serializedObject.FindProperty("flipX"); - - EvaluateFlags(); - - if (utilityBone.valid == false && skeletonUtility != null && skeletonUtility.skeletonRenderer != null) { - skeletonUtility.skeletonRenderer.Reset(); - } - - canCreateHingeChain = CanCreateHingeChain(); - } - - void EvaluateFlags () { - utilityBone = (SkeletonUtilityBone)target; - skeletonUtility = utilityBone.skeletonUtility; - - if (Selection.objects.Length == 1) { - containsFollows = utilityBone.mode == SkeletonUtilityBone.Mode.Follow; - containsOverrides = utilityBone.mode == SkeletonUtilityBone.Mode.Override; - } else { - int boneCount = 0; - foreach (Object o in Selection.objects) { - if (o is GameObject) { - GameObject go = (GameObject)o; - SkeletonUtilityBone sub = go.GetComponent(); - if (sub != null) { - boneCount++; - if (sub.mode == SkeletonUtilityBone.Mode.Follow) - containsFollows = true; - if (sub.mode == SkeletonUtilityBone.Mode.Override) - containsOverrides = true; - } - } - } - - if (boneCount > 1) - multiObject = true; - } - } - - public override void OnInspectorGUI () { - serializedObject.Update(); - - EditorGUI.BeginChangeCheck(); - EditorGUILayout.PropertyField(mode); - if (EditorGUI.EndChangeCheck()) { - containsOverrides = mode.enumValueIndex == 1; - containsFollows = mode.enumValueIndex == 0; - } - - EditorGUI.BeginDisabledGroup(multiObject); - { - string str = boneName.stringValue; - if (str == "") - str = ""; - if (multiObject) - str = ""; - - GUILayout.BeginHorizontal(); - EditorGUILayout.PrefixLabel("Bone"); - - if (GUILayout.Button(str, EditorStyles.popup)) { - BoneSelectorContextMenu(str, ((SkeletonUtilityBone)target).skeletonUtility.skeletonRenderer.skeleton.Bones, "", TargetBoneSelected); - } - - GUILayout.EndHorizontal(); - } - EditorGUI.EndDisabledGroup(); - - EditorGUILayout.PropertyField(zPosition); - EditorGUILayout.PropertyField(position); - EditorGUILayout.PropertyField(rotation); - EditorGUILayout.PropertyField(scale); - EditorGUILayout.PropertyField(flip); - - EditorGUI.BeginDisabledGroup(containsFollows); - { - EditorGUILayout.PropertyField(overrideAlpha); - EditorGUILayout.PropertyField(parentReference); - - EditorGUI.BeginDisabledGroup(multiObject || !flip.boolValue); - { - EditorGUI.BeginChangeCheck(); - EditorGUILayout.PropertyField(flipX); - if (EditorGUI.EndChangeCheck()) { - FlipX(flipX.boolValue); - } - } - EditorGUI.EndDisabledGroup(); - - } - EditorGUI.EndDisabledGroup(); - - EditorGUILayout.Space(); - - GUILayout.BeginHorizontal(); - { - EditorGUI.BeginDisabledGroup(multiObject || !utilityBone.valid || utilityBone.bone == null || utilityBone.bone.Children.Count == 0); - { - if (GUILayout.Button(new GUIContent("Add Child", SpineEditorUtilities.Icons.bone), GUILayout.Width(150), GUILayout.Height(24))) - BoneSelectorContextMenu("", utilityBone.bone.Children, "", SpawnChildBoneSelected); - } - EditorGUI.EndDisabledGroup(); - - EditorGUI.BeginDisabledGroup(multiObject || !utilityBone.valid || utilityBone.bone == null || containsOverrides); - { - if (GUILayout.Button(new GUIContent("Add Override", SpineEditorUtilities.Icons.poseBones), GUILayout.Width(150), GUILayout.Height(24))) - SpawnOverride(); - } - EditorGUI.EndDisabledGroup(); - - EditorGUI.BeginDisabledGroup(multiObject || !utilityBone.valid || !canCreateHingeChain); - { - if (GUILayout.Button(new GUIContent("Create Hinge Chain", SpineEditorUtilities.Icons.hingeChain), GUILayout.Width(150), GUILayout.Height(24))) - CreateHingeChain(); - } - EditorGUI.EndDisabledGroup(); - - } - GUILayout.EndHorizontal(); - - serializedObject.ApplyModifiedProperties(); - } - - void FlipX (bool state) { - utilityBone.FlipX(state); - if (Application.isPlaying == false) { - skeletonUtility.skeletonAnimation.LateUpdate(); - } - } - - void BoneSelectorContextMenu (string current, List bones, string topValue, GenericMenu.MenuFunction2 callback) { - GenericMenu menu = new GenericMenu(); - - if (topValue != "") - menu.AddItem(new GUIContent(topValue), current == topValue, callback, null); - - for (int i = 0; i < bones.Count; i++) { - menu.AddItem(new GUIContent(bones[i].Data.Name), bones[i].Data.Name == current, callback, bones[i]); - } - - menu.ShowAsContext(); - - } - - void TargetBoneSelected (object obj) { - if (obj == null) { - boneName.stringValue = ""; - serializedObject.ApplyModifiedProperties(); - } else { - Bone bone = (Bone)obj; - boneName.stringValue = bone.Data.Name; - serializedObject.ApplyModifiedProperties(); - - utilityBone.Reset(); - } - } - - void SpawnChildBoneSelected (object obj) { - if (obj == null) { - //add recursively - foreach (var bone in utilityBone.bone.Children) { - GameObject go = skeletonUtility.SpawnBoneRecursively(bone, utilityBone.transform, utilityBone.mode, utilityBone.position, utilityBone.rotation, utilityBone.scale); - SkeletonUtilityBone[] newUtilityBones = go.GetComponentsInChildren(); - foreach (SkeletonUtilityBone utilBone in newUtilityBones) - SkeletonUtilityInspector.AttachIcon(utilBone); - } - } else { - Bone bone = (Bone)obj; - GameObject go = skeletonUtility.SpawnBone(bone, utilityBone.transform, utilityBone.mode, utilityBone.position, utilityBone.rotation, utilityBone.scale); - SkeletonUtilityInspector.AttachIcon(go.GetComponent()); - Selection.activeGameObject = go; - EditorGUIUtility.PingObject(go); - } - } - - void SpawnOverride () { - GameObject go = skeletonUtility.SpawnBone(utilityBone.bone, utilityBone.transform.parent, SkeletonUtilityBone.Mode.Override, utilityBone.position, utilityBone.rotation, utilityBone.scale); - go.name = go.name + " [Override]"; - SkeletonUtilityInspector.AttachIcon(go.GetComponent()); - Selection.activeGameObject = go; - EditorGUIUtility.PingObject(go); - } - - bool CanCreateHingeChain () { - if (utilityBone == null) - return false; - if (utilityBone.rigidbody != null) - return false; - if (utilityBone.bone != null && utilityBone.bone.Children.Count == 0) - return false; - - Rigidbody[] rigidbodies = utilityBone.GetComponentsInChildren(); - - if (rigidbodies.Length > 0) - return false; - - return true; - } - - void CreateHingeChain () { - var utilBoneArr = utilityBone.GetComponentsInChildren(); - - foreach (var utilBone in utilBoneArr) { - AttachRigidbody(utilBone); - } - - utilityBone.rigidbody.isKinematic = true; - - foreach (var utilBone in utilBoneArr) { - if (utilBone == utilityBone) - continue; - - utilBone.mode = SkeletonUtilityBone.Mode.Override; - - HingeJoint joint = utilBone.gameObject.AddComponent(); - joint.axis = Vector3.forward; - joint.connectedBody = utilBone.transform.parent.rigidbody; - joint.useLimits = true; - JointLimits limits = new JointLimits(); - limits.min = -20; - limits.max = 20; - joint.limits = limits; - utilBone.rigidbody.mass = utilBone.transform.parent.rigidbody.mass * 0.75f; - } - } - - void AttachRigidbody (SkeletonUtilityBone utilBone) { - if (utilBone.GetComponent() == null) { - if (utilBone.bone.Data.Length == 0) { - SphereCollider sphere = utilBone.gameObject.AddComponent(); - sphere.radius = 0.1f; - } else { - float length = utilBone.bone.Data.Length; - BoxCollider box = utilBone.gameObject.AddComponent(); - box.size = new Vector3(length, length / 3, 0.2f); - box.center = new Vector3(length / 2, 0, 0); - } - } - - utilBone.gameObject.AddComponent(); - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs.meta deleted file mode 100644 index 340d6e2eb..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b3ae20b4bcc31f645afd6f5b64f82473 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityInspector.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityInspector.cs deleted file mode 100644 index 4c6d02d09..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityInspector.cs +++ /dev/null @@ -1,311 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -/***************************************************************************** - * Skeleton Utility created by Mitch Thompson - * Full irrevocable rights and permissions granted to Esoteric Software -*****************************************************************************/ -using UnityEngine; -using UnityEditor; - -#if UNITY_4_3 -//nothing -#else -using UnityEditor.AnimatedValues; -#endif -using System.Collections; -using System.Collections.Generic; -using Spine; - -using System.Reflection; - -[CustomEditor(typeof(SkeletonUtility))] -public class SkeletonUtilityInspector : Editor { - - public static void AttachIcon (SkeletonUtilityBone utilityBone) { - Skeleton skeleton = utilityBone.skeletonUtility.skeletonRenderer.skeleton; - Texture2D icon; - if (utilityBone.bone.Data.Length == 0) - icon = SpineEditorUtilities.Icons.nullBone; - else - icon = SpineEditorUtilities.Icons.boneNib; - - foreach (IkConstraint c in skeleton.IkConstraints) { - if (c.Target == utilityBone.bone) { - icon = SpineEditorUtilities.Icons.constraintNib; - break; - } - } - - - - typeof(EditorGUIUtility).InvokeMember("SetIconForObject", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.NonPublic, null, null, new object[2] { - utilityBone.gameObject, - icon - }); - } - - static void AttachIconsToChildren (Transform root) { - if (root != null) { - var utilityBones = root.GetComponentsInChildren(); - foreach (var utilBone in utilityBones) { - AttachIcon(utilBone); - } - } - } - - static SkeletonUtilityInspector () { - #if UNITY_4_3 - showSlots = false; - #else - showSlots = new AnimBool(false); - #endif - } - - SkeletonUtility skeletonUtility; - Skeleton skeleton; - SkeletonRenderer skeletonRenderer; - Transform transform; - bool isPrefab; - Dictionary> attachmentTable = new Dictionary>(); - - - //GUI stuff -#if UNITY_4_3 - static bool showSlots; -#else - static AnimBool showSlots; -#endif - - void OnEnable () { - skeletonUtility = (SkeletonUtility)target; - skeletonRenderer = skeletonUtility.GetComponent(); - skeleton = skeletonRenderer.skeleton; - transform = skeletonRenderer.transform; - - if (skeleton == null) { - skeletonRenderer.Reset(); - skeletonRenderer.LateUpdate(); - - skeleton = skeletonRenderer.skeleton; - } - - UpdateAttachments(); - - if (PrefabUtility.GetPrefabType(this.target) == PrefabType.Prefab) - isPrefab = true; - - } - - void OnDestroy () { - - } - - void OnSceneGUI () { - if (skeleton == null) { - OnEnable(); - return; - } - - float flipRotation = skeleton.FlipX ? -1 : 1; - - foreach (Bone b in skeleton.Bones) { - Vector3 vec = transform.TransformPoint(new Vector3(b.WorldX, b.WorldY, 0)); - - Quaternion rot = Quaternion.Euler(0, 0, b.WorldRotation * flipRotation); - Vector3 forward = transform.TransformDirection(rot * Vector3.right); - forward *= flipRotation; - - SpineEditorUtilities.Icons.boneMaterial.SetPass(0); - Graphics.DrawMeshNow(SpineEditorUtilities.Icons.boneMesh, Matrix4x4.TRS(vec, Quaternion.LookRotation(transform.forward, forward), Vector3.one * b.Data.Length * b.WorldScaleX)); - } - } - - void UpdateAttachments () { - attachmentTable = new Dictionary>(); - Skin skin = skeleton.Skin; - - if (skin == null) { - skin = skeletonRenderer.skeletonDataAsset.GetSkeletonData(true).DefaultSkin; - } - - for (int i = skeleton.Slots.Count-1; i >= 0; i--) { - List attachments = new List(); - skin.FindAttachmentsForSlot(i, attachments); - - attachmentTable.Add(skeleton.Slots[i], attachments); - } - } - - void SpawnHierarchyButton (string label, string tooltip, SkeletonUtilityBone.Mode mode, bool pos, bool rot, bool sca, params GUILayoutOption[] options) { - GUIContent content = new GUIContent(label, tooltip); - if (GUILayout.Button(content, options)) { - if (skeletonUtility.skeletonRenderer == null) - skeletonUtility.skeletonRenderer = skeletonUtility.GetComponent(); - - if (skeletonUtility.boneRoot != null) { - return; - } - - skeletonUtility.SpawnHierarchy(mode, pos, rot, sca); - - SkeletonUtilityBone[] boneComps = skeletonUtility.GetComponentsInChildren(); - foreach (SkeletonUtilityBone b in boneComps) - AttachIcon(b); - } - } - - public override void OnInspectorGUI () { - if (isPrefab) { - GUILayout.Label(new GUIContent("Cannot edit Prefabs", SpineEditorUtilities.Icons.warning)); - return; - } - - skeletonUtility.boneRoot = (Transform)EditorGUILayout.ObjectField("Bone Root", skeletonUtility.boneRoot, typeof(Transform), true); - - GUILayout.BeginHorizontal(); - EditorGUI.BeginDisabledGroup(skeletonUtility.boneRoot != null); - { - if (GUILayout.Button(new GUIContent("Spawn Hierarchy", SpineEditorUtilities.Icons.skeleton), GUILayout.Width(150), GUILayout.Height(24))) - SpawnHierarchyContextMenu(); - } - EditorGUI.EndDisabledGroup(); - - if (GUILayout.Button(new GUIContent("Spawn Submeshes", SpineEditorUtilities.Icons.subMeshRenderer), GUILayout.Width(150), GUILayout.Height(24))) - skeletonUtility.SpawnSubRenderers(true); - GUILayout.EndHorizontal(); - - EditorGUI.BeginChangeCheck(); - skeleton.FlipX = EditorGUILayout.ToggleLeft("Flip X", skeleton.FlipX); - skeleton.FlipY = EditorGUILayout.ToggleLeft("Flip Y", skeleton.FlipY); - if (EditorGUI.EndChangeCheck()) { - skeletonRenderer.LateUpdate(); - SceneView.RepaintAll(); - } - -#if UNITY_4_3 - showSlots = EditorGUILayout.Foldout(showSlots, "Slots"); -#else - showSlots.target = EditorGUILayout.Foldout(showSlots.target, "Slots"); - if (EditorGUILayout.BeginFadeGroup(showSlots.faded)) { -#endif - foreach (KeyValuePair> pair in attachmentTable) { - - Slot slot = pair.Key; - - EditorGUILayout.BeginHorizontal(); - EditorGUI.indentLevel = 1; - EditorGUILayout.LabelField(new GUIContent(slot.Data.Name, SpineEditorUtilities.Icons.slot), GUILayout.ExpandWidth(false)); - - EditorGUI.BeginChangeCheck(); - Color c = EditorGUILayout.ColorField(new Color(slot.R, slot.G, slot.B, slot.A), GUILayout.Width(60)); - - if (EditorGUI.EndChangeCheck()) { - slot.SetColor(c); - skeletonRenderer.LateUpdate(); - } - - EditorGUILayout.EndHorizontal(); - - - - foreach (Attachment attachment in pair.Value) { - - if (slot.Attachment == attachment) { - GUI.contentColor = Color.white; - } else { - GUI.contentColor = Color.grey; - } - - EditorGUI.indentLevel = 2; - bool isAttached = attachment == slot.Attachment; - - Texture2D icon = null; - - if (attachment is MeshAttachment || attachment is SkinnedMeshAttachment) - icon = SpineEditorUtilities.Icons.mesh; - else - icon = SpineEditorUtilities.Icons.image; - - bool swap = EditorGUILayout.ToggleLeft(new GUIContent(attachment.Name, icon), attachment == slot.Attachment); - - if (!isAttached && swap) { - slot.Attachment = attachment; - skeletonRenderer.LateUpdate(); - } else if (isAttached && !swap) { - slot.Attachment = null; - skeletonRenderer.LateUpdate(); - } - - GUI.contentColor = Color.white; - } - } - #if UNITY_4_3 - -#else - } - EditorGUILayout.EndFadeGroup(); - if (showSlots.isAnimating) - Repaint(); -#endif - } - - void SpawnHierarchyContextMenu () { - GenericMenu menu = new GenericMenu(); - - menu.AddItem(new GUIContent("Follow"), false, SpawnFollowHierarchy); - menu.AddItem(new GUIContent("Follow (Root Only)"), false, SpawnFollowHierarchyRootOnly); - menu.AddSeparator(""); - menu.AddItem(new GUIContent("Override"), false, SpawnOverrideHierarchy); - menu.AddItem(new GUIContent("Override (Root Only)"), false, SpawnOverrideHierarchyRootOnly); - - menu.ShowAsContext(); - } - - void SpawnFollowHierarchy () { - Selection.activeGameObject = skeletonUtility.SpawnHierarchy(SkeletonUtilityBone.Mode.Follow, true, true, true); - AttachIconsToChildren(skeletonUtility.boneRoot); - } - - void SpawnFollowHierarchyRootOnly () { - Selection.activeGameObject = skeletonUtility.SpawnRoot(SkeletonUtilityBone.Mode.Follow, true, true, true); - AttachIconsToChildren(skeletonUtility.boneRoot); - } - - void SpawnOverrideHierarchy () { - Selection.activeGameObject = skeletonUtility.SpawnHierarchy(SkeletonUtilityBone.Mode.Override, true, true, true); - AttachIconsToChildren(skeletonUtility.boneRoot); - } - - void SpawnOverrideHierarchyRootOnly () { - Selection.activeGameObject = skeletonUtility.SpawnRoot(SkeletonUtilityBone.Mode.Override, true, true, true); - AttachIconsToChildren(skeletonUtility.boneRoot); - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityInspector.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityInspector.cs.meta deleted file mode 100644 index 7820cbd6d..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/Editor/SkeletonUtilityInspector.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a5b90df955eb8c2429ac67c8b2de6c5c -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtility.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtility.cs deleted file mode 100644 index c274c3db6..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtility.cs +++ /dev/null @@ -1,346 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -/***************************************************************************** - * Skeleton Utility created by Mitch Thompson - * Full irrevocable rights and permissions granted to Esoteric Software -*****************************************************************************/ - -using UnityEngine; -using System.Collections; -using System.Collections.Generic; -using Spine; - -[RequireComponent(typeof(SkeletonAnimation))] -[ExecuteInEditMode] -public class SkeletonUtility : MonoBehaviour { - - public static T GetInParent (Transform origin) where T : Component { -#if UNITY_4_3 - Transform parent = origin.parent; - while(parent.GetComponent() == null){ - parent = parent.parent; - if(parent == null) - return default(T); - } - - return parent.GetComponent(); -#else - return origin.GetComponentInParent(); -#endif - } - - - public delegate void SkeletonUtilityDelegate (); - - public event SkeletonUtilityDelegate OnReset; - - public Transform boneRoot; - - void Update () { - if (boneRoot != null && skeletonRenderer.skeleton != null) { - Vector3 flipScale = Vector3.one; - if (skeletonRenderer.skeleton.FlipX) - flipScale.x = -1; - - if (skeletonRenderer.skeleton.FlipY) - flipScale.y = -1; - - boneRoot.localScale = flipScale; - } - } - - [HideInInspector] - public SkeletonRenderer skeletonRenderer; - [HideInInspector] - public SkeletonAnimation skeletonAnimation; - [System.NonSerialized] - public List utilityBones = new List(); - [System.NonSerialized] - public List utilityConstraints = new List(); -// Dictionary utilityBoneTable; - - protected bool hasTransformBones; - protected bool hasUtilityConstraints; - protected bool needToReprocessBones; - - void OnEnable () { - if (skeletonRenderer == null) { - skeletonRenderer = GetComponent(); - } - - if (skeletonAnimation == null) { - skeletonAnimation = GetComponent(); - } - - skeletonRenderer.OnReset -= HandleRendererReset; - skeletonRenderer.OnReset += HandleRendererReset; - - if (skeletonAnimation != null) { - skeletonAnimation.UpdateLocal -= UpdateLocal; - skeletonAnimation.UpdateLocal += UpdateLocal; - } - - - CollectBones(); - } - - void Start () { - //recollect because order of operations failure when switching between game mode and edit mode... -// CollectBones(); - } - - void OnDisable () { - skeletonRenderer.OnReset -= HandleRendererReset; - - if (skeletonAnimation != null) { - skeletonAnimation.UpdateLocal -= UpdateLocal; - skeletonAnimation.UpdateWorld -= UpdateWorld; - skeletonAnimation.UpdateComplete -= UpdateComplete; - } - } - - void HandleRendererReset (SkeletonRenderer r) { - if (OnReset != null) - OnReset(); - - CollectBones(); - } - - public void RegisterBone (SkeletonUtilityBone bone) { - if (utilityBones.Contains(bone)) - return; - else { - utilityBones.Add(bone); - needToReprocessBones = true; - } - } - - public void UnregisterBone (SkeletonUtilityBone bone) { - utilityBones.Remove(bone); - } - - public void RegisterConstraint (SkeletonUtilityConstraint constraint) { - - if (utilityConstraints.Contains(constraint)) - return; - else { - utilityConstraints.Add(constraint); - needToReprocessBones = true; - } - } - - public void UnregisterConstraint (SkeletonUtilityConstraint constraint) { - utilityConstraints.Remove(constraint); - } - - public void CollectBones () { - if (skeletonRenderer.skeleton == null) - return; - - if (boneRoot != null) { - List constraintTargetNames = new List(); - - foreach (IkConstraint c in skeletonRenderer.skeleton.IkConstraints) { - constraintTargetNames.Add(c.Target.Data.Name); - } - - foreach (var b in utilityBones) { - if (b.bone == null) { - return; - } - if (b.mode == SkeletonUtilityBone.Mode.Override) { - hasTransformBones = true; - } - - if (constraintTargetNames.Contains(b.bone.Data.Name)) { - hasUtilityConstraints = true; - } - } - - if (utilityConstraints.Count > 0) - hasUtilityConstraints = true; - - if (skeletonAnimation != null) { - skeletonAnimation.UpdateWorld -= UpdateWorld; - skeletonAnimation.UpdateComplete -= UpdateComplete; - - if (hasTransformBones || hasUtilityConstraints) { - skeletonAnimation.UpdateWorld += UpdateWorld; - } - - if (hasUtilityConstraints) { - skeletonAnimation.UpdateComplete += UpdateComplete; - } - } - - needToReprocessBones = false; - } else { - utilityBones.Clear(); - utilityConstraints.Clear(); - } - - } - - void UpdateLocal (SkeletonAnimation anim) { - - if (needToReprocessBones) - CollectBones(); - - if (utilityBones == null) - return; - - foreach (SkeletonUtilityBone b in utilityBones) { - b.transformLerpComplete = false; - } - - UpdateAllBones(); - } - - void UpdateWorld (SkeletonAnimation anim) { - UpdateAllBones(); - - foreach (SkeletonUtilityConstraint c in utilityConstraints) - c.DoUpdate(); - } - - void UpdateComplete (SkeletonAnimation anim) { - UpdateAllBones(); - } - - void UpdateAllBones () { - if (boneRoot == null) { - CollectBones(); - } - - if (utilityBones == null) - return; - - foreach (SkeletonUtilityBone b in utilityBones) { - b.DoUpdate(); - } - } - - public Transform GetBoneRoot () { - if (boneRoot != null) - return boneRoot; - - boneRoot = new GameObject("SkeletonUtility-Root").transform; - boneRoot.parent = transform; - boneRoot.localPosition = Vector3.zero; - boneRoot.localRotation = Quaternion.identity; - boneRoot.localScale = Vector3.one; - - return boneRoot; - } - - public GameObject SpawnRoot (SkeletonUtilityBone.Mode mode, bool pos, bool rot, bool sca) { - GetBoneRoot(); - Skeleton skeleton = this.skeletonRenderer.skeleton; - - GameObject go = SpawnBone(skeleton.RootBone, boneRoot, mode, pos, rot, sca); - - CollectBones(); - - return go; - } - - public GameObject SpawnHierarchy (SkeletonUtilityBone.Mode mode, bool pos, bool rot, bool sca) { - GetBoneRoot(); - - Skeleton skeleton = this.skeletonRenderer.skeleton; - - GameObject go = SpawnBoneRecursively(skeleton.RootBone, boneRoot, mode, pos, rot, sca); - - CollectBones(); - - return go; - } - - public GameObject SpawnBoneRecursively (Bone bone, Transform parent, SkeletonUtilityBone.Mode mode, bool pos, bool rot, bool sca) { - GameObject go = SpawnBone(bone, parent, mode, pos, rot, sca); - - foreach (Bone child in bone.Children) { - SpawnBoneRecursively(child, go.transform, mode, pos, rot, sca); - } - - return go; - } - - public GameObject SpawnBone (Bone bone, Transform parent, SkeletonUtilityBone.Mode mode, bool pos, bool rot, bool sca) { - GameObject go = new GameObject(bone.Data.Name); - go.transform.parent = parent; - - SkeletonUtilityBone b = go.AddComponent(); - b.skeletonUtility = this; - b.position = pos; - b.rotation = rot; - b.scale = sca; - b.mode = mode; - b.zPosition = true; - b.Reset(); - b.bone = bone; - b.boneName = bone.Data.Name; - b.valid = true; - - if (mode == SkeletonUtilityBone.Mode.Override) { - if (rot) - go.transform.localRotation = Quaternion.Euler(0, 0, b.bone.RotationIK); - - if (pos) - go.transform.localPosition = new Vector3(b.bone.X, b.bone.Y, 0); - - go.transform.localScale = new Vector3(b.bone.scaleX, b.bone.scaleY, 0); - } - - return go; - } - - public void SpawnSubRenderers (bool disablePrimaryRenderer) { - int submeshCount = GetComponent().sharedMesh.subMeshCount; - - for (int i = 0; i < submeshCount; i++) { - GameObject go = new GameObject("Submesh " + i, typeof(MeshFilter), typeof(MeshRenderer)); - go.transform.parent = transform; - go.transform.localPosition = Vector3.zero; - go.transform.localRotation = Quaternion.identity; - go.transform.localScale = Vector3.one; - - SkeletonUtilitySubmeshRenderer s = go.AddComponent(); - s.sortingOrder = i * 10; - s.submeshIndex = i; - s.Initialize(renderer); - s.Update(); - } - - if (disablePrimaryRenderer) - renderer.enabled = false; - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtility.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtility.cs.meta deleted file mode 100644 index 7d3d7a44f..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtility.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7f726fb798ad621458c431cb9966d91d -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityBone.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityBone.cs deleted file mode 100644 index 99c561499..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityBone.cs +++ /dev/null @@ -1,293 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ - -/***************************************************************************** - * Skeleton Utility created by Mitch Thompson - * Full irrevocable rights and permissions granted to Esoteric Software -*****************************************************************************/ - -using System; -using System.IO; -using System.Collections.Generic; -using UnityEngine; -using Spine; - -/// Sets a GameObject's transform to match a bone on a Spine skeleton. -[ExecuteInEditMode] -[AddComponentMenu("Spine/SkeletonUtilityBone")] -public class SkeletonUtilityBone : MonoBehaviour { - - public enum Mode { - Follow, - Override - } - - [System.NonSerialized] - public bool valid; - [System.NonSerialized] - public SkeletonUtility skeletonUtility; - [System.NonSerialized] - public Bone bone; - public Mode mode; - public bool zPosition = true; - public bool position; - public bool rotation; - public bool scale; - public bool flip; - public bool flipX; - [Range(0f,1f)] - public float overrideAlpha = 1; - - /// If a bone isn't set, boneName is used to find the bone. - public String boneName; - public Transform parentReference; - [HideInInspector] - public bool transformLerpComplete; - protected Transform cachedTransform; - protected Transform skeletonTransform; - - public bool NonUniformScaleWarning { - get { - return nonUniformScaleWarning; - } - } - - private bool nonUniformScaleWarning; - - public void Reset () { - bone = null; - cachedTransform = transform; - valid = skeletonUtility != null && skeletonUtility.skeletonRenderer != null && skeletonUtility.skeletonRenderer.valid; - if (!valid) - return; - skeletonTransform = skeletonUtility.transform; - - skeletonUtility.OnReset -= HandleOnReset; - skeletonUtility.OnReset += HandleOnReset; - - DoUpdate(); - } - - void OnEnable () { - skeletonUtility = SkeletonUtility.GetInParent(transform); - - if (skeletonUtility == null) - return; - - skeletonUtility.RegisterBone(this); - - skeletonUtility.OnReset += HandleOnReset; - } - - void HandleOnReset () { - Reset(); - } - - void OnDisable () { - if (skeletonUtility != null) { - skeletonUtility.OnReset -= HandleOnReset; - - skeletonUtility.UnregisterBone(this); - } - } - - public void DoUpdate () { - - if (!valid) { - Reset(); - return; - } - - Spine.Skeleton skeleton = skeletonUtility.skeletonRenderer.skeleton; - - if (bone == null) { - if (boneName == null || boneName.Length == 0) - return; - bone = skeleton.FindBone(boneName); - if (bone == null) { - Debug.LogError("Bone not found: " + boneName, this); - return; - } - } - - - - float skeletonFlipRotation = (skeleton.flipX ^ skeleton.flipY) ? -1f : 1f; - - float flipCompensation = 0; - if (flip && (flipX || (flipX != bone.flipX)) && bone.parent != null) { - flipCompensation = bone.parent.WorldRotation * -2; - } - - if (mode == Mode.Follow) { - if (flip) { - flipX = bone.flipX; - } - - - if (position) { - cachedTransform.localPosition = new Vector3(bone.x, bone.y, 0); - } - - if (rotation) { - - if (bone.Data.InheritRotation) { - if (bone.FlipX) { - cachedTransform.localRotation = Quaternion.Euler(0, 180, bone.rotationIK - flipCompensation); - } else { - cachedTransform.localRotation = Quaternion.Euler(0, 0, bone.rotationIK); - } - } else { - Vector3 euler = skeletonTransform.rotation.eulerAngles; - cachedTransform.rotation = Quaternion.Euler(euler.x, euler.y, skeletonTransform.rotation.eulerAngles.z + (bone.worldRotation * skeletonFlipRotation)); - } - - } - - if (scale) { - cachedTransform.localScale = new Vector3(bone.scaleX, bone.scaleY, 1); - - nonUniformScaleWarning = (bone.scaleX != bone.scaleY); - } - - } else if (mode == Mode.Override) { - - - - if (transformLerpComplete) - return; - - if (parentReference == null) { - if (position) { - bone.x = Mathf.Lerp(bone.x, cachedTransform.localPosition.x, overrideAlpha); - bone.y = Mathf.Lerp(bone.y, cachedTransform.localPosition.y, overrideAlpha); - } - - if (rotation) { - float angle = Mathf.LerpAngle(bone.Rotation, cachedTransform.localRotation.eulerAngles.z, overrideAlpha) + flipCompensation; - - if (flip) { - if ((!flipX && bone.flipX)) { - angle -= flipCompensation; - } - - //TODO fix this... - if (angle >= 360) - angle -= 360; - else if (angle <= -360) - angle += 360; - } - - bone.Rotation = angle; - } - - if (scale) { - bone.scaleX = Mathf.Lerp(bone.scaleX, cachedTransform.localScale.x, overrideAlpha); - bone.scaleY = Mathf.Lerp(bone.scaleY, cachedTransform.localScale.y, overrideAlpha); - - nonUniformScaleWarning = (bone.scaleX != bone.scaleY); - } - - if (flip) { - bone.flipX = flipX; - } - } else { - - if (transformLerpComplete) - return; - - if (position) { - Vector3 pos = parentReference.InverseTransformPoint(cachedTransform.position); - bone.x = Mathf.Lerp(bone.x, pos.x, overrideAlpha); - bone.y = Mathf.Lerp(bone.y, pos.y, overrideAlpha); - } - - if (rotation) { - float angle = Mathf.LerpAngle(bone.Rotation, Quaternion.LookRotation(flipX ? Vector3.forward * -1 : Vector3.forward, parentReference.InverseTransformDirection(cachedTransform.up)).eulerAngles.z, overrideAlpha) + flipCompensation; - - if (flip) { - if ((!flipX && bone.flipX)) { - angle -= flipCompensation; - } - - //TODO fix this... - if (angle >= 360) - angle -= 360; - else if (angle <= -360) - angle += 360; - } - - bone.Rotation = angle; - } - - //TODO: Something about this - if (scale) { - bone.scaleX = Mathf.Lerp(bone.scaleX, cachedTransform.localScale.x, overrideAlpha); - bone.scaleY = Mathf.Lerp(bone.scaleY, cachedTransform.localScale.y, overrideAlpha); - - nonUniformScaleWarning = (bone.scaleX != bone.scaleY); - } - - if (flip) { - bone.flipX = flipX; - } - - } - - transformLerpComplete = true; - } - } - - public void FlipX (bool state) { - if (state != flipX) { - flipX = state; - if (flipX && Mathf.Abs(transform.localRotation.eulerAngles.y) > 90) { - skeletonUtility.skeletonAnimation.LateUpdate(); - return; - } else if (!flipX && Mathf.Abs(transform.localRotation.eulerAngles.y) < 90) { - skeletonUtility.skeletonAnimation.LateUpdate(); - return; - } - } - - bone.FlipX = state; - transform.RotateAround(transform.position, skeletonUtility.transform.up, 180); - Vector3 euler = transform.localRotation.eulerAngles; - euler.x = 0; - euler.y = bone.FlipX ? 180 : 0; - transform.localRotation = Quaternion.Euler(euler); - } - - void OnDrawGizmos () { - if (NonUniformScaleWarning) { - Gizmos.DrawIcon(transform.position + new Vector3(0, 0.128f, 0), "icon-warning"); - } - } -} \ No newline at end of file diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityBone.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityBone.cs.meta deleted file mode 100644 index f66d45053..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityBone.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b238dfcde8209044b97d23f62bcaadf6 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityConstraint.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityConstraint.cs deleted file mode 100644 index 3be62228c..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityConstraint.cs +++ /dev/null @@ -1,22 +0,0 @@ -using UnityEngine; -using System.Collections; - -[RequireComponent(typeof(SkeletonUtilityBone)), ExecuteInEditMode] - -public abstract class SkeletonUtilityConstraint : MonoBehaviour { - - protected SkeletonUtilityBone utilBone; - protected SkeletonUtility skeletonUtility; - - protected virtual void OnEnable () { - utilBone = GetComponent(); - skeletonUtility = SkeletonUtility.GetInParent(transform); - skeletonUtility.RegisterConstraint(this); - } - - protected virtual void OnDisable () { - skeletonUtility.UnregisterConstraint(this); - } - - public abstract void DoUpdate (); -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityConstraint.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityConstraint.cs.meta deleted file mode 100644 index dad11e0a2..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityConstraint.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 522dbfcc6c916df4396f14f35048d185 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityEyeConstraint.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityEyeConstraint.cs deleted file mode 100644 index 6aefded5a..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityEyeConstraint.cs +++ /dev/null @@ -1,56 +0,0 @@ -using UnityEngine; -using System.Collections; - -public class SkeletonUtilityEyeConstraint : SkeletonUtilityConstraint { - - public Transform[] eyes; - public float radius = 0.5f; - public Transform target; - public Vector3 targetPosition; - public float speed = 10; - Vector3[] origins; - Vector3 centerPoint; - - protected override void OnEnable () { - if (!Application.isPlaying) - return; - - base.OnEnable(); - - Bounds centerBounds = new Bounds(eyes[0].localPosition, Vector3.zero); - origins = new Vector3[eyes.Length]; - for (int i = 0; i < eyes.Length; i++) { - origins[i] = eyes[i].localPosition; - centerBounds.Encapsulate(origins[i]); - } - - centerPoint = centerBounds.center; - } - - protected override void OnDisable () { - if (!Application.isPlaying) - return; - - base.OnDisable(); - } - - public override void DoUpdate () { - - if (target != null) - targetPosition = target.position; - - Vector3 goal = targetPosition; - - Vector3 center = transform.TransformPoint(centerPoint); - Vector3 dir = goal - center; - - if (dir.magnitude > 1) - dir.Normalize(); - - for (int i = 0; i < eyes.Length; i++) { - center = transform.TransformPoint(origins[i]); - eyes[i].position = Vector3.MoveTowards(eyes[i].position, center + (dir * radius), speed * Time.deltaTime); - } - - } -} \ No newline at end of file diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityEyeConstraint.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityEyeConstraint.cs.meta deleted file mode 100644 index 3e82746da..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityEyeConstraint.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0d994c65b6daec64f80ae2ae04e9d999 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityGroundConstraint.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityGroundConstraint.cs deleted file mode 100644 index b9608e9bc..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityGroundConstraint.cs +++ /dev/null @@ -1,120 +0,0 @@ -using UnityEngine; -using System.Collections; - -[RequireComponent(typeof(SkeletonUtilityBone)), ExecuteInEditMode] -public class SkeletonUtilityGroundConstraint : SkeletonUtilityConstraint { - -#if UNITY_4_3 - public LayerMask groundMask; - public bool use2D = false; - public bool useRadius = false; - public float castRadius = 0.1f; - public float castDistance = 5f; - public float castOffset = 0; - public float groundOffset = 0; - public float adjustSpeed = 5; -#else - [Tooltip("LayerMask for what objects to raycast against")] - public LayerMask groundMask; - [Tooltip("The 2D")] - public bool use2D = false; - [Tooltip("Uses SphereCast for 3D mode and CircleCast for 2D mode")] - public bool useRadius = false; - [Tooltip("The Radius")] - public float castRadius = 0.1f; - [Tooltip("How high above the target bone to begin casting from")] - public float castDistance = 5f; - [Tooltip("X-Axis adjustment")] - public float castOffset = 0; - [Tooltip("Y-Axis adjustment")] - public float groundOffset = 0; - [Tooltip("How fast the target IK position adjusts to the ground. Use smaller values to prevent snapping")] - public float adjustSpeed = 5; -#endif - - - Vector3 rayOrigin; - Vector3 rayDir = new Vector3(0, -1, 0); - float hitY; - float lastHitY; - - protected override void OnEnable () { - base.OnEnable(); - } - - protected override void OnDisable () { - base.OnDisable(); - } - - public override void DoUpdate () { - rayOrigin = transform.position + new Vector3(castOffset, castDistance, 0); - - hitY = float.MinValue; - if (use2D) { - RaycastHit2D hit; - - if (useRadius) { -#if UNITY_4_3 - //NOTE: Unity 4.3.x does not have CircleCast - hit = Physics2D.Raycast(rayOrigin , rayDir, castDistance + groundOffset, groundMask); -#else - hit = Physics2D.CircleCast(rayOrigin, castRadius, rayDir, castDistance + groundOffset, groundMask); -#endif - } else { - hit = Physics2D.Raycast(rayOrigin, rayDir, castDistance + groundOffset, groundMask); - } - - if (hit.collider != null) { - hitY = hit.point.y + groundOffset; - if (Application.isPlaying) { - hitY = Mathf.MoveTowards(lastHitY, hitY, adjustSpeed * Time.deltaTime); - } - } else { - if (Application.isPlaying) - hitY = Mathf.MoveTowards(lastHitY, transform.position.y, adjustSpeed * Time.deltaTime); - } - } else { - RaycastHit hit; - bool validHit = false; - - if (useRadius) { - validHit = Physics.SphereCast(rayOrigin, castRadius, rayDir, out hit, castDistance + groundOffset, groundMask); - } else { - validHit = Physics.Raycast(rayOrigin, rayDir, out hit, castDistance + groundOffset, groundMask); - } - - if (validHit) { - hitY = hit.point.y + groundOffset; - if (Application.isPlaying) { - hitY = Mathf.MoveTowards(lastHitY, hitY, adjustSpeed * Time.deltaTime); - } - } else { - if (Application.isPlaying) - hitY = Mathf.MoveTowards(lastHitY, transform.position.y, adjustSpeed * Time.deltaTime); - } - } - - Vector3 v = transform.position; - v.y = Mathf.Clamp(v.y, Mathf.Min(lastHitY, hitY), float.MaxValue); - transform.position = v; - - utilBone.bone.X = transform.localPosition.x; - utilBone.bone.Y = transform.localPosition.y; - - lastHitY = hitY; - } - - void OnDrawGizmos () { - Vector3 hitEnd = rayOrigin + (rayDir * Mathf.Min(castDistance, rayOrigin.y - hitY)); - Vector3 clearEnd = rayOrigin + (rayDir * castDistance); - Gizmos.DrawLine(rayOrigin, hitEnd); - - if (useRadius) { - Gizmos.DrawLine(new Vector3(hitEnd.x - castRadius, hitEnd.y - groundOffset, hitEnd.z), new Vector3(hitEnd.x + castRadius, hitEnd.y - groundOffset, hitEnd.z)); - Gizmos.DrawLine(new Vector3(clearEnd.x - castRadius, clearEnd.y, clearEnd.z), new Vector3(clearEnd.x + castRadius, clearEnd.y, clearEnd.z)); - } - - Gizmos.color = Color.red; - Gizmos.DrawLine(hitEnd, clearEnd); - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityGroundConstraint.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityGroundConstraint.cs.meta deleted file mode 100644 index 5d9e6920c..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityGroundConstraint.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3662334b99de5fe4396ab24e30c4fd12 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityKinematicShadow.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityKinematicShadow.cs deleted file mode 100644 index c088353f2..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityKinematicShadow.cs +++ /dev/null @@ -1,79 +0,0 @@ -using UnityEngine; -using System.Collections; -using System.Collections.Generic; - -public class SkeletonUtilityKinematicShadow : MonoBehaviour { - public bool hideShadow = true; - Dictionary shadowTable; - GameObject shadowRoot; - - void Start () { - shadowRoot = (GameObject)Instantiate(gameObject); - if (hideShadow) - shadowRoot.hideFlags = HideFlags.HideInHierarchy; - - shadowRoot.transform.parent = transform.root; - - shadowTable = new Dictionary(); - - Destroy(shadowRoot.GetComponent()); - - shadowRoot.transform.position = transform.position; - shadowRoot.transform.rotation = transform.rotation; - - Vector3 scaleRef = transform.TransformPoint(Vector3.right); - float scale = Vector3.Distance(transform.position, scaleRef); - shadowRoot.transform.localScale = Vector3.one; - - var shadowJoints = shadowRoot.GetComponentsInChildren(); - foreach (Joint j in shadowJoints) { - j.connectedAnchor *= scale; - } - - var joints = GetComponentsInChildren(); - foreach (var j in joints) - Destroy(j); - - var rbs = GetComponentsInChildren(); - foreach (var rb in rbs) - Destroy(rb); - - var colliders = GetComponentsInChildren(); - foreach (var c in colliders) - Destroy(c); - - - //match by bone name - var shadowBones = shadowRoot.GetComponentsInChildren(); - var bones = GetComponentsInChildren(); - - //build bone lookup - foreach (var b in bones) { - if (b.gameObject == gameObject) - continue; - - foreach (var sb in shadowBones) { - if (sb.rigidbody == null) - continue; - - if (sb.boneName == b.boneName) { - shadowTable.Add(sb.transform, b.transform); - break; - } - } - } - - foreach (var b in shadowBones) - Destroy(b); - } - - void FixedUpdate () { - shadowRoot.rigidbody.MovePosition(transform.position); - shadowRoot.rigidbody.MoveRotation(transform.rotation); - - foreach (var pair in shadowTable) { - pair.Value.localPosition = pair.Key.localPosition; - pair.Value.localRotation = pair.Key.localRotation; - } - } -} \ No newline at end of file diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityKinematicShadow.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityKinematicShadow.cs.meta deleted file mode 100644 index 06bcb6f4a..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilityKinematicShadow.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cfeac06b8a6aa1645813700e3e4c0863 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs deleted file mode 100644 index fc8867e6b..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs +++ /dev/null @@ -1,96 +0,0 @@ -using UnityEngine; -using System.Collections; - -[ExecuteInEditMode] -public class SkeletonUtilitySubmeshRenderer : MonoBehaviour { - public Renderer parentRenderer; - [System.NonSerialized] - public Mesh mesh; - public int submeshIndex = 0; - public int sortingOrder = 0; - public int sortingLayerID = 0; - public Material hiddenPassMaterial; - Renderer cachedRenderer; - MeshFilter filter; - Material[] sharedMaterials; - MeshFilter parentFilter; - - void Awake () { - cachedRenderer = renderer; - sharedMaterials = cachedRenderer.sharedMaterials; - filter = GetComponent(); - - if (parentRenderer != null) - Initialize(parentRenderer); - } - - void OnEnable () { - parentRenderer = transform.parent.GetComponent(); - parentRenderer.GetComponent().OnReset += HandleSkeletonReset; - } - - void OnDisable () { - parentRenderer.GetComponent().OnReset -= HandleSkeletonReset; - } - - void HandleSkeletonReset (SkeletonRenderer r) { - if (parentRenderer != null) - Initialize(parentRenderer); - } - - public void Initialize (Renderer parentRenderer) { - this.parentRenderer = parentRenderer; - parentFilter = parentRenderer.GetComponent(); - mesh = parentFilter.sharedMesh; - filter.sharedMesh = mesh; - Debug.Log("Mesh: " + mesh); - } - - public void Update () { - if (mesh == null || mesh != parentFilter.sharedMesh) { - mesh = parentFilter.sharedMesh; - filter.sharedMesh = mesh; - } - - if (cachedRenderer == null) - cachedRenderer = renderer; - - if (mesh == null || submeshIndex > mesh.subMeshCount - 1) { - cachedRenderer.enabled = false; - return; - } else { - renderer.enabled = true; - } - - bool changed = false; - - if (sharedMaterials.Length != parentRenderer.sharedMaterials.Length) { - sharedMaterials = parentRenderer.sharedMaterials; - changed = true; - } - - - - for (int i = 0; i < renderer.sharedMaterials.Length; i++) { - if (i == submeshIndex) - continue; - - if (sharedMaterials[i] != hiddenPassMaterial) { - sharedMaterials[i] = hiddenPassMaterial; - changed = true; - } - } - - if (sharedMaterials[submeshIndex] != parentRenderer.sharedMaterials[submeshIndex]) { - sharedMaterials[submeshIndex] = parentRenderer.sharedMaterials[submeshIndex]; - changed = true; - } - - if (changed) { - cachedRenderer.sharedMaterials = sharedMaterials; - } - - cachedRenderer.sortingLayerID = sortingLayerID; - cachedRenderer.sortingOrder = sortingOrder; - } -} diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs.meta b/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs.meta deleted file mode 100644 index 168ca8811..000000000 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 7820c1c2b0e52c6408de899d6939996e -MonoImporter: - serializedVersion: 2 - defaultReferences: - - parentRenderer: {instanceID: 0} - - mesh: {instanceID: 0} - - hiddenPassMaterial: {fileID: 2100000, guid: 43227e5adadc6f24bb4bf74b92a56fb4, - type: 2} - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/spine-tk2d/Code.meta b/spine-tk2d/Code.meta deleted file mode 100644 index 21b8433d2..000000000 --- a/spine-tk2d/Code.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: f9e5e7e3c96f7624fadc23d2dd2a213e -DefaultImporter: - userData: diff --git a/spine-tk2d/Editor.meta b/spine-tk2d/Editor.meta deleted file mode 100644 index e6f5ac62d..000000000 --- a/spine-tk2d/Editor.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: d08845badc896464e8b2e5402b1178f4 -DefaultImporter: - userData: diff --git a/spine-tk2d/Example.meta b/spine-tk2d/Example.meta deleted file mode 100644 index ac24569ed..000000000 --- a/spine-tk2d/Example.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: d7fb4e32bd1ec744aa7d9baa92bf4665 -DefaultImporter: - userData: diff --git a/spine-tk2d/README.md b/spine-tk2d/README.md index 4713b3f73..40832c297 100644 --- a/spine-tk2d/README.md +++ b/spine-tk2d/README.md @@ -1,39 +1,3 @@ # spine-tk2d -The spine-tk2d runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [2D Toolkit](http://www.unikronsoftware.com/2dtoolkit/) for [Unity](http://unity3d.com/). spine-tk2d is based on [spine-csharp](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-csharp) and is very similar to [spine-unity](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-unity). - -A Spine skeleton is a GameObject and can be used throughout Unity like any other GameObject. It depends only on Unity's `MeshRenderer`, so it is close to the metal. `SkeletonUtility` allows other GameObjects to interact with the Spine skeleton, to control bones in the skeleton, be controlled by the skeleton, attach colliders, etc. - -spine-tk2d differs from spine-unity in that a TK2D atlas is used instead of a Spine atlas. Also, spine-unity has more tools for automatically importing Spine skeleton data and atlases, while spine-tk2d requires setting up the TK2D manually. spine-unity provides a GameObject that renders a Spine skeleton, so can be used with TK2D (or any other Unity plugin). - -## Documentation - -The [spine-tk2d video](https://www.youtube.com/watch?v=7dg9slk9mxA) shows some differences between spine-tk2d and spine-unity. Except for setting up the texture atlas, everything in spine-tk2d works the same as spine-unity. The [Spine Unity Examples](http://esotericsoftware.com/forum/viewtopic.php?f=3&t=3318) forum thread has many videos on how to use both spine-unity and spine-tk2d features. - -## Quick installation - -Download and run this Unity package: - -[spine-tk2d.unitypackage](http://esotericsoftware.com/files/runtimes/unity/spine-tk2d.unitypackage) - -In the `Assets/examples` folder you will find example scenes that demonstrate various spine-tk2d features. Also see the example scenes in [spine-unity](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-unity). - -## Manual installation - -To open the spine-tk2d example scenes: - -1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). -1. Copy the contents of `spine-csharp/src` to `spine-tk2d/Assets/spine-csharp`. -1. Open the `spine-tk2d/Assets/examples/spineboy/spineboy.unity` scene file using Unity 4.3.4+. -1. Import 2D Toolkit into the example project. - -To use spine-tk2d in your own Unity project: - -1. Copy the contents of `spine-csharp/src` to `Assets/spine-csharp` in your project. -1. Copy the `spine-tk2d/Assets/spine-tk2d` to `Assets/spine-tk2d` in your project. -1. Import 2D Toolkit into your project. - -## Notes - -- Atlas images should use premultiplied alpha when using the shaders that come with spine-tk2d. -- This slightly outdated [spine-tk2d setup video](http://www.youtube.com/watch?v=dnQbS9ap-i8) may still be useful for manual installation. +The spine-tk2d runtime has been merged into [spine-unity](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-unity). You may use spine-unity with [2D Toolkit](http://www.unikronsoftware.com/2dtoolkit/). diff --git a/spine-tk2d/README.md.meta b/spine-tk2d/README.md.meta deleted file mode 100644 index 393585aa1..000000000 --- a/spine-tk2d/README.md.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 068c1d5710e913d40955e13203f11eed -DefaultImporter: - userData: diff --git a/spine-turbulenz/LICENSE b/spine-turbulenz/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-turbulenz/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-turbulenz/README.md b/spine-turbulenz/README.md index de2fde28f..abd9dc192 100644 --- a/spine-turbulenz/README.md +++ b/spine-turbulenz/README.md @@ -2,6 +2,12 @@ The spine-turbulenz runtime provides basic functionality to load and manipulate [Spine](http://esotericsoftware.com) skeletal animation data using [Turbulenz](http://biz.turbulenz.com/developers). spine-turbulenz is based on [spine-js](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-js). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup To run the example: @@ -12,7 +18,7 @@ To run the example: ## Demos -- [spine-turbulenz Demo](http://esotericsoftware.com/spine/files/demos/turbulenz/example/index.html) +- [spine-turbulenz Demo](http://esotericsoftware.com/files/runtimes/turbulenz/example/)
[spine-turbulenz Demo source](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-turbulenz/example/index.html#L21) ## Notes diff --git a/spine-turbulenz/SpriteBatch.js b/spine-turbulenz/SpriteBatch.js index 9b17fc630..0b54a565c 100644 --- a/spine-turbulenz/SpriteBatch.js +++ b/spine-turbulenz/SpriteBatch.js @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-turbulenz/example/index.html b/spine-turbulenz/example/index.html index 897008170..a02c9365d 100644 --- a/spine-turbulenz/example/index.html +++ b/spine-turbulenz/example/index.html @@ -1,25 +1,30 @@ + + + + - - - -spine-js +spine-turbulenz @@ -190,7 +192,7 @@ function drawSkeleton (batch, skeleton) { if (!(attachment instanceof spine.RegionAttachment)) continue; attachment.computeVertices(skeleton.x, skeleton.y, slot.bone, vertices); - var blendMode = slot.data.additiveBlending ? draw2D.blend.additive : draw2D.blend.alpha; + var blendMode = slot.data.blendMode == spine.BlendMode.additive ? draw2D.blend.additive : draw2D.blend.alpha; if (batch.blendMode != blendMode) { batch.end(); batch.begin(blendMode); diff --git a/spine-unity/Assets/Examples/Scenes/Basic Platformer.unity b/spine-unity/Assets/Examples/Scenes/Basic Platformer.unity index ccef0743b..016ad6b0e 100644 Binary files a/spine-unity/Assets/Examples/Scenes/Basic Platformer.unity and b/spine-unity/Assets/Examples/Scenes/Basic Platformer.unity differ diff --git a/spine-unity/Assets/Examples/Scenes/Ragdoll.unity b/spine-unity/Assets/Examples/Scenes/Ragdoll.unity new file mode 100644 index 000000000..2403edf40 Binary files /dev/null and b/spine-unity/Assets/Examples/Scenes/Ragdoll.unity differ diff --git a/spine-tk2d/Assets/examples/goblins/goblins.unity.meta b/spine-unity/Assets/Examples/Scenes/Ragdoll.unity.meta similarity index 56% rename from spine-tk2d/Assets/examples/goblins/goblins.unity.meta rename to spine-unity/Assets/Examples/Scenes/Ragdoll.unity.meta index 8d920a5d3..cd725ce04 100644 --- a/spine-tk2d/Assets/examples/goblins/goblins.unity.meta +++ b/spine-unity/Assets/Examples/Scenes/Ragdoll.unity.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: cc2d822d0267e2e46bd5ee22ebc89b36 +guid: 031930e4cebf68345b71c664bfa622cf DefaultImporter: userData: diff --git a/spine-tk2d/Assets/examples/goblins/goblins.unity b/spine-unity/Assets/Examples/Scenes/SpineGauge.unity similarity index 52% rename from spine-tk2d/Assets/examples/goblins/goblins.unity rename to spine-unity/Assets/Examples/Scenes/SpineGauge.unity index 1774f0ba3..5a8f1c3d8 100644 Binary files a/spine-tk2d/Assets/examples/goblins/goblins.unity and b/spine-unity/Assets/Examples/Scenes/SpineGauge.unity differ diff --git a/spine-tk2d/Assets/examples/spineboy/spineboy.unity.meta b/spine-unity/Assets/Examples/Scenes/SpineGauge.unity.meta similarity index 56% rename from spine-tk2d/Assets/examples/spineboy/spineboy.unity.meta rename to spine-unity/Assets/Examples/Scenes/SpineGauge.unity.meta index 89cd16f65..80946af3f 100644 --- a/spine-tk2d/Assets/examples/spineboy/spineboy.unity.meta +++ b/spine-unity/Assets/Examples/Scenes/SpineGauge.unity.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: 3e1554ca46e91194fb8d9ead0b21f6f7 +guid: b9ae310595c646944a1268f51fb389a4 DefaultImporter: userData: diff --git a/spine-unity/Assets/Examples/Scripts/BasicPlatformerController.cs b/spine-unity/Assets/Examples/Scripts/BasicPlatformerController.cs index 761ac31af..f8b40c06e 100644 --- a/spine-unity/Assets/Examples/Scripts/BasicPlatformerController.cs +++ b/spine-unity/Assets/Examples/Scripts/BasicPlatformerController.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Basic Platformer Controller created by Mitch Thompson @@ -209,4 +181,4 @@ public class BasicPlatformerController : MonoBehaviour { lastVelocity = velocity; lastGrounded = controller.isGrounded; } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Scripts/Chimera.cs b/spine-unity/Assets/Examples/Scripts/Chimera.cs index 27f831f86..581846ca2 100644 --- a/spine-unity/Assets/Examples/Scripts/Chimera.cs +++ b/spine-unity/Assets/Examples/Scripts/Chimera.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Basic Platformer Controller created by Mitch Thompson @@ -48,4 +20,4 @@ public class Chimera : MonoBehaviour { void Start() { GetComponent().skeleton.FindSlot(targetSlot).Attachment = SpineAttachment.GetAttachment(attachmentPath, skeletonDataSource); } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Scripts/ConstrainedCamera.cs b/spine-unity/Assets/Examples/Scripts/ConstrainedCamera.cs index c67ebdb7e..30a063fe0 100644 --- a/spine-unity/Assets/Examples/Scripts/ConstrainedCamera.cs +++ b/spine-unity/Assets/Examples/Scripts/ConstrainedCamera.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Constrained Camera created by Mitch Thompson @@ -57,4 +29,4 @@ public class ConstrainedCamera : MonoBehaviour { transform.position = Vector3.Lerp(transform.position, goalPoint, smoothing * Time.deltaTime); } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Scripts/DynamicSpineBone.cs b/spine-unity/Assets/Examples/Scripts/DynamicSpineBone.cs deleted file mode 100644 index 6fa3ea5be..000000000 --- a/spine-unity/Assets/Examples/Scripts/DynamicSpineBone.cs +++ /dev/null @@ -1,66 +0,0 @@ -using UnityEngine; -using System.Collections; - -public class DynamicSpineBone : MonoBehaviour { - - public Transform speedReference; - - [SpineBone] - public string boneName; - - [Range(-90, 90)] - public float minRotation = -45; - [Range(-90, 90)] - public float maxRotation = 45; - - [Range(-2000, 2000)] - public float rotationFactor = 300; - - [Range(5, 30)] - public float returnSpeed = 10; - - [Range(100, 1000)] - public float boneSpeed = 300; - - public float returnThreshhold = 0.01f; - - public bool useAcceleration; - - - SkeletonAnimation skeletonAnimation; - float goalRotation; - Spine.Bone bone; - Vector3 velocity; - Vector3 acceleration; - Vector3 lastPosition; - - void Start() { - if (speedReference == null) - speedReference = transform; - - skeletonAnimation = GetComponent(); - bone = SpineBone.GetBone(boneName, skeletonAnimation); - skeletonAnimation.UpdateLocal += UpdateLocal; - lastPosition = speedReference.position; - } - - void FixedUpdate() { - acceleration = (speedReference.position - lastPosition) - velocity; - velocity = speedReference.position - lastPosition; - lastPosition = speedReference.position; - } - - void UpdateLocal(SkeletonRenderer renderer) { - Vector3 vec = useAcceleration ? acceleration : velocity; - - if (Mathf.Abs(vec.x) < returnThreshhold) - goalRotation = Mathf.Lerp(goalRotation, 0, returnSpeed * Time.deltaTime); - else - goalRotation += vec.x * rotationFactor * Time.deltaTime * (bone.WorldFlipX ? -1 : 1); - - goalRotation = Mathf.Clamp(goalRotation, minRotation, maxRotation); - - bone.Rotation = Mathf.Lerp(bone.Rotation, bone.Rotation + goalRotation, boneSpeed * Time.deltaTime); - - } -} diff --git a/spine-unity/Assets/Examples/Scripts/FootSoldierExample.cs b/spine-unity/Assets/Examples/Scripts/FootSoldierExample.cs index 3a7152ef5..e7de0aba7 100644 --- a/spine-unity/Assets/Examples/Scripts/FootSoldierExample.cs +++ b/spine-unity/Assets/Examples/Scripts/FootSoldierExample.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * FootSoldierExample created by Mitch Thompson @@ -96,4 +68,4 @@ public class FootSoldierExample : MonoBehaviour { skeletonAnimation.skeleton.SetAttachment(eyesSlot, eyesOpenAttachment); } } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Scripts/Goblins.cs b/spine-unity/Assets/Examples/Scripts/Goblins.cs index 56a54007c..926ebbab8 100644 --- a/spine-unity/Assets/Examples/Scripts/Goblins.cs +++ b/spine-unity/Assets/Examples/Scripts/Goblins.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs b/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs new file mode 100644 index 000000000..f15e773fc --- /dev/null +++ b/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs @@ -0,0 +1,81 @@ +using UnityEngine; +using System.Collections; + +public class RaggedySpineboy : MonoBehaviour { + + public LayerMask groundMask; + public float restoreDuration = 0.5f; + public Vector2 launchVelocity = new Vector2(50,100); + + SkeletonRagdoll2D ragdoll; + Collider2D naturalCollider; + + void Start () { + + ragdoll = GetComponent(); + naturalCollider = GetComponent(); + } + + void AddRigidbody () { + var rb = gameObject.AddComponent(); + rb.fixedAngle = true; + naturalCollider.enabled = true; + } + + void RemoveRigidbody () { + Destroy(GetComponent()); + naturalCollider.enabled = false; + } + + void Update () { + + } + + void OnMouseUp () { + if (naturalCollider.enabled) { + Launch(); + } + } + + void Launch () { + RemoveRigidbody(); + ragdoll.Apply(); + ragdoll.RootRigidbody.velocity = new Vector2(Random.Range(-launchVelocity.x, launchVelocity.x), launchVelocity.y); + StartCoroutine(WaitUntilStopped()); + } + + IEnumerator Restore () { + Vector3 estimatedPos = ragdoll.EstimatedSkeletonPosition; + Vector3 rbPosition = ragdoll.RootRigidbody.position; + + Vector3 skeletonPoint = estimatedPos; + RaycastHit2D hit = Physics2D.Raycast((Vector2)rbPosition, (Vector2)(estimatedPos - rbPosition), Vector3.Distance(estimatedPos, rbPosition), groundMask); + if (hit.collider != null) + skeletonPoint = hit.point; + + + ragdoll.RootRigidbody.isKinematic = true; + ragdoll.SetSkeletonPosition(skeletonPoint); + + yield return ragdoll.SmoothMix(0, restoreDuration); + ragdoll.Remove(); + + AddRigidbody(); + } + + IEnumerator WaitUntilStopped () { + yield return new WaitForSeconds(0.5f); + + float t = 0; + while (t < 0.5f) { + if (ragdoll.RootRigidbody.velocity.magnitude > 0.09f) + t = 0; + else + t += Time.deltaTime; + + yield return null; + } + + StartCoroutine(Restore()); + } +} diff --git a/spine-tk2d/Assets/examples/goblins/Goblins.cs.meta b/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs.meta similarity index 78% rename from spine-tk2d/Assets/examples/goblins/Goblins.cs.meta rename to spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs.meta index 7a04efa06..5c864d277 100644 --- a/spine-tk2d/Assets/examples/goblins/Goblins.cs.meta +++ b/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3a41b9a80b4f2c045b7ad76e0d652ddc +guid: 849a7739a7df0754882fcb34c09df4c1 MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/spine-unity/Assets/Examples/Scripts/Raptor.cs b/spine-unity/Assets/Examples/Scripts/Raptor.cs index 45fb5eccf..bb09dab37 100644 --- a/spine-unity/Assets/Examples/Scripts/Raptor.cs +++ b/spine-unity/Assets/Examples/Scripts/Raptor.cs @@ -1,4 +1,35 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; public class Raptor : MonoBehaviour { diff --git a/spine-unity/Assets/Examples/Scripts/SpineGauge.cs b/spine-unity/Assets/Examples/Scripts/SpineGauge.cs new file mode 100644 index 000000000..7aedb3c35 --- /dev/null +++ b/spine-unity/Assets/Examples/Scripts/SpineGauge.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using System.Collections; + +[ExecuteInEditMode] +[RequireComponent(typeof(SkeletonRenderer))] +public class SpineGauge : MonoBehaviour{ + + [Range(0,1)] + public float fill = 0; + + [SpineAnimation] + public string fillAnimationName; + Spine.Animation fillAnimation; + + SkeletonRenderer skeletonRenderer; + + void Start () { + skeletonRenderer = GetComponent(); + } + + void Update () { + + var skeleton = skeletonRenderer.skeleton; + + if (skeleton == null) + return; + + if (fillAnimation == null) { + fillAnimation = skeleton.Data.FindAnimation(fillAnimationName); + if (fillAnimation == null) + return; + } + + fillAnimation.Apply(skeleton, 0, fill, false, null); + skeleton.Update(Time.deltaTime); + skeleton.UpdateWorldTransform(); + } +} diff --git a/spine-tk2d/Assets/examples/spineboy/Spineboy.cs.meta b/spine-unity/Assets/Examples/Scripts/SpineGauge.cs.meta similarity index 78% rename from spine-tk2d/Assets/examples/spineboy/Spineboy.cs.meta rename to spine-unity/Assets/Examples/Scripts/SpineGauge.cs.meta index f72d4bd42..7000f17e7 100644 --- a/spine-tk2d/Assets/examples/spineboy/Spineboy.cs.meta +++ b/spine-unity/Assets/Examples/Scripts/SpineGauge.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f759d8e3f055a02448de557d18984e50 +guid: c888ce38da699d143a68153f26379a37 MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/spine-unity/Assets/Examples/Scripts/Spineboy.cs b/spine-unity/Assets/Examples/Scripts/Spineboy.cs index 60d478ce9..da547532c 100644 --- a/spine-unity/Assets/Examples/Scripts/Spineboy.cs +++ b/spine-unity/Assets/Examples/Scripts/Spineboy.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-unity/Assets/Examples/Scripts/SpineboyController.cs b/spine-unity/Assets/Examples/Scripts/SpineboyController.cs index 6e0b04a6a..2a6b4878e 100644 --- a/spine-unity/Assets/Examples/Scripts/SpineboyController.cs +++ b/spine-unity/Assets/Examples/Scripts/SpineboyController.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * SpineboyController created by Mitch Thompson @@ -107,4 +79,4 @@ public class SpineboyController : MonoBehaviour { } } -} +} \ No newline at end of file diff --git a/spine-tk2d/Assets/Gizmos.meta b/spine-unity/Assets/Examples/Spine/Gauge.meta similarity index 63% rename from spine-tk2d/Assets/Gizmos.meta rename to spine-unity/Assets/Examples/Spine/Gauge.meta index a7b083b0c..4b861b6f6 100644 --- a/spine-tk2d/Assets/Gizmos.meta +++ b/spine-unity/Assets/Examples/Spine/Gauge.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a260a1ff5965c2c4f88aea3e7d433965 +guid: 850ff16a039121a48a7cf86e301ef1fa folderAsset: yes DefaultImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Gauge/Gauge.atlas.txt b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.atlas.txt new file mode 100644 index 000000000..65905464f --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.atlas.txt @@ -0,0 +1,27 @@ + +Gauge.png +size: 1024,64 +format: RGBA8888 +filter: Linear,Linear +repeat: none +Background + rotate: false + xy: 254, 30 + size: 224, 32 + orig: 224, 32 + offset: 0, 0 + index: -1 +Bar + rotate: false + xy: 480, 30 + size: 224, 32 + orig: 224, 32 + offset: 0, 0 + index: -1 +Border + rotate: false + xy: 2, 2 + size: 250, 60 + orig: 250, 60 + offset: 0, 0 + index: -1 diff --git a/spine-tk2d/Assets/examples/goblins/goblins-mesh.json.txt.meta b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.atlas.txt.meta similarity index 58% rename from spine-tk2d/Assets/examples/goblins/goblins-mesh.json.txt.meta rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge.atlas.txt.meta index 680370fa4..cf6355bec 100644 --- a/spine-tk2d/Assets/examples/goblins/goblins-mesh.json.txt.meta +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.atlas.txt.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: 03dfe4c9b91b93b47816439a1f91a48a +guid: 6afa4952627478a44995c3cdf2e96a24 TextScriptImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Gauge/Gauge.json b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.json new file mode 100644 index 000000000..cad689354 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.json @@ -0,0 +1,42 @@ +{ +"skeleton": { "hash": "IKLl/62j+Y1bsQ8rdHoVK9PDip8", "spine": "2.1.27", "width": 250, "height": 60, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "Bar", "parent": "root", "x": -112.29 } +], +"slots": [ + { "name": "Background", "bone": "root", "attachment": "Background" }, + { "name": "Bar", "bone": "Bar", "attachment": "Bar" }, + { "name": "Border", "bone": "root", "attachment": "Border" } +], +"skins": { + "default": { + "Background": { + "Background": { "width": 224, "height": 32 } + }, + "Bar": { + "Bar": { "x": 112.29, "width": 224, "height": 32 } + }, + "Border": { + "Border": { "width": 250, "height": 60 } + } + } +}, +"animations": { + "Fill": { + "bones": { + "Bar": { + "scale": [ + { + "time": 0, + "x": 0.002, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "x": 1, "y": 1 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-tk2d/Assets/spine-csharp/Place spine-csharp src here.txt.meta b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.json.meta similarity index 58% rename from spine-tk2d/Assets/spine-csharp/Place spine-csharp src here.txt.meta rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge.json.meta index f9ee3e6ef..44784c8ac 100644 --- a/spine-tk2d/Assets/spine-csharp/Place spine-csharp src here.txt.meta +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.json.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: 796664cab7a50f94d92f55ed41f7f5b1 +guid: af5e86c10d52bad43b0b62542815f199 TextScriptImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png new file mode 100644 index 000000000..a15e857d2 Binary files /dev/null and b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-subMeshRenderer.png.meta b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png.meta similarity index 87% rename from spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-subMeshRenderer.png.meta rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge.png.meta index 35500c50d..ad72c705a 100644 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-subMeshRenderer.png.meta +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png.meta @@ -1,11 +1,11 @@ fileFormatVersion: 2 -guid: f31c0c0d608e8ba4f9a1afb032092287 +guid: a11301aad15ed6b4995485a02a81b132 TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 linearTexture: 0 correctGamma: 0 fadeOut: 0 @@ -21,8 +21,8 @@ TextureImporter: grayScaleToAlpha: 0 generateCubemap: 0 seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 1024 + textureFormat: -3 + maxTextureSize: 2048 textureSettings: filterMode: -1 aniso: -1 @@ -39,7 +39,7 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 - textureType: -1 + textureType: 5 buildTargetSettings: [] spriteSheet: sprites: [] diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero_Atlas.asset b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Atlas.asset similarity index 93% rename from spine-unity/Assets/Examples/Spine/Hero/Hero_Atlas.asset rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge_Atlas.asset index 23e4c11af..8459768c9 100644 Binary files a/spine-unity/Assets/Examples/Spine/Hero/Hero_Atlas.asset and b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Atlas.asset differ diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/GoblinsAtlas.prefab.meta b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Atlas.asset.meta similarity index 58% rename from spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/GoblinsAtlas.prefab.meta rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge_Atlas.asset.meta index d04510ff6..471fc2038 100644 --- a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/GoblinsAtlas.prefab.meta +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Atlas.asset.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: 31c989bbbeeeab24e99b68ac7975d2b8 +guid: e888132736b335e4c88bc0a283b474c6 NativeFormatImporter: userData: diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0 material.mat b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat similarity index 92% rename from spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0 material.mat rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat index 4628c57e2..ca7165be3 100644 Binary files a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0 material.mat and b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat differ diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0 material.mat.meta b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat.meta similarity index 58% rename from spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0 material.mat.meta rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat.meta index d30a0f6fe..7b7b3aaa2 100644 --- a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data/atlas0 material.mat.meta +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: 0b38b0b706d87b04ab4621c37c7d5019 +guid: 9ab9bdbda020b3e46b5a3b0558ef591d NativeFormatImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero_SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_SkeletonData.asset similarity index 83% rename from spine-unity/Assets/Examples/Spine/Hero/Hero_SkeletonData.asset rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge_SkeletonData.asset index a58b793c1..089e29b45 100644 Binary files a/spine-unity/Assets/Examples/Spine/Hero/Hero_SkeletonData.asset and b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_SkeletonData.asset differ diff --git a/spine-tk2d/Assets/examples/goblins/Goblins SkeletonData.asset.meta b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_SkeletonData.asset.meta similarity index 58% rename from spine-tk2d/Assets/examples/goblins/Goblins SkeletonData.asset.meta rename to spine-unity/Assets/Examples/Spine/Gauge/Gauge_SkeletonData.asset.meta index 8aaba0e3b..bc8aafee8 100644 --- a/spine-tk2d/Assets/examples/goblins/Goblins SkeletonData.asset.meta +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_SkeletonData.asset.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: 4a195bd4c354a814b86d191f4921f54b +guid: 22b19a38b21c15a48854f0db86b0b7d3 NativeFormatImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero.json b/spine-unity/Assets/Examples/Spine/Hero/Hero.json deleted file mode 100644 index 779358832..000000000 --- a/spine-unity/Assets/Examples/Spine/Hero/Hero.json +++ /dev/null @@ -1 +0,0 @@ -{"skeleton":{"hash":"HgQWv1l5JEhat9uM4FCui4sIRRA","spine":"2.0.16","width":188.38,"height":331.24},"bones":[{"name":"root"},{"name":"Hip","parent":"root","y":94.88},{"name":"L_Ground","parent":"root","x":-31.28,"y":0.26,"color":"00ff00ff"},{"name":"LookTarget","parent":"root","x":112.83,"y":218.2,"color":"8a009bff"},{"name":"R_Ground","parent":"root","x":28.11,"y":0.26,"color":"ff0000ff"},{"name":"L_Ankle","parent":"L_Ground","x":0.26,"y":33.05,"color":"ff3f00ff"},{"name":"LookConstraintGoal","parent":"LookTarget","y":-43.82,"color":"ff3f00ff"},{"name":"R_Ankle","parent":"R_Ground","y":31.79,"color":"ff3f00ff"},{"name":"body","parent":"Hip","length":60.79,"x":4.09,"y":3.17,"rotation":92.7},{"name":"thigh1","parent":"Hip","length":23.94,"x":-17.51,"y":-5.22,"rotation":-107.07},{"name":"thigh2","parent":"Hip","length":23.65,"x":21.85,"y":-5.86,"rotation":-85.46},{"name":"head","parent":"body","length":24.35,"x":74.55,"y":-4.84,"rotation":-92.69},{"name":"mantles","parent":"body","x":48.47,"y":-9,"rotation":-2.25},{"name":"shin1","parent":"thigh1","length":28.23,"x":29.76,"y":-0.91,"rotation":10.26},{"name":"shin2","parent":"thigh2","length":25.35,"x":31.99,"y":2.96,"rotation":-2.25},{"name":"upperarm1","parent":"body","length":19.35,"x":52.49,"y":41.84,"rotation":130.11},{"name":"upperarm2","parent":"body","length":25.98,"x":57.94,"y":-38.93,"rotation":-178.95},{"name":"capeRoot","parent":"mantles","x":19.61,"y":14.01,"rotation":-90.45},{"name":"foot1","parent":"shin1","length":27.07,"x":28.17,"y":-0.48,"rotation":-90.96,"inheritRotation":false},{"name":"foot2","parent":"shin2","length":22.28,"x":25.54,"y":0.27,"rotation":-90.42,"inheritRotation":false},{"name":"forearm1","parent":"upperarm1","length":22.06,"x":23.97,"y":5.16,"rotation":30.56},{"name":"forearm2","parent":"upperarm2","length":15.3,"x":28.74,"y":-0.9,"rotation":6.79},{"name":"cape1","parent":"capeRoot","length":29.18,"x":-2.88,"y":-14.83,"rotation":-102.96},{"name":"hand1","parent":"forearm1","length":28.01,"x":27.54,"y":0.44,"rotation":16.24},{"name":"hand2","parent":"forearm2","length":23.76,"x":22.8,"y":-0.21,"rotation":1.35},{"name":"cape2","parent":"cape1","length":30.14,"x":29.18,"y":-0.06,"rotation":2.27},{"name":"weapon","parent":"hand2","length":157.4,"x":15.97,"y":1.43,"rotation":77.9},{"name":"cape3","parent":"cape2","length":32.51,"x":30.14,"y":0.22,"rotation":1.8},{"name":"cape4","parent":"cape3","length":33.02,"x":32.51,"y":0.06,"rotation":4.95}],"ik":[{"name":"L_Leg","bones":["thigh1","shin1"],"target":"L_Ankle","bendPositive":false},{"name":"R_Leg","bones":["thigh2","shin2"],"target":"R_Ankle","bendPositive":false},{"name":"LookConstraint","bones":["head"],"target":"LookConstraintGoal","mix":0}],"slots":[{"name":"cape","bone":"capeRoot","attachment":"cape"},{"name":"upperarm2","bone":"upperarm2","attachment":"upperarm2"},{"name":"hand2","bone":"hand2","attachment":"hand2"},{"name":"weapon","bone":"weapon","attachment":"Sword"},{"name":"fingers","bone":"hand2","attachment":"fingers"},{"name":"forearm2","bone":"forearm2","attachment":"forearm2"},{"name":"thigh2","bone":"thigh2","attachment":"thigh2"},{"name":"foot2","bone":"foot2","attachment":"foot2"},{"name":"shin2","bone":"shin2","attachment":"shin2"},{"name":"thigh1","bone":"thigh1","attachment":"thigh1"},{"name":"foot1","bone":"foot1","attachment":"foot1"},{"name":"shin1","bone":"shin1","attachment":"shin1"},{"name":"body","bone":"body","attachment":"body"},{"name":"upperarm1","bone":"upperarm1","attachment":"upperarm1"},{"name":"forearm1","bone":"forearm1","attachment":"forearm1"},{"name":"hand1","bone":"hand1","attachment":"hand1"},{"name":"mantles","bone":"mantles","attachment":"mantles"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth","bone":"head","attachment":"mouth"},{"name":"eyes","bone":"head","attachment":"eyes"},{"name":"sword","bone":"root"}],"skins":{"default":{},"White":{"body":{"body":{"name":"White/body","x":27.57,"y":2.29,"rotation":-92.7,"width":97,"height":95}},"cape":{"cape":{"name":"White/cape","type":"skinnedmesh","uvs":[0.1298,0.04145,0.25,0,0.5,0,0.75,0,1,0,0.94074,0.25,0.90405,0.5,0.90969,0.75259,0.82336,1,0.55643,1,0.28104,1,0,1,0,0.75518,0.02821,0.5,0.05926,0.25,0.25,0.25,0.25,0.5,0.25,0.75,0.5,0.25,0.5,0.5,0.5,0.75,0.75,0.25,0.75,0.5,0.75,0.75],"triangles":[20,22,23,23,6,7,12,13,17,11,12,17,10,17,20,11,17,10,9,20,23,10,20,9,8,23,7,9,23,8,13,16,17,17,19,20,14,15,16,13,14,16,16,18,19,19,21,22,17,16,19,20,19,22,23,22,6,0,1,15,14,0,15,15,2,18,18,3,21,16,15,18,19,18,21,6,22,21,5,6,21,15,1,2,18,2,3,5,21,3,4,5,3],"vertices":[2,17,-83.99,12.58,0.46604,22,-8.57,-85.18,0.53395,2,17,-47.49,12.58,0.68358,22,-16.73,-49.61,0.31641,1,17,-10.99,12.58,1,1,17,25.5,12.58,1,1,17,62,12.58,1,5,17,62,-27.16,0.46827,22,-2.49,66,0.34919,25,-29.04,67.26,0.138,27,-57.05,68.86,0.03802,28,-83.3,76.26,0.0065,5,17,62,-66.91,0.10393,22,36.24,74.89,0.24994,25,10.01,74.62,0.32221,27,-17.77,74.99,0.22166,28,-43.64,78.98,0.10223,5,17,62,-106.66,0.00721,22,74.98,83.79,0.07037,25,49.07,81.98,0.23464,27,21.49,81.11,0.35566,28,-3.99,81.69,0.3321,4,22,121.89,57.11,6.8E-4,25,94.89,53.47,0.03735,27,66.39,51.18,0.18593,28,38.16,48,0.77602,3,25,101.65,17.6,1.8E-4,27,72.02,15.11,0.0066,28,40.65,11.58,0.9932,2,27,77.64,-20.94,0.05302,28,43.15,-24.82,0.94697,3,25,115.16,-54.13,0.00351,27,83.27,-57,0.13964,28,45.65,-61.23,0.85684,4,22,107.65,-58.5,0.02404,25,76.1,-61.49,0.08882,27,43.99,-63.13,0.31703,28,5.99,-63.95,0.57009,5,17,-83.99,-66.91,0.00248,22,68.91,-67.39,0.18233,25,37.04,-68.85,0.31987,27,4.72,-69.26,0.35134,28,-33.66,-66.67,0.14396,5,17,-83.99,-27.16,0.05345,22,30.17,-76.29,0.47788,25,-2.02,-76.21,0.33484,27,-34.55,-75.38,0.12468,28,-73.31,-69.39,0.00913,5,17,-47.49,-27.16,0.04861,22,22,-40.71,0.52446,25,-8.77,-40.34,0.34709,27,-40.17,-39.32,0.07735,28,-75.81,-32.98,0.00247,4,22,60.74,-31.82,0.12714,25,30.28,-32.98,0.45018,27,-0.9,-33.19,0.37754,28,-36.15,-30.26,0.04511,4,22,99.48,-22.92,0.00852,25,69.34,-25.62,0.04332,27,38.37,-27.07,0.37472,28,3.49,-27.54,0.57342,1,22,13.83,-5.14,1,2,25,23.52,2.88,0.74116,27,-6.52,2.86,0.25883,3,25,62.59,10.24,0.01792,27,32.74,8.99,0.48072,28,1,8.87,0.50134,5,17,25.5,-27.16,0.37653,22,5.66,30.42,0.49807,25,-22.29,31.39,0.10748,27,-51.42,32.8,0.01629,28,-80.8,39.84,0.0016,5,17,25.5,-66.91,0.05159,22,44.41,39.32,0.2736,25,16.77,38.75,0.45121,27,-12.15,38.92,0.18086,28,-41.15,42.56,0.0427,5,17,25.5,-106.66,1.7E-4,22,83.15,48.21,0.01708,25,55.83,46.11,0.12238,27,27.12,45.05,0.35747,28,-1.49,45.28,0.50287],"hull":15,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,16,18,18,20,20,22,22,24,24,26,26,28,28,0,14,16],"width":146,"height":159}},"eyes":{"eyes":{"name":"White/eyes","x":6.48,"y":50.75,"rotation":0.12,"width":82,"height":31}},"fingers":{"fingers":{"name":"White/fingers","x":16.21,"y":1.37,"rotation":82.36,"width":31,"height":33}},"foot1":{"foot1":{"name":"White/foot1","x":12.55,"y":0.12,"rotation":90.96,"width":50,"height":42}},"foot2":{"foot2":{"name":"White/foot2","x":8.83,"y":2.92,"rotation":90.42,"width":53,"height":38}},"forearm1":{"forearm1":{"name":"White/forearm1","x":11.88,"y":-5.04,"rotation":106.61,"width":41,"height":49}},"forearm2":{"forearm2":{"name":"White/forearm2","x":13.08,"y":-0.63,"rotation":83.71,"width":31,"height":32}},"hand1":{"hand1":{"name":"White/hand1","x":11.92,"y":-0.7,"rotation":90.37,"width":37,"height":48}},"hand2":{"hand2":{"name":"White/hand2","x":14.23,"y":1.64,"rotation":82.36,"width":31,"height":37}},"head":{"head":{"name":"White/head","x":9.43,"y":71.75,"rotation":0.12,"width":172,"height":173}},"mantles":{"mantles":{"name":"White/mantles","x":12.71,"y":16.68,"rotation":-90.45,"width":136,"height":55}},"mouth":{"mouth":{"name":"White/mouth","x":12.07,"y":10.76,"rotation":0.12,"width":61,"height":13}},"shin1":{"shin1":{"name":"White/shin1","x":8.95,"y":0.67,"rotation":96.8,"width":53,"height":57}},"shin2":{"shin2":{"name":"White/shin2","x":2.25,"y":-2.94,"rotation":87.71,"width":51,"height":54}},"thigh1":{"thigh1":{"name":"White/thigh1","x":11.98,"y":-1.01,"rotation":107.07,"width":60,"height":63}},"thigh2":{"thigh2":{"name":"White/thigh2","x":15.7,"y":-4.61,"rotation":85.46,"width":57,"height":64}},"upperarm1":{"upperarm1":{"name":"White/upperarm1","x":6.6,"y":0.05,"rotation":137.18,"width":50,"height":56}},"upperarm2":{"upperarm2":{"name":"White/upperarm2","x":13.32,"y":-2.21,"rotation":90.45,"width":39,"height":59}}}},"events":{"Footstep":{}},"animations":{"Crouch":{"bones":{"upperarm2":{"rotate":[{"time":0,"angle":28.82,"curve":"stepped"},{"time":1,"angle":28.82}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":-36.77,"curve":"stepped"},{"time":1,"angle":-36.77}],"translate":[{"time":0,"x":-0.41,"y":-2.32,"curve":"stepped"},{"time":1,"x":-0.41,"y":-2.32}]},"head":{"rotate":[{"time":0,"angle":30.45,"curve":"stepped"},{"time":1,"angle":30.45}],"translate":[{"time":0,"x":-4.42,"y":-2.85,"curve":[0.361,0.63,0.697,1]},{"time":0.1666,"x":-4.84,"y":-3.05,"curve":[0.25,0,0.75,1]},{"time":0.6666,"x":-2.35,"y":-1.86,"curve":[0.36,0.43,0.701,0.8]},{"time":1,"x":-4.42,"y":-2.85}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-11.22,"y":-29.62,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":-11.22,"y":-27.36,"curve":[0.25,0,0.75,1]},{"time":1,"x":-11.22,"y":-29.62}]},"mantles":{"rotate":[{"time":0,"angle":5.17,"curve":"stepped"},{"time":1,"angle":5.17}],"translate":[{"time":0,"x":-0.09,"y":0,"curve":"stepped"},{"time":1,"x":-0.09,"y":0}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-10.04,"y":1.18,"curve":"stepped"},{"time":1,"x":-10.04,"y":1.18}]},"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":29.75,"curve":"stepped"},{"time":1,"angle":29.75}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":10.14,"curve":"stepped"},{"time":1,"angle":10.14}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":29.22,"curve":"stepped"},{"time":1,"angle":29.22}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape3":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":17.64,"curve":"stepped"},{"time":1,"angle":17.64}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"capeRoot":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"Fall":{"bones":{"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":13.15,"y":7.94,"curve":"stepped"},{"time":1,"x":13.15,"y":7.94}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":35.34,"y":4.14,"curve":"stepped"},{"time":1,"x":35.34,"y":4.14}]},"foot1":{"rotate":[{"time":0,"angle":19.62,"curve":"stepped"},{"time":1,"angle":19.62}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":39.16,"curve":"stepped"},{"time":1,"angle":39.16}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":14.13,"curve":"stepped"},{"time":1,"angle":14.13}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":-17.81,"curve":"stepped"},{"time":1,"angle":-17.81}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":-25.71,"curve":"stepped"},{"time":1,"angle":-25.71}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":26.18,"curve":"stepped"},{"time":1,"angle":26.18}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":37.75,"curve":"stepped"},{"time":1,"angle":37.75}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":12.3,"curve":"stepped"},{"time":1,"angle":12.3}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"mantles":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"capeRoot":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape3":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"Idle":{"bones":{"upperarm2":{"rotate":[{"time":0,"angle":17.45}],"translate":[{"time":0,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":0,"y":-3.7,"curve":[0.25,0,0.75,1]},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-1.06,"y":0,"curve":[0.382,0.57,0.735,1]},{"time":0.1666,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.6666,"x":-3.74,"y":0,"curve":[0.243,0,0.648,0.6]},{"time":1,"x":-1.06,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":-0.07,"curve":[0.32,0.28,0.757,1]},{"time":0.4,"x":0,"y":-0.6,"curve":[0.25,0,0.75,1]},{"time":0.9,"x":0,"y":0,"curve":[0.284,0,0.625,0.38]},{"time":1,"x":0,"y":-0.07}]},"mantles":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-0.09,"y":0,"curve":[0.3,0.21,0.755,1]},{"time":0.4333,"x":-1.41,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.9333,"x":0,"y":0},{"time":1,"x":-0.09,"y":0}]},"L_Ground":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"R_Ground":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"foot1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape4":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape3":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"capeRoot":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]}}},"Jump":{"bones":{"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-6.83,"y":12.06,"curve":"stepped"},{"time":1,"x":-6.83,"y":12.06}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":2.41,"y":1.2,"curve":"stepped"},{"time":1,"x":2.41,"y":1.2}]},"foot1":{"rotate":[{"time":0,"angle":-32.23,"curve":"stepped"},{"time":1,"angle":-32.23}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":-33.3,"curve":"stepped"},{"time":1,"angle":-33.3}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":-10.4,"curve":"stepped"},{"time":1,"angle":-10.4}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":4.89,"curve":"stepped"},{"time":1,"angle":4.89}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":22.69,"curve":"stepped"},{"time":1,"angle":22.69}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":56.41,"curve":"stepped"},{"time":1,"angle":56.41}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":23.71,"curve":"stepped"},{"time":1,"angle":23.71}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":20.06,"curve":"stepped"},{"time":1,"angle":20.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"mantles":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"capeRoot":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape3":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"cape4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"Run":{"bones":{"L_Ground":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":2.23,"y":9},{"time":0.1666,"x":56.67,"y":22.49},{"time":0.2666,"x":43.56,"y":1.28},{"time":0.4333,"x":-13.3,"y":22.52},{"time":0.5,"x":2.23,"y":9}]},"foot1":{"rotate":[{"time":0,"angle":-65.99},{"time":0.2666,"angle":-3.82},{"time":0.4333,"angle":-46.96},{"time":0.5,"angle":-65.99}],"translate":[{"time":0,"x":0,"y":0}]},"R_Ground":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-21.78,"y":0},{"time":0.1666,"x":-76.89,"y":42.65},{"time":0.2666,"x":-64.82,"y":24.22},{"time":0.4333,"x":-1.81,"y":22.99},{"time":0.5,"x":-21.78,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":8.38,"y":0},{"time":0.1666,"x":30.15,"y":-1.89},{"time":0.2666,"x":19.46,"y":0},{"time":0.5,"x":8.38,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-12.98,"y":0},{"time":0.2666,"x":-32.47,"y":0},{"time":0.4333,"x":1.24,"y":0},{"time":0.5,"x":-12.98,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-59.27},{"time":0.2666,"angle":-51.98},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":-2.17},{"time":0.1666,"x":0,"y":6.43},{"time":0.2666,"x":0,"y":-2.17},{"time":0.4333,"x":0,"y":6.43},{"time":0.5,"x":0,"y":-2.17}]},"body":{"rotate":[{"time":0,"angle":-11.09}],"translate":[{"time":0,"x":0,"y":-1.19},{"time":0.1333,"x":0,"y":1.37},{"time":0.2,"x":0,"y":-2.29},{"time":0.3666,"x":0,"y":1.37},{"time":0.4666,"x":0,"y":-2.29},{"time":0.5,"x":0,"y":-1.19}]},"mantles":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0.72,"y":0},{"time":0.1333,"x":2.4,"y":0},{"time":0.2,"x":0,"y":0},{"time":0.3666,"x":2.4,"y":0},{"time":0.4666,"x":0,"y":0},{"time":0.5,"x":0.72,"y":0}]},"head":{"rotate":[{"time":0,"angle":7.24}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":1.87,"y":0},{"time":0.2666,"x":0,"y":0},{"time":0.4333,"x":1.87,"y":0},{"time":0.5,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":15.52,"curve":[0.362,0.44,0.754,1]},{"time":0.1666,"angle":-6.77,"curve":[0.25,0,0.75,1]},{"time":0.4,"angle":28.5},{"time":0.5,"angle":15.52}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.1666,"x":1.26,"y":0.47,"curve":[0.25,0,0.75,1]},{"time":0.2666,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.4333,"x":1.26,"y":0.47,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":21.03,"curve":[0.381,0.54,0.742,1]},{"time":0.1,"angle":24.38},{"time":0.2,"angle":21,"curve":[0.25,0,0.75,1]},{"time":0.3666,"angle":15.26,"curve":[0.245,0,0.637,0.55]},{"time":0.5,"angle":21.03}],"translate":[{"time":0,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":-3.88,"curve":[0.351,0.4,0.756,1]},{"time":0.1666,"angle":3.82,"curve":[0.25,0,0.75,1]},{"time":0.4333,"angle":353.05,"curve":[0.264,0,0.617,0.42]},{"time":0.5,"angle":-3.88}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.1666,"x":4.66,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.2666,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.4333,"x":4.66,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":11.12}],"translate":[{"time":0,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":6.7}],"translate":[{"time":0,"x":0,"y":0}]},"cape4":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape3":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"capeRoot":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]}},"events":[{"time":0.2666,"name":"Footstep"},{"time":0.5,"name":"Footstep"}]},"Walk":{"bones":{"L_Ground":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.243,0,0.648,0.6]},{"time":0.3333,"x":40.32,"y":14.53,"curve":[0.382,0.57,0.735,1]},{"time":0.5,"x":56.3,"y":0,"curve":[0.25,0,0.75,1]},{"time":1,"x":0,"y":0}]},"R_Ground":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":-53.31,"y":0,"curve":[0.243,0,0.648,0.6]},{"time":0.8333,"x":-15.12,"y":14.53,"curve":[0.382,0.57,0.735,1]},{"time":1,"x":0,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":20.55,"y":0,"curve":[0.25,0,0.75,1]},{"time":1,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":-26.21,"y":0,"curve":[0.25,0,0.75,1]},{"time":1,"x":0,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":-2.43,"curve":[0.25,0,0.75,1]},{"time":0.3333,"x":0,"y":0.61,"curve":[0.25,0,0.775,0.71]},{"time":0.5,"x":0,"y":-2.43,"curve":[0.25,0,0.75,1]},{"time":0.8333,"x":0,"y":1.22,"curve":[0.25,0,0.772,0.7]},{"time":1,"x":0,"y":-2.43}]},"body":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":-0.96,"curve":[0.362,0.44,0.754,1]},{"time":0.1,"x":0,"y":-3.66,"curve":[0.25,0,0.75,1]},{"time":0.4333,"x":0,"y":0.6,"curve":[0.25,0,0.75,1]},{"time":0.6,"x":0,"y":-3.66,"curve":[0.25,0,0.75,1]},{"time":0.9333,"x":0,"y":0.6,"curve":[0.257,0,0.618,0.45]},{"time":1,"x":0,"y":-0.96}]},"head":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":2.77,"y":0,"curve":[0.32,0.28,0.757,1]},{"time":0.1333,"x":0,"y":0},{"time":0.4666,"x":3.19,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.6333,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.9666,"x":3.19,"y":0,"curve":[0.284,0,0.625,0.38]},{"time":1,"x":2.77,"y":0}]},"mantles":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0.94,"y":0,"curve":[0.381,0.54,0.742,1]},{"time":0.0666,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.4,"x":2.57,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.5666,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.9,"x":2.57,"y":0,"curve":[0.245,0,0.637,0.55]},{"time":1,"x":0.94,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":29.95,"curve":[0.25,0,0.75,1]},{"time":0.5,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1,"angle":29.95}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.29,"y":1.41},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":-1.29,"y":1.41},{"time":1,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"capeRoot":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"foot1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape3":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"cape4":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]}},"events":[{"time":0.5,"name":"Footstep"},{"time":1,"name":"Footstep"}]}}} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero.json.meta b/spine-unity/Assets/Examples/Spine/Hero/Hero.json.meta deleted file mode 100644 index 652ef27f6..000000000 --- a/spine-unity/Assets/Examples/Spine/Hero/Hero.json.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 4d269c9fcaaba024fb93b58c75bcafdd -TextScriptImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero.png b/spine-unity/Assets/Examples/Spine/Hero/Hero.png deleted file mode 100644 index 5965f56cd..000000000 Binary files a/spine-unity/Assets/Examples/Spine/Hero/Hero.png and /dev/null differ diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero_Atlas.asset.meta b/spine-unity/Assets/Examples/Spine/Hero/Hero_Atlas.asset.meta deleted file mode 100644 index 16f296767..000000000 --- a/spine-unity/Assets/Examples/Spine/Hero/Hero_Atlas.asset.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: a071d9faa273ab047939cccdcacddc55 -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero_Material.mat.meta b/spine-unity/Assets/Examples/Spine/Hero/Hero_Material.mat.meta deleted file mode 100644 index 538569558..000000000 --- a/spine-unity/Assets/Examples/Spine/Hero/Hero_Material.mat.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 380672bd303e2764eb47728ead477b19 -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero_SkeletonData.asset.meta b/spine-unity/Assets/Examples/Spine/Hero/Hero_SkeletonData.asset.meta deleted file mode 100644 index 9d4301298..000000000 --- a/spine-unity/Assets/Examples/Spine/Hero/Hero_SkeletonData.asset.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 6ba8c33ba732ee34290c79f1d69e0d55 -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero.atlas.txt b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.atlas.txt similarity index 66% rename from spine-unity/Assets/Examples/Spine/Hero/Hero.atlas.txt rename to spine-unity/Assets/Examples/Spine/Hero/hero-mesh.atlas.txt index ff310bedc..49b84507d 100644 --- a/spine-unity/Assets/Examples/Spine/Hero/Hero.atlas.txt +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.atlas.txt @@ -1,138 +1,145 @@ -Hero.png -size: 512,256 +hero-mesh.png +size: 1024,256 format: RGBA8888 filter: Linear,Linear repeat: none -White/body - rotate: true - xy: 172, 0 +body + rotate: false + xy: 324, 81 size: 97, 95 orig: 97, 95 offset: 0, 0 index: -1 -White/cape +cape rotate: false - xy: 172, 97 + xy: 176, 88 size: 146, 159 orig: 146, 159 offset: 0, 0 index: -1 -White/eyes - rotate: true - xy: 267, 15 +eyes + rotate: false + xy: 604, 216 size: 82, 31 orig: 82, 31 offset: 0, 0 index: -1 -White/fingers - rotate: true - xy: 371, 85 +fingers + rotate: false + xy: 877, 214 size: 31, 33 orig: 31, 33 offset: 0, 0 index: -1 -White/foot1 - rotate: true - xy: 426, 151 +foot1 + rotate: false + xy: 743, 205 size: 50, 42 orig: 50, 42 offset: 0, 0 index: -1 -White/foot2 +foot2 rotate: false - xy: 318, 99 + xy: 688, 209 size: 53, 38 orig: 53, 38 offset: 0, 0 index: -1 -White/forearm1 +forearm1 rotate: false - xy: 468, 154 + xy: 795, 198 size: 41, 49 orig: 41, 49 offset: 0, 0 index: -1 -White/forearm2 +forearm2 rotate: false - xy: 412, 115 + xy: 910, 215 size: 31, 32 orig: 31, 32 offset: 0, 0 index: -1 -White/hand1 - rotate: true - xy: 110, 7 +hand1 + rotate: false + xy: 838, 199 size: 37, 48 orig: 37, 48 offset: 0, 0 index: -1 -White/hand2 - rotate: true - xy: 375, 116 +hand2 + rotate: false + xy: 286, 49 size: 31, 37 orig: 31, 37 offset: 0, 0 index: -1 -White/head +head rotate: false - xy: 0, 83 + xy: 2, 74 size: 172, 173 orig: 172, 173 offset: 0, 0 index: -1 -White/mantles +mantles rotate: false - xy: 318, 201 + xy: 2, 17 size: 136, 55 orig: 136, 55 offset: 0, 0 index: -1 -White/mouth - rotate: true - xy: 298, 36 +mouth + rotate: false + xy: 2, 2 size: 61, 13 orig: 61, 13 offset: 0, 0 index: -1 -White/shin1 - rotate: true - xy: 454, 203 +shin1 + rotate: false + xy: 482, 119 size: 53, 57 orig: 53, 57 offset: 0, 0 index: -1 -White/shin2 +shin2 rotate: false - xy: 375, 147 + xy: 192, 32 size: 51, 54 orig: 51, 54 offset: 0, 0 index: -1 -White/thigh1 +sword rotate: false - xy: 0, 20 + xy: 324, 178 + size: 216, 69 + orig: 216, 69 + offset: 0, 0 + index: -1 +thigh1 + rotate: false + xy: 542, 184 size: 60, 63 orig: 60, 63 offset: 0, 0 index: -1 -White/thigh2 +thigh2 rotate: false - xy: 318, 137 + xy: 423, 112 size: 57, 64 orig: 57, 64 offset: 0, 0 index: -1 -White/upperarm1 +upperarm1 rotate: false - xy: 60, 27 + xy: 140, 16 size: 50, 56 orig: 50, 56 offset: 0, 0 index: -1 -White/upperarm2 - rotate: true - xy: 110, 44 +upperarm2 + rotate: false + xy: 245, 27 size: 39, 59 orig: 39, 59 offset: 0, 0 diff --git a/spine-tk2d/Assets/examples/spineboy/spineboy.json.txt.meta b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.atlas.txt.meta similarity index 58% rename from spine-tk2d/Assets/examples/spineboy/spineboy.json.txt.meta rename to spine-unity/Assets/Examples/Spine/Hero/hero-mesh.atlas.txt.meta index 359dc92fe..92641467f 100644 --- a/spine-tk2d/Assets/examples/spineboy/spineboy.json.txt.meta +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.atlas.txt.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: 153d8a09aeac7fa468630055fbf61c00 +guid: 0517c1f3a6aec5740aad7827a823c3db TextScriptImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.json b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.json new file mode 100644 index 000000000..c410ba2f8 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.json @@ -0,0 +1,3957 @@ +{ +"skeleton": { "hash": "sLectEdYW+yr4heE5DG180o7KDg", "spine": "2.1.27", "width": 318.74, "height": 333.7, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "Hip", "parent": "root", "y": 94.88 }, + { "name": "L_Ground", "parent": "root", "x": -31.28, "y": 0.26, "color": "00ff00ff" }, + { "name": "LookTarget", "parent": "root", "x": 112.83, "y": 218.2, "color": "8a009bff" }, + { "name": "R_Ground", "parent": "root", "x": 28.11, "y": 0.26, "color": "ff0000ff" }, + { "name": "L_Ankle", "parent": "L_Ground", "x": 0.26, "y": 33.05, "color": "ff3f00ff" }, + { "name": "LookConstraintGoal", "parent": "LookTarget", "y": -43.82, "color": "ff3f00ff" }, + { "name": "R_Ankle", "parent": "R_Ground", "y": 31.79, "color": "ff3f00ff" }, + { "name": "body", "parent": "Hip", "length": 60.79, "x": 4.09, "y": 3.17, "rotation": 96.39 }, + { "name": "thigh1", "parent": "Hip", "length": 23.94, "x": -17.51, "y": -5.22, "rotation": -107.07 }, + { "name": "thigh2", "parent": "Hip", "length": 23.65, "x": 21.85, "y": -5.86, "rotation": -85.46 }, + { "name": "head", "parent": "body", "length": 24.35, "x": 74.55, "y": -4.84, "rotation": -92.69 }, + { "name": "mantles", "parent": "body", "x": 48.47, "y": -9, "rotation": -2.25 }, + { "name": "shin1", "parent": "thigh1", "length": 28.23, "x": 29.76, "y": -0.91, "rotation": 10.26 }, + { "name": "shin2", "parent": "thigh2", "length": 25.35, "x": 31.99, "y": 2.96, "rotation": -2.25 }, + { "name": "upperarm1", "parent": "body", "length": 19.35, "x": 52.49, "y": 41.84, "rotation": 130.11 }, + { "name": "upperarm2", "parent": "body", "length": 25.98, "x": 57.94, "y": -38.93, "rotation": -178.95 }, + { "name": "bone2", "parent": "head", "x": 12.91, "y": 110.65 }, + { "name": "capeRoot", "parent": "mantles", "x": 19.61, "y": 14.01, "rotation": -90.45 }, + { "name": "foot1", "parent": "shin1", "length": 27.07, "x": 28.17, "y": -0.48, "rotation": -90.96, "inheritRotation": false }, + { "name": "foot2", "parent": "shin2", "length": 22.28, "x": 25.54, "y": 0.27, "rotation": -90.42, "inheritRotation": false }, + { "name": "forearm1", "parent": "upperarm1", "length": 22.06, "x": 23.97, "y": 5.16, "rotation": 30.56 }, + { "name": "forearm2", "parent": "upperarm2", "length": 15.3, "x": 28.74, "y": -0.9, "rotation": 6.79 }, + { "name": "hair01", "parent": "head", "x": 60.52, "y": 86.71 }, + { "name": "cape1", "parent": "capeRoot", "length": 29.18, "x": -2.88, "y": -14.83, "rotation": -102.96 }, + { "name": "hand1", "parent": "forearm1", "length": 28.01, "x": 27.54, "y": 0.44, "rotation": 16.24 }, + { "name": "hand2", "parent": "forearm2", "length": 23.76, "x": 22.8, "y": -0.21, "rotation": 1.35 }, + { "name": "cape2", "parent": "cape1", "length": 30.14, "x": 29.18, "y": -0.06, "rotation": 2.27 }, + { "name": "weapon", "parent": "hand2", "length": 157.4, "x": 15.97, "y": 1.43, "rotation": 77.9 }, + { "name": "cape3", "parent": "cape2", "length": 32.51, "x": 30.14, "y": 0.22, "rotation": 1.8 }, + { "name": "cape4", "parent": "cape3", "length": 33.02, "x": 32.51, "y": 0.06, "rotation": 4.95 } +], +"ik": [ + { + "name": "L_Leg", + "bones": [ "thigh1", "shin1" ], + "target": "L_Ankle", + "bendPositive": false + }, + { + "name": "R_Leg", + "bones": [ "thigh2", "shin2" ], + "target": "R_Ankle", + "bendPositive": false + }, + { + "name": "LookConstraint", + "bones": [ "head" ], + "target": "LookConstraintGoal", + "mix": 0 + } +], +"slots": [ + { "name": "cape", "bone": "capeRoot", "attachment": "cape" }, + { "name": "upperarm2", "bone": "upperarm2", "attachment": "upperarm2" }, + { "name": "sword", "bone": "root" }, + { "name": "hand2", "bone": "hand2", "attachment": "hand2" }, + { "name": "weapon", "bone": "weapon", "attachment": "sword" }, + { "name": "fingers", "bone": "hand2", "attachment": "fingers" }, + { "name": "forearm2", "bone": "forearm2", "attachment": "forearm2" }, + { "name": "thigh2", "bone": "thigh2", "attachment": "thigh2" }, + { "name": "foot2", "bone": "foot2", "attachment": "foot2" }, + { "name": "shin2", "bone": "shin2", "attachment": "shin2" }, + { "name": "thigh1", "bone": "thigh1", "attachment": "thigh1" }, + { "name": "foot1", "bone": "foot1", "attachment": "foot1" }, + { "name": "body", "bone": "body", "attachment": "body" }, + { "name": "shin1", "bone": "shin1", "attachment": "shin1" }, + { "name": "upperarm1", "bone": "upperarm1", "attachment": "upperarm1" }, + { "name": "mantles", "bone": "mantles", "attachment": "mantles" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "mouth", "bone": "head", "attachment": "mouth" }, + { "name": "eyes", "bone": "head", "attachment": "eyes" }, + { "name": "forearm1", "bone": "forearm1", "attachment": "forearm1" }, + { "name": "hand1", "bone": "hand1", "attachment": "hand1" } +], +"skins": { + "default": { + "body": { + "body": { + "type": "mesh", + "uvs": [ 1, 0.11883, 1, 0.46367, 0.9431, 0.58541, 0.89885, 0.70683, 0.94215, 0.82619, 0.75813, 1, 0.59793, 1, 0.15411, 0.85493, 0, 0.8704, 0.06102, 0.65598, 0.03757, 0.48936, 0, 0.32662, 0, 0, 0.23422, 0, 0.72782, 0, 0.90102, 0, 0.68019, 0.75104, 0.74731, 0.56314, 0.23, 0.54172, 0.31432, 0.27356, 0.19509, 0.68582, 0.73752, 0.28039 ], + "triangles": [ 6, 16, 5, 4, 16, 3, 4, 5, 16, 7, 20, 6, 6, 20, 16, 8, 9, 7, 7, 9, 20, 20, 18, 16, 16, 17, 3, 16, 18, 17, 3, 17, 2, 20, 9, 18, 9, 10, 18, 2, 17, 1, 18, 19, 17, 19, 21, 17, 17, 21, 1, 18, 10, 19, 10, 11, 19, 21, 0, 1, 11, 13, 19, 11, 12, 13, 19, 14, 21, 21, 15, 0, 21, 14, 15, 19, 13, 14 ], + "vertices": [ 63.56, -47.37, 30.83, -45.83, 19.54, -39.77, 8.22, -34.93999, -3.29, -38.61, -18.95, -20, -18.21999, -4.48, -2.43, 37.87, -3.2, 52.87, 16.86, 46, 32.78, 47.53, 48.39, 50.44, 79.39, 48.99, 78.32, 26.29, 76.07, -21.53, 75.29, -38.31, 5.02, -13.56, 22.55, -20.9, 26.93, 29.12, 52, 19.75, 13.42, 33.14, 49.42, -21.22 ], + "hull": 16, + "edges": [ 12, 32, 32, 34, 36, 38, 16, 14, 14, 12, 10, 12, 10, 8, 8, 6, 4, 34, 6, 4, 4, 2, 2, 0, 28, 30, 0, 30, 14, 40, 40, 36, 20, 36, 20, 18, 18, 16, 22, 24, 20, 22, 24, 26, 26, 28, 38, 26, 28, 42, 42, 34, 38, 42, 42, 0, 40, 18, 40, 32, 36, 34 ], + "width": 97, + "height": 95 + } + }, + "cape": { + "cape": { + "type": "skinnedmesh", + "uvs": [ 0.1298, 0.04145, 0.25, 0, 0.5, 0, 0.75, 0, 1, 0, 0.94074, 0.25, 0.90405, 0.5, 0.90969, 0.75259, 0.82336, 1, 0.55643, 1, 0.28104, 1, 0, 1, 0, 0.75518, 0.02821, 0.5, 0.05926, 0.25, 0.25, 0.25, 0.25, 0.5, 0.25, 0.75, 0.5, 0.25, 0.5, 0.5, 0.5, 0.75, 0.75, 0.25, 0.75, 0.5, 0.75, 0.75 ], + "triangles": [ 20, 22, 23, 23, 6, 7, 12, 13, 17, 11, 12, 17, 10, 17, 20, 11, 17, 10, 9, 20, 23, 10, 20, 9, 8, 23, 7, 9, 23, 8, 13, 16, 17, 17, 19, 20, 14, 15, 16, 13, 14, 16, 16, 18, 19, 19, 21, 22, 17, 16, 19, 20, 19, 22, 23, 22, 6, 0, 1, 15, 14, 0, 15, 15, 2, 18, 18, 3, 21, 16, 15, 18, 19, 18, 21, 6, 22, 21, 5, 6, 21, 15, 1, 2, 18, 2, 3, 5, 21, 3, 4, 5, 3 ], + "vertices": [ 2, 18, -71.4, 10.27, 0.46604, 24, -9.13, -72.39, 0.53394, 2, 18, -47.49, 12.58, 0.68358, 24, -16.73, -49.61, 0.31641, 1, 18, -10.99, 12.58, 1, 1, 18, 25.5, 12.58, 1, 1, 18, 62, 12.58, 1, 5, 18, 62, -27.16, 0.46827, 24, -2.49, 66, 0.34919, 27, -29.04, 67.26, 0.138, 29, -57.05, 68.86, 0.03802, 30, -83.3, 76.26, 0.0065, 5, 18, 62, -66.91, 0.10393, 24, 36.24, 74.89, 0.24994, 27, 10.01, 74.62, 0.32221, 29, -17.77, 74.99, 0.22166, 30, -43.64, 78.98, 0.10223, 5, 18, 62, -106.66, 0.00721, 24, 74.98, 83.79, 0.07037, 27, 49.07, 81.98, 0.23464, 29, 21.49, 81.11, 0.35566, 30, -3.99, 81.69, 0.3321, 4, 24, 121.89, 57.11, 6.8E-4, 27, 94.89, 53.47, 0.03735, 29, 66.39, 51.18, 0.18593, 30, 38.16, 48, 0.77602, 3, 27, 101.65, 17.6, 1.8E-4, 29, 72.01999, 15.11, 0.0066, 30, 40.65, 11.58, 0.9932, 2, 29, 77.64, -20.94, 0.05302, 30, 43.15, -24.82, 0.94697, 3, 27, 115.16, -54.13, 0.00351, 29, 83.26999, -57, 0.13964, 30, 45.65, -61.23, 0.85684, 4, 24, 107.65, -58.5, 0.02404, 27, 76.1, -61.49, 0.08882, 29, 43.99, -63.13, 0.31703, 30, 5.99, -63.95, 0.57009, 5, 18, -83.99, -66.91, 0.00248, 24, 68.91, -67.39, 0.18233, 27, 37.04, -68.85, 0.31987, 29, 4.71999, -69.26, 0.35134, 30, -33.66, -66.67, 0.14396, 5, 18, -80.23, -27.03, 0.05345, 24, 29.2, -72.66, 0.47788, 27, -2.84, -72.54, 0.33484, 29, -35.25999, -71.69, 0.12468, 30, -73.69999, -65.65, 0.00913, 5, 18, -47.49, -27.16, 0.04861, 24, 22, -40.71, 0.52446, 27, -8.77, -40.34, 0.34709, 29, -40.16999, -39.32, 0.07735, 30, -75.81, -32.98, 0.00247, 4, 24, 60.74, -31.82, 0.12714, 27, 30.28, -32.98, 0.45018, 29, -0.9, -33.18999, 0.37754, 30, -36.15, -30.26, 0.04511, 4, 24, 99.48, -22.92, 0.00851, 27, 69.33999, -25.62, 0.04332, 29, 38.37, -27.07, 0.37472, 30, 3.49, -27.54, 0.57342, 1, 24, 13.83, -5.14, 1, 2, 27, 23.52, 2.88, 0.74116, 29, -6.52, 2.86, 0.25883, 3, 27, 62.59, 10.24, 0.01792, 29, 32.74, 8.99, 0.48072, 30, 1, 8.87, 0.50133, 5, 18, 25.5, -27.16, 0.37653, 24, 5.66, 30.42, 0.49807, 27, -22.29, 31.39, 0.10748, 29, -51.42, 32.8, 0.01629, 30, -80.8, 39.84, 0.0016, 5, 18, 25.5, -66.91, 0.05159, 24, 44.41, 39.32, 0.2736, 27, 16.77, 38.75, 0.45121, 29, -12.15, 38.91999, 0.18086, 30, -41.15, 42.56, 0.0427, 5, 18, 25.5, -106.66, 1.7E-4, 24, 83.15, 48.21, 0.01708, 27, 55.83, 46.11, 0.12238, 29, 27.12, 45.05, 0.35747, 30, -1.49, 45.28, 0.50287 ], + "hull": 15, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0, 14, 16 ], + "width": 146, + "height": 159 + } + }, + "eyes": { + "eyes": { + "type": "mesh", + "uvs": [ 1, 1, 0.71849, 1, 0.53549, 1, 0, 1, 0, 0, 0.53549, 0, 0.72749, 0, 1, 0 ], + "triangles": [ 1, 6, 0, 6, 7, 0, 6, 1, 5, 3, 5, 2, 1, 2, 5, 3, 4, 5 ], + "vertices": [ 47.51, 35.33, 24.43, 35.28, 9.42, 35.25, -34.48, 35.16, -34.54, 66.16, 9.35999, 66.25, 25.1, 66.29, 47.45, 66.33 ], + "hull": 8, + "edges": [ 6, 8, 0, 14, 4, 6, 8, 10, 4, 10, 0, 2, 2, 4, 10, 12, 12, 14, 2, 12 ], + "width": 82, + "height": 31 + } + }, + "fingers": { + "fingers": { "x": 16.21, "y": 1.37, "rotation": 82.36, "width": 31, "height": 33 } + }, + "foot1": { + "foot1": { "x": 12.55, "y": 0.12, "rotation": 90.96, "width": 50, "height": 42 } + }, + "foot2": { + "foot2": { "x": 8.83, "y": 2.92, "rotation": 90.42, "width": 53, "height": 38 } + }, + "forearm1": { + "forearm1": { "x": 11.88, "y": -5.04, "rotation": 106.61, "width": 41, "height": 49 } + }, + "forearm2": { + "forearm2": { "x": 13.08, "y": -0.63, "rotation": 83.71, "width": 31, "height": 32 } + }, + "hand1": { + "hand1": { "x": 11.92, "y": -0.7, "rotation": 90.37, "width": 37, "height": 48 } + }, + "hand2": { + "hand2": { "x": 14.23, "y": 1.64, "rotation": 82.36, "width": 31, "height": 37 } + }, + "head": { + "head": { + "type": "skinnedmesh", + "uvs": [ 0.89191, 0.07464, 1, 0.36671, 0.86524, 0.47125, 0.75952, 0.55326, 0.76614, 0.75424, 0.77423, 1, 0.52641, 1, 0.25139, 1, 0, 0.57054, 0.10296, 0.27407, 0.22999, 0.14511, 0.45598, 0.0454, 0.71272, 0, 0.6472, 0.42961, 0.39447, 0.39904, 0.22598, 0.42696, 0.75608, 0.33283, 0.60098, 0.22733, 0.43093, 0.21786, 0.52274, 0.41456, 0.52466, 0.72063, 0.24463, 0.56616, 0.28184, 0.73041, 0.67863, 0.75066 ], + "triangles": [ 18, 10, 11, 17, 11, 12, 18, 11, 17, 9, 10, 18, 0, 17, 12, 18, 15, 9, 19, 18, 17, 16, 13, 17, 16, 17, 0, 16, 0, 1, 2, 16, 1, 2, 3, 16, 13, 19, 17, 14, 18, 19, 14, 15, 18, 3, 13, 16, 21, 15, 14, 8, 9, 15, 8, 15, 21, 20, 19, 13, 20, 13, 3, 21, 20, 22, 14, 20, 21, 19, 20, 14, 23, 20, 3, 23, 3, 4, 22, 8, 21, 7, 8, 22, 6, 20, 23, 22, 20, 6, 7, 22, 6, 5, 6, 23, 5, 23, 4 ], + "vertices": [ 2, 23, 16.16, 58.77, 0.65472, 17, 63.77, 34.83, 0.34527, 2, 23, 36.03, 1.92, 1.00135, 17, 83.64, -22.01, -0.00135, 2, 11, 72.24, 76.12, 0.00643, 23, 11.72, -10.58, 0.99356, 1, 11, 54.09, 62.63, 1, 1, 11, 55.3, 27.87, 1, 1, 11, 56.78, -14.64, 1, 1, 11, 14.16, -14.73, 1, 1, 11, -33.14, -14.83, 1, 1, 11, -76.53, 59.37, 1, 2, 11, -58.93, 110.69, 0.14022, 17, -71.83999, 0.04, 0.85977, 2, 11, -37.13, 133.05, 0.05322, 17, -50.04, 22.4, 0.94677, 3, 11, 1.69, 150.38, 0, 23, -58.82, 63.67, 0.03085, 17, -11.21, 39.73, 0.96913, 2, 23, -14.68, 71.62, 0.38932, 17, 32.93, 47.68, 0.61066, 1, 11, 34.72, 83.98, 1, 1, 11, -8.75, 89.18, 1, 1, 11, -37.72, 84.29, 1, 3, 11, 53.42, 100.64, 0.00656, 23, -7.1, 13.93, 0.75552, 17, 40.50999, -10, 0.23791, 2, 23, -33.81, 32.21, 0.17777, 17, 13.79, 8.27, 0.82222, 2, 11, -2.54, 120.54, 0.02356, 17, -15.45, 9.89, 0.97643, 1, 11, 13.31, 86.54, 1, 1, 11, 13.75, 33.59, 1, 1, 11, -34.46, 60.21, 1, 1, 11, -28, 31.81, 1, 1, 11, 40.25, 28.45, 1 ], + "hull": 13, + "edges": [ 0, 24, 24, 22, 22, 20, 20, 18, 16, 18, 16, 14, 6, 26, 28, 30, 30, 16, 0, 2, 2, 4, 4, 6, 4, 32, 32, 34, 34, 36, 36, 18, 10, 12, 12, 14, 26, 38, 38, 28, 38, 34, 34, 24, 12, 40, 40, 38, 6, 8, 8, 10 ], + "width": 172, + "height": 173 + } + }, + "mantles": { + "mantles": { + "type": "mesh", + "uvs": [ 1, 1, 0.7369, 1, 0.27505, 0.80975, 0, 0.63797, 0, 0, 0.27235, 0, 0.74584, 0, 1, 0 ], + "triangles": [ 1, 6, 0, 6, 7, 0, 1, 2, 6, 3, 5, 2, 2, 5, 6, 3, 4, 5 ], + "vertices": [ -15.28, -51.1, -15.02, -15.32, -4.08, 47.4, 5.63, 84.74, 40.72, 84.47, 40.43999, 47.44, 39.96, -16.95, 39.7, -51.51 ], + "hull": 8, + "edges": [ 0, 14, 6, 8, 4, 6, 8, 10, 4, 10, 0, 2, 10, 12, 12, 14, 2, 12, 2, 4 ], + "width": 136, + "height": 55 + } + }, + "mouth": { + "mouth": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 42.58, 4.32, -18.41, 4.19, -18.43, 17.19, 42.56, 17.32 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 61, + "height": 13 + } + }, + "shin1": { + "shin1": { "x": 8.95, "y": 0.67, "rotation": 96.8, "width": 53, "height": 57 } + }, + "shin2": { + "shin2": { "x": 2.25, "y": -2.94, "rotation": 87.71, "width": 51, "height": 54 } + }, + "thigh1": { + "thigh1": { "x": 11.98, "y": -1.01, "rotation": 107.07, "width": 60, "height": 63 } + }, + "thigh2": { + "thigh2": { "x": 15.7, "y": -4.61, "rotation": 85.46, "width": 57, "height": 64 } + }, + "upperarm1": { + "upperarm1": { "x": 6.6, "y": 0.05, "rotation": 137.18, "width": 50, "height": 56 } + }, + "upperarm2": { + "upperarm2": { "x": 13.32, "y": -2.21, "rotation": 90.45, "width": 39, "height": 59 } + }, + "weapon": { + "sword": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 179.5, -33.93999, -36.49, -34.64, -36.72, 34.34999, 179.27, 35.05 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 216, + "height": 69 + } + } + } +}, +"events": { + "Footstep": {} +}, +"animations": { + "Attack": { + "bones": { + "root": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "Hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -12.6, "y": -11.34 }, + { "time": 0.0666, "x": -20.75, "y": -23.08 }, + { "time": 0.1333, "x": -15.51, "y": -16.91 }, + { "time": 0.2, "x": -5.88, "y": -21.85 }, + { "time": 0.2666, "x": -7.08, "y": -25.29 }, + { "time": 0.4, "x": -12.6, "y": -11.34 } + ] + }, + "L_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 51.94, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 51.94, "y": 0 } + ] + }, + "R_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -67.98, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": -67.98, "y": 0 } + ] + }, + "L_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "R_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "body": { + "rotate": [ + { "time": 0, "angle": 2.2 }, + { "time": 0.0666, "angle": 13.21 }, + { "time": 0.1333, "angle": -9.58 }, + { "time": 0.2, "angle": -23.58 }, + { "time": 0.2666, "angle": -32.14 }, + { "time": 0.4, "angle": 2.2 } + ], + "translate": [ + { "time": 0, "x": -0.76, "y": -1.89 }, + { "time": 0.1333, "x": 4.86, "y": -0.24 }, + { "time": 0.2, "x": 8.05, "y": -2.43 }, + { "time": 0.4, "x": -0.76, "y": -1.89 } + ] + }, + "thigh1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 14.5, "y": -3.78, "curve": "stepped" }, + { "time": 0.4, "x": 14.5, "y": -3.78 } + ] + }, + "thigh2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -22.57, "y": 1.51 }, + { "time": 0.2, "x": -13.26, "y": -2.4 }, + { "time": 0.4, "x": -22.57, "y": 1.51 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -19.21 }, + { "time": 0.0666, "angle": -19.17 }, + { "time": 0.1333, "angle": 4.76 }, + { "time": 0.2, "angle": 12.46 }, + { "time": 0.2666, "angle": 12.57 }, + { "time": 0.4, "angle": -19.21 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0666, "x": 3.47, "y": 5.7 }, + { "time": 0.2, "x": -4.55, "y": -12.27 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "mantles": { + "rotate": [ + { "time": 0, "angle": -8.27 }, + { "time": 0.0666, "angle": 5.32 }, + { "time": 0.1333, "angle": 4.8 }, + { "time": 0.2, "angle": -2.43 }, + { "time": 0.2666, "angle": -12.35 }, + { "time": 0.4, "angle": -8.27 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0666, "x": 5.51, "y": -5.45 }, + { "time": 0.1333, "x": 1.53, "y": -5.87 }, + { "time": 0.2, "x": 0.46, "y": -6.11 }, + { "time": 0.2666, "x": -6.55, "y": -4.72 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "shin1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "shin2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "upperarm1": { + "rotate": [ + { "time": 0, "angle": -4.05 }, + { "time": 0.0666, "angle": 33.65 }, + { "time": 0.1333, "angle": -3.75 }, + { "time": 0.2666, "angle": -49.64 }, + { "time": 0.3333, "angle": -42.31 }, + { "time": 0.4, "angle": -4.05 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2, "x": -2.5, "y": -6.51 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "upperarm2": { + "rotate": [ + { "time": 0, "angle": 324.46 }, + { "time": 0.0666, "angle": 101.05 }, + { "time": 0.1333, "angle": 49.05 }, + { "time": 0.2, "angle": 15.11 }, + { "time": 0.2666, "angle": 313.18 }, + { "time": 0.4, "angle": 324.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1333, "x": -2.1, "y": -8.13 }, + { "time": 0.2, "x": -10.56, "y": 1.25 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "bone2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 15.69 }, + { "time": 0.3333, "angle": -8.11 }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1333, "x": -13.54, "y": 2.05 }, + { "time": 0.3333, "x": 4.32, "y": -12.82 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "capeRoot": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "foot1": { + "rotate": [ + { "time": 0, "angle": 8.9, "curve": "stepped" }, + { "time": 0.4, "angle": 8.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "foot2": { + "rotate": [ + { "time": 0, "angle": -13.11, "curve": "stepped" }, + { "time": 0.4, "angle": -13.11 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "forearm1": { + "rotate": [ + { "time": 0, "angle": 7.93 }, + { "time": 0.0666, "angle": 42.3 }, + { "time": 0.1333, "angle": 21.87 }, + { "time": 0.3333, "angle": 43.27 }, + { "time": 0.4, "angle": 7.93 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "forearm2": { + "rotate": [ + { "time": 0, "angle": 56.31 }, + { "time": 0.0666, "angle": 87.62 }, + { "time": 0.1333, "angle": 6.51 }, + { "time": 0.2, "angle": 1 }, + { "time": 0.2666, "angle": 45.14 }, + { "time": 0.4, "angle": 56.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "hair01": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2, "angle": 19.95 }, + { "time": 0.3333, "angle": -8.11 }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2, "x": -11.67, "y": 11.16 }, + { "time": 0.3333, "x": 3.75, "y": -20.94 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "hand1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -8.94 }, + { "time": 0.2666, "angle": -20.79 }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "hand2": { + "rotate": [ + { "time": 0, "angle": 17.89 }, + { "time": 0.0666, "angle": -12.89 }, + { "time": 0.1333, "angle": -11.39 }, + { "time": 0.2, "angle": 6.2 }, + { "time": 0.2666, "angle": 18.96 }, + { "time": 0.4, "angle": 17.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "weapon": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.4, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0 } + ] + } + }, + "ffd": { + "default": { + "body": { + "body": [ + { + "time": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2, + "offset": 12, + "vertices": [ -0.41782, -9.98457, -2.40061, -7.62488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.40061, -7.62488, -0.41782, -9.98457, 0, 0, -0.41782, -9.98457, -0.41782, -9.98457, -2.40061, -7.62488, -2.40061, -7.62488, -2.40061, -7.62488, -0.41782, -9.98457 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4 } + ] + }, + "eyes": { + "eyes": [ + { + "time": 0, + "curve": [ 0.208, 0.78, 0.75, 1 ] + }, + { + "time": 0.2, + "vertices": [ 6.76959, 1.0625, 15.002, 0.58575, 19.83156, 0.77389, 23.31313, -0.40103, 22.66579, -0.49446, 19.83156, 0.77389, 15.002, 0.58575, 6.12215, 0.96937 ], + "curve": [ 0.532, 0, 0.75, 1 ] + }, + { "time": 0.4 } + ] + }, + "head": { + "head": [ + { + "time": 0, + "offset": 18, + "vertices": [ -6.48673, 0.51687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.48673, 0.51687, 0, 0, -4.54435, -0.64837, -4.54435, -0.64837 ], + "curve": [ 0.208, 0.78, 0.75, 1 ] + }, + { + "time": 0.2, + "offset": 12, + "vertices": [ 2.41841, 0.10234, 1.63067, 0.06914, 1.12625, 1.37998, 14.92421, 1.25856, 2.16658, 0.74578, -2.78115, -0.11792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.70107, 0.2722, 4.49131, 0.19014, 7.32128, 0.18938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.07989, 0.52394, 20.62552, 0.49707, 6.02913, 0.32602, 6.02913, 0.32602, 9.14706, 1.88179 ], + "curve": [ 0.532, 0, 0.753, 1 ] + }, + { + "time": 0.4, + "offset": 18, + "vertices": [ -6.48673, 0.51687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.48673, 0.51687, 0, 0, -4.54435, -0.64837, -4.54435, -0.64837 ] + } + ] + }, + "mantles": { + "mantles": [ + { + "time": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2, + "vertices": [ 4.0931, -3.31009, 0.20663, -12.49304, -5.29248, -11.21297, -2.35191, -2.26423, -2.35191, -2.26423, -5.29248, -11.21297, -0.07825, -5.05688, -3.74408, 9.53743 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4 } + ] + }, + "mouth": { + "mouth": [ + { + "time": 0, + "curve": [ 0.208, 0.78, 0.75, 1 ] + }, + { + "time": 0.2, + "vertices": [ 9.24916, -1.34519, 25.71696, -0.4806, 25.58307, -0.49992, 9.1152, -1.36451 ], + "curve": [ 0.532, 0, 0.75, 1 ] + }, + { "time": 0.4 } + ] + }, + "weapon": { + "sword": [ + { "time": 0 }, + { + "time": 0.0666, + "vertices": [ -15.89492, 9.12606, 0, 0, 0, 0, -15.83184, -9.23487 ] + }, + { + "time": 0.2, + "vertices": [ 8.49405, -0.84592, 0, 0, 0, 0, 8.48806, 0.90445 ] + }, + { + "time": 0.2666, + "vertices": [ -17.00197, -7.9945, 0, 0, 0, 0, -17.05646, 7.87807 ] + }, + { "time": 0.4 } + ] + } + } + } + }, + "Crouch": { + "bones": { + "upperarm2": { + "rotate": [ + { "time": 0, "angle": 38.03 }, + { "time": 0.5, "angle": 30.8 }, + { "time": 1, "angle": 38.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "body": { + "rotate": [ + { + "time": 0, + "angle": -15.51, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "angle": -11.54, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "angle": -15.51 } + ], + "translate": [ + { + "time": 0, + "x": -0.41, + "y": -2.32, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "x": -2.2, + "y": -0.53, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "x": -0.41, "y": -2.32 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 8.72 }, + { "time": 0.5, "angle": 3.24 }, + { "time": 1, "angle": 8.72 } + ], + "translate": [ + { + "time": 0, + "x": -4.42, + "y": -2.85, + "curve": [ 0.361, 0.63, 0.697, 1 ] + }, + { + "time": 0.1666, + "x": -4.84, + "y": -3.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "x": -2.35, + "y": -1.86, + "curve": [ 0.36, 0.43, 0.701, 0.8 ] + }, + { "time": 1, "x": -4.42, "y": -2.85 } + ] + }, + "Hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -11.22, "y": -42.01, "curve": "stepped" }, + { "time": 1, "x": -11.22, "y": -42.01 } + ] + }, + "mantles": { + "rotate": [ + { "time": 0, "angle": 9.04 }, + { "time": 0.5, "angle": 7.13 }, + { "time": 1, "angle": 9.04 } + ], + "translate": [ + { "time": 0, "x": -0.09, "y": 0, "curve": "stepped" }, + { "time": 1, "x": -0.09, "y": 0 } + ] + }, + "L_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -29.07, "y": 1.18, "curve": "stepped" }, + { "time": 1, "x": -29.07, "y": 1.18 } + ] + }, + "R_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 16.23, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 16.23, "y": 0 } + ] + }, + "upperarm1": { + "rotate": [ + { "time": 0, "angle": -5.42 }, + { "time": 0.5, "angle": -11.1 }, + { "time": 1, "angle": -5.42 } + ], + "translate": [ + { "time": 0, "x": -6.94, "y": 5.85, "curve": "stepped" }, + { "time": 1, "x": -6.94, "y": 5.85 } + ] + }, + "forearm1": { + "rotate": [ + { "time": 0, "angle": 25.38 }, + { "time": 0.5, "angle": 32.07 }, + { "time": 1, "angle": 25.38 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "forearm2": { + "rotate": [ + { "time": 0, "angle": 18.6 }, + { "time": 0.5, "angle": 26.15 }, + { "time": 1, "angle": 18.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "thigh2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -2.75, "y": 0, "curve": "stepped" }, + { "time": 1, "x": -2.75, "y": 0 } + ] + }, + "thigh1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -0.92, "y": 6.67, "curve": "stepped" }, + { "time": 1, "x": -0.92, "y": 6.67 } + ] + }, + "foot1": { + "rotate": [ + { "time": 0, "angle": 270.13, "curve": "stepped" }, + { "time": 1, "angle": 270.13 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "weapon": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hand2": { + "rotate": [ + { "time": 0, "angle": -13.39 }, + { "time": 0.5, "angle": -17.28 }, + { "time": 1, "angle": -13.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hand1": { + "rotate": [ + { "time": 0, "angle": -9.29 }, + { "time": 0.5, "angle": -1.97 }, + { "time": 1, "angle": -9.29 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "capeRoot": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "shin2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "shin1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "R_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": -4.92, "curve": "stepped" }, + { "time": 1, "x": 0, "y": -4.92 } + ] + }, + "L_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": -12.22, "curve": "stepped" }, + { "time": 1, "x": 0, "y": -12.22 } + ] + } + }, + "ffd": { + "default": { + "body": { + "body": [ + { + "time": 0, + "offset": 12, + "vertices": [ 2.58728, 10.16382, -0.16621, 4.50657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.23097, 5.2839, -0.84591, 9.09544, 0, 0, -0.84591, 9.09544, -0.84591, 9.09544, -0.23097, 5.2839, -0.23097, 5.2839, -0.16621, 4.50657, -0.84591, 9.09544 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 8, + "vertices": [ -0.16332, -0.55322, 0.56806, -2.69373, 1.7576, 3.93866, -1.93256, 0.76876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.97894, 1.32548, -0.70127, 3.17347, 0, 0, -0.70127, 3.17347, -0.70127, 3.17347, -1.97894, 1.32548, -1.97894, 1.32548, -1.93256, 0.76876, -0.70127, 3.17347 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "offset": 12, + "vertices": [ 2.58728, 10.16382, -0.16621, 4.50657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.23097, 5.2839, -0.84591, 9.09544, 0, 0, -0.84591, 9.09544, -0.84591, 9.09544, -0.23097, 5.2839, -0.23097, 5.2839, -0.16621, 4.50657, -0.84591, 9.09544 ] + } + ] + }, + "eyes": { + "eyes": [ + { + "time": 0, + "vertices": [ 3.86398, 0.60645, 7.61641, 0.3323, 8.69186, 0.43607, 9.7326, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61641, 0.3323, 3.49443, 0.5533 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "vertices": [ 6.76959, 1.0625, 13.34377, 0.58218, 15.22793, 0.76399, 17.05128, -0.4145, 16.40394, -0.50793, 15.22793, 0.76399, 13.34377, 0.58218, 6.12215, 0.96937 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 1, + "vertices": [ 3.86398, 0.60645, 7.61641, 0.3323, 8.69186, 0.43607, 9.7326, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61641, 0.3323, 3.49443, 0.5533 ] + } + ] + }, + "head": { + "head": [ + { + "time": 0, + "offset": 12, + "vertices": [ 1.38039, 0.05841, 0.93076, 0.03946, 0.64284, 0.78767, 2.71751, 0.88434, 1.23665, 0.42568, -1.58743, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67878, 0.15537, 2.56357, 0.10853, 4.17887, 0.10809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46503, 8.75593, 0.22785, 1.49082, -0.0922, 1.49082, -0.0922, 5.221, 1.07409 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 12, + "vertices": [ 2.41841, 0.10234, 1.63067, 0.06914, 1.12625, 1.37998, 9.63887, 1.16067, 2.16658, 0.74578, -2.78115, -0.11792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.70107, 0.2722, 4.49131, 0.19014, 7.32128, 0.18938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79455, 0.42605, 15.34018, 0.39919, 6.02913, 0.32602, 6.02913, 0.32602, 9.14706, 1.88179 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 1, + "offset": 12, + "vertices": [ 1.38039, 0.05841, 0.93076, 0.03946, 0.64284, 0.78767, 2.71751, 0.88434, 1.23665, 0.42568, -1.58743, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67878, 0.15537, 2.56357, 0.10853, 4.17887, 0.10809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46503, 8.75593, 0.22785, 1.49082, -0.0922, 1.49082, -0.0922, 5.221, 1.07409 ] + } + ] + }, + "mantles": { + "mantles": [ + { + "time": 0, + "offset": 2, + "vertices": [ -0.28599, 2.32239, 3.1293, 5.3126, 0.13581, 2.32148, 0.13581, 2.32148, 3.1293, 5.3126, -0.28599, 2.32239 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "vertices": [ 1.3394, -2.09791, 0.11259, -3.18363, 3.04376, 1.23967, -0.0392, 0.77838, -0.0392, 0.77838, 3.04376, 1.23967, -0.01004, -0.95502, -0.04585, 0.86382 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "offset": 2, + "vertices": [ -0.28599, 2.32239, 3.1293, 5.3126, 0.13581, 2.32148, 0.13581, 2.32148, 3.1293, 5.3126, -0.28599, 2.32239 ] + } + ] + }, + "mouth": { + "mouth": [ + { + "time": 0, + "vertices": [ 5.27927, -0.76781, 10.17068, -0.28401, 10.09426, -0.29504, 5.20281, -0.77884 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "vertices": [ 9.24916, -1.34519, 17.81878, -0.49758, 17.68489, -0.5169, 9.1152, -1.36451 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 1, + "vertices": [ 5.27927, -0.76781, 10.17068, -0.28401, 10.09426, -0.29504, 5.20281, -0.77884 ] + } + ] + } + } + } + }, + "Fall": { + "bones": { + "R_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 13.15, "y": 7.94, "curve": "stepped" }, + { "time": 1, "x": 13.15, "y": 7.94 } + ] + }, + "L_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 35.34, "y": 4.14, "curve": "stepped" }, + { "time": 1, "x": 35.34, "y": 4.14 } + ] + }, + "foot1": { + "rotate": [ + { "time": 0, "angle": 19.62, "curve": "stepped" }, + { "time": 1, "angle": 19.62 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "foot2": { + "rotate": [ + { "time": 0, "angle": 39.16, "curve": "stepped" }, + { "time": 1, "angle": 39.16 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "Hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "thigh1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "thigh2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "body": { + "rotate": [ + { "time": 0, "angle": 14.13, "curve": "stepped" }, + { "time": 1, "angle": 14.13 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -17.81, "curve": "stepped" }, + { "time": 1, "angle": -17.81 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "upperarm1": { + "rotate": [ + { "time": 0, "angle": -25.71, "curve": "stepped" }, + { "time": 1, "angle": -25.71 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "forearm1": { + "rotate": [ + { "time": 0, "angle": 26.18, "curve": "stepped" }, + { "time": 1, "angle": 26.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "upperarm2": { + "rotate": [ + { "time": 0, "angle": 37.75, "curve": "stepped" }, + { "time": 1, "angle": 37.75 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "forearm2": { + "rotate": [ + { "time": 0, "angle": 12.3, "curve": "stepped" }, + { "time": 1, "angle": 12.3 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "L_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "R_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "mantles": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "shin1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "shin2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "capeRoot": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hand1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hand2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "weapon": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + } + } + }, + "Headturn": { + "bones": { + "upperarm2": { + "rotate": [ + { "time": 0, "angle": 0.46 }, + { "time": 0.5, "angle": 358.79 }, + { "time": 1, "angle": 0.46 }, + { "time": 1.5, "angle": 358.79 }, + { "time": 2, "angle": 0.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.5, "x": -3.12, "y": 8.02 }, + { "time": 1, "x": 0, "y": 0 }, + { "time": 1.5, "x": -3.12, "y": 8.02 }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "body": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 1.66 }, + { "time": 1, "angle": 0 }, + { "time": 1.5, "angle": 1.66 }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "x": 0, + "y": -3.7, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.5, + "x": 0, + "y": -3.7, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -4.18 }, + { "time": 0.5, "angle": -8.25 }, + { "time": 1, "angle": -4.18 }, + { "time": 1.5, "angle": -8.25 }, + { "time": 2, "angle": -4.18 } + ], + "translate": [ + { + "time": 0, + "x": -1.06, + "y": 0, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { + "time": 0.1, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "x": -3.74, + "y": 0, + "curve": [ 0.243, 0, 0.648, 0.6 ] + }, + { + "time": 1, + "x": -1.06, + "y": 0, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { + "time": 1.1, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.6666, + "x": -3.74, + "y": 0, + "curve": [ 0.243, 0, 0.648, 0.6 ] + }, + { "time": 2, "x": -1.06, "y": 0 } + ], + "flipX": [ + { "time": 0.1, "x": true }, + { "time": 1.1 } + ] + }, + "Hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": -2.92, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "x": -3.18, + "y": -4.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "x": 0, + "y": -2.92, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.5, + "x": -3.18, + "y": -4.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 2, "x": 0, "y": -2.92 } + ] + }, + "mantles": { + "rotate": [ + { "time": 0, "angle": 0 }, + { + "time": 0.4333, + "angle": -4.83, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 0 }, + { + "time": 1.4333, + "angle": -4.83, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": -0.09, + "y": 0, + "curve": [ 0.3, 0.21, 0.755, 1 ] + }, + { + "time": 0.4333, + "x": -1.41, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.9333, "x": 0, "y": 0 }, + { + "time": 1, + "x": -0.09, + "y": 0, + "curve": [ 0.3, 0.21, 0.755, 1 ] + }, + { + "time": 1.4333, + "x": -1.41, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.9333, "x": 0, "y": 0 }, + { "time": 2, "x": -0.09, "y": 0 } + ] + }, + "L_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -7.15, "y": 0, "curve": "stepped" }, + { "time": 1, "x": -7.15, "y": 0, "curve": "stepped" }, + { "time": 2, "x": -7.15, "y": 0 } + ] + }, + "R_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 5.94, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 5.94, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 5.94, "y": 0 } + ] + }, + "upperarm1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "angle": -15.4, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { + "time": 1, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 1.5, + "angle": -15.4, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "x": 1.84, + "y": -5, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { + "time": 1, + "x": 0, + "y": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 1.5, + "x": 1.84, + "y": -5, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "forearm1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "angle": 9.63, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { + "time": 1, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 1.5, + "angle": 9.63, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "forearm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 13.63 }, + { "time": 1, "angle": 0 }, + { "time": 1.5, "angle": 13.63 }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "thigh2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "thigh1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "foot1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "cape4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "weapon": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "cape2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hand2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -8.65 }, + { "time": 1, "angle": 0 }, + { "time": 1.5, "angle": -8.65 }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "hand1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "angle": 12.36, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { + "time": 1, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 1.5, + "angle": 12.36, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "cape1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "capeRoot": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "shin2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "shin1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "R_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "L_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0, "curve": "stepped" }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "bone2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3, "angle": 2.36 }, + { "time": 1, "angle": 0 }, + { "time": 1.2333, "angle": 3.15 }, + { "time": 1.6666, "angle": 2.36 }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.267, 0, 0.617, 0.42 ] + }, + { + "time": 0.1, + "x": -9.72, + "y": -17.7, + "curve": [ 0.327, 0.31, 0.694, 0.75 ] + }, + { "time": 0.3, "x": -0.72, "y": -0.78 }, + { + "time": 1, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.1, + "x": -9.72, + "y": -17.7, + "curve": [ 0.327, 0.31, 0.694, 0.75 ] + }, + { "time": 1.2333, "x": -1.23, "y": 2.05 }, + { "time": 1.6666, "x": -0.72, "y": -0.78 }, + { "time": 2, "x": 0, "y": 0 } + ] + }, + "hair01": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3, "angle": 5.81 }, + { "time": 1, "angle": 0 }, + { "time": 1.2333, "angle": 7.75 }, + { "time": 1.6666, "angle": 5.81 }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.267, 0, 0.617, 0.42 ] + }, + { + "time": 0.1, + "x": -8.31, + "y": -9.93, + "curve": [ 0.327, 0.31, 0.694, 0.75 ] + }, + { "time": 0.3, "x": 0.74, "y": -1.41 }, + { + "time": 1, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.1, + "x": -8.31, + "y": -9.93, + "curve": [ 0.327, 0.31, 0.694, 0.75 ] + }, + { "time": 1.2333, "x": -1.23, "y": 2.05 }, + { "time": 1.6666, "x": 0.74, "y": -1.41 }, + { "time": 2, "x": 0, "y": 0 } + ] + } + }, + "ffd": { + "default": { + "body": { + "body": [ + { + "time": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 12, + "vertices": [ -0.75588, -3.68987, -1.01898, -2.97404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.01898, -2.97404, -0.75588, -3.68987, 0, 0, -0.75588, -3.68987, -0.75588, -3.68987, -1.01898, -2.97404, -1.01898, -2.97404, -1.01898, -2.97404, -0.75588, -3.68987 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.5, + "offset": 12, + "vertices": [ -0.75588, -3.68987, -1.01898, -2.97404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.01898, -2.97404, -0.75588, -3.68987, 0, 0, -0.75588, -3.68987, -0.75588, -3.68987, -1.01898, -2.97404, -1.01898, -2.97404, -1.01898, -2.97404, -0.75588, -3.68987 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 2 } + ] + }, + "eyes": { + "eyes": [ + { + "time": 0, + "vertices": [ 3.86398, 0.60645, 7.61641, 0.3323, 8.69186, 0.43607, 9.7326, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61641, 0.3323, 3.49443, 0.5533 ], + "curve": [ 0.12, 0.43, 0.75, 1 ] + }, + { + "time": 0.1, + "vertices": [ -8.40292, -7.08714, -21.63906, -8.70873, -16.35853, -9.80266, -11.15096, -9.57028, -11.74201, -9.65558, -16.35853, -9.80266, -21.63906, -8.70873, -8.99406, -7.17216 ], + "curve": [ 0.103, 0.39, 0.75, 1 ] + }, + { + "time": 0.2666, + "vertices": [ 3.86398, 0.60645, 7.61641, 0.3323, 8.69186, 0.43607, 9.7326, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61641, 0.3323, 3.49443, 0.5533 ], + "curve": "stepped" + }, + { + "time": 1, + "vertices": [ 3.86398, 0.60645, 7.61641, 0.3323, 8.69186, 0.43607, 9.7326, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61641, 0.3323, 3.49443, 0.5533 ], + "curve": [ 0.12, 0.43, 0.75, 1 ] + }, + { + "time": 1.1, + "vertices": [ -8.40292, -7.08714, -21.63906, -8.70873, -16.35853, -9.80266, -11.15096, -9.57028, -11.74201, -9.65558, -16.35853, -9.80266, -21.63906, -8.70873, -8.99406, -7.17216 ], + "curve": [ 0.103, 0.39, 0.75, 1 ] + }, + { + "time": 1.2666, + "vertices": [ 6.76959, 1.0625, 13.34377, 0.58218, 15.22793, 0.76399, 17.05128, -0.4145, 16.40394, -0.50793, 15.22793, 0.76399, 13.34377, 0.58218, 6.12215, 0.96937 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 2, + "vertices": [ 3.86398, 0.60645, 7.61641, 0.3323, 8.69186, 0.43607, 9.7326, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61641, 0.3323, 3.49443, 0.5533 ] + } + ] + }, + "head": { + "head": [ + { + "time": 0, + "offset": 12, + "vertices": [ 1.38039, 0.05841, 0.93076, 0.03946, 0.64284, 0.78767, 2.71751, 0.88434, 1.23665, 0.42568, -1.58743, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67878, 0.15537, 2.56357, 0.10853, 4.17887, 0.10809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46503, 8.75593, 0.22785, 1.49082, -0.0922, 1.49082, -0.0922, 5.221, 1.07409 ], + "curve": [ 0.12, 0.43, 0.75, 1 ] + }, + { + "time": 0.1, + "vertices": [ -28.25412, 0.58982, -28.29793, -0.84899, -23.08535, 11.20282, -23.74395, 9.72906, -8.09434, -0.22933, -8.07305, 0.62722, -1.79152, -1.05691, -4.34674, -10.72724, -8.58518, 8.46599, -10.54066, -12.01433, -1.83619, -10.84666, 7.20287, 0.91037, 1.98415, -7.80763, 1.87615, -7.83395, -9.83709, -4.16848, -9.94567, -3.80404, -40.81721, -6.35028, -41.13319, -3.49778, -40.97641, -5.18957, -41.84467, -1.62019, -41.73162, -3.60775, -15.38477, -8.74435, -14.91351, -13.12095, -5.60618, -6.39686, -2.93006, -1.39324, -3.06073, -1.07583, -2.98713, -1.26605, 0, 0, 0, 0, 0, 0, 0, 0, -18.34148, -11.65996, -10.8627, -12.31053, -18.14909, -6.56942, -15.89555, -8.6677, -7.0425, -15.2486 ], + "curve": [ 0.103, 0.39, 0.75, 1 ] + }, + { + "time": 0.2666, + "offset": 12, + "vertices": [ 1.38039, 0.05841, 0.93076, 0.03946, 0.64284, 0.78767, 2.71751, 0.88434, 1.23665, 0.42568, -1.58743, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67878, 0.15537, 2.56357, 0.10853, 4.17887, 0.10809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46503, 8.75593, 0.22785, 1.49082, -0.0922, 1.49082, -0.0922, 5.221, 1.07409 ], + "curve": "stepped" + }, + { + "time": 1, + "offset": 12, + "vertices": [ 1.38039, 0.05841, 0.93076, 0.03946, 0.64284, 0.78767, 2.71751, 0.88434, 1.23665, 0.42568, -1.58743, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67878, 0.15537, 2.56357, 0.10853, 4.17887, 0.10809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46503, 8.75593, 0.22785, 1.49082, -0.0922, 1.49082, -0.0922, 5.221, 1.07409 ], + "curve": [ 0.12, 0.43, 0.75, 1 ] + }, + { + "time": 1.1, + "vertices": [ -28.25412, 0.58982, -28.29793, -0.84899, -23.08535, 11.20282, -23.74395, 9.72906, -8.09434, -0.22933, -8.07305, 0.62722, -1.79152, -1.05691, -4.34674, -10.72724, -8.58518, 8.46599, -10.54066, -12.01433, -1.83619, -10.84666, 7.20287, 0.91037, 1.98415, -7.80763, 1.87615, -7.83395, -9.83709, -4.16848, -9.94567, -3.80404, -40.81721, -6.35028, -41.13319, -3.49778, -40.97641, -5.18957, -41.84467, -1.62019, -41.73162, -3.60775, -15.50945, -1.09533, -15.03819, -5.47194, -5.60618, -6.39686, -2.93006, -1.39324, -3.06073, -1.07583, -2.98713, -1.26605, 0, 0, 0, 0, 0, 0, 0, 0, -18.46617, -4.01094, -10.8627, -12.31053, -18.14909, -6.56942, -15.89555, -8.6677, -7.0425, -15.2486 ], + "curve": [ 0.103, 0.39, 0.75, 1 ] + }, + { + "time": 1.2666, + "offset": 12, + "vertices": [ 2.41841, 0.10234, 1.63067, 0.06914, 1.12625, 1.37998, 9.63887, 1.16067, 2.16658, 0.74578, -2.78115, -0.11792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.70107, 0.2722, 4.49131, 0.19014, 7.32128, 0.18938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79455, 0.42605, 15.34018, 0.39919, 6.02913, 0.32602, 6.02913, 0.32602, 9.14706, 1.88179 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 2, + "offset": 12, + "vertices": [ 1.38039, 0.05841, 0.93076, 0.03946, 0.64284, 0.78767, 2.71751, 0.88434, 1.23665, 0.42568, -1.58743, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67878, 0.15537, 2.56357, 0.10853, 4.17887, 0.10809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46503, 8.75593, 0.22785, 1.49082, -0.0922, 1.49082, -0.0922, 5.221, 1.07409 ] + } + ] + }, + "mantles": { + "mantles": [ + { + "time": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "vertices": [ -1.38829, 0.54368, 0.15339, -6.90906, -1.2541, -4.50875, -1.22914, -1.35892, -1.22923, -1.35754, -1.25381, -4.47607, -0.06353, -5.18391, -0.43386, 3.45035 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.5, + "vertices": [ -1.38829, 0.54368, 0.15339, -6.90906, -1.2541, -4.50875, -1.22914, -1.35892, -1.22923, -1.35754, -1.25381, -4.47607, -0.06353, -5.18391, -0.43386, 3.45035 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 2 } + ] + }, + "mouth": { + "mouth": [ + { + "time": 0, + "vertices": [ 5.27927, -0.76781, 10.17068, -0.28401, 10.09426, -0.29504, 5.20281, -0.77884 ], + "curve": [ 0.12, 0.43, 0.75, 1 ] + }, + { + "time": 0.1, + "vertices": [ -19.44883, -10.36464, -11.62435, -9.59073, -11.7466, -9.60837, -19.57114, -10.38228 ], + "curve": [ 0.103, 0.39, 0.75, 1 ] + }, + { + "time": 0.2666, + "vertices": [ 5.27927, -0.76781, 10.17068, -0.28401, 10.09426, -0.29504, 5.20281, -0.77884 ], + "curve": "stepped" + }, + { + "time": 1, + "vertices": [ 5.27927, -0.76781, 10.17068, -0.28401, 10.09426, -0.29504, 5.20281, -0.77884 ], + "curve": [ 0.12, 0.43, 0.75, 1 ] + }, + { + "time": 1.1, + "vertices": [ -19.44883, -10.36464, -11.62435, -9.59073, -11.7466, -9.60837, -19.57114, -10.38228 ], + "curve": [ 0.103, 0.39, 0.75, 1 ] + }, + { + "time": 1.2666, + "vertices": [ 9.24916, -1.34519, 17.81878, -0.49758, 17.68489, -0.5169, 9.1152, -1.36451 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 2, + "vertices": [ 5.27927, -0.76781, 10.17068, -0.28401, 10.09426, -0.29504, 5.20281, -0.77884 ] + } + ] + } + } + } + }, + "Idle": { + "bones": { + "upperarm2": { + "rotate": [ + { "time": 0, "angle": 0.46 }, + { "time": 0.5, "angle": 358.79 }, + { "time": 1, "angle": 0.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.5, "x": -3.12, "y": 8.02 }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "body": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 1.66 }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "x": 0, + "y": -3.7, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -4.18 }, + { "time": 0.5, "angle": -8.25 }, + { "time": 1, "angle": -4.18 } + ], + "translate": [ + { + "time": 0, + "x": -1.06, + "y": 0, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { + "time": 0.1666, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "x": -3.74, + "y": 0, + "curve": [ 0.243, 0, 0.648, 0.6 ] + }, + { "time": 1, "x": -1.06, "y": 0 } + ] + }, + "Hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": -2.92, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "x": -3.18, + "y": -4.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "x": 0, "y": -2.92 } + ] + }, + "mantles": { + "rotate": [ + { "time": 0, "angle": 0 }, + { + "time": 0.4333, + "angle": -4.83, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": -0.09, + "y": 0, + "curve": [ 0.3, 0.21, 0.755, 1 ] + }, + { + "time": 0.4333, + "x": -1.41, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.9333, "x": 0, "y": 0 }, + { "time": 1, "x": -0.09, "y": 0 } + ] + }, + "L_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -7.15, "y": 0, "curve": "stepped" }, + { "time": 1, "x": -7.15, "y": 0 } + ] + }, + "R_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 5.94, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 5.94, "y": 0 } + ] + }, + "upperarm1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "angle": -15.4, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "x": 1.84, + "y": -5, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "forearm1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "angle": 9.63, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "forearm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 13.63 }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "thigh2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "thigh1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "foot1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape4": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "cape3": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "weapon": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape2": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "hand2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -8.65 }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hand1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.404, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "angle": 12.36, + "curve": [ 0.516, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape1": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "capeRoot": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "shin2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "shin1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "R_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "L_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "bone2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.4666, "angle": 3.15 }, + { "time": 0.6666, "angle": 2.36 }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "x": -1.23, "y": 2.05 }, + { "time": 0.6666, "x": -0.72, "y": -0.78 }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hair01": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.4666, "angle": 7.75 }, + { "time": 0.6666, "angle": 5.81 }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "x": -1.23, "y": 2.05 }, + { "time": 0.6666, "x": 0.74, "y": -1.41 }, + { "time": 1, "x": 0, "y": 0 } + ] + } + }, + "ffd": { + "default": { + "body": { + "body": [ + { + "time": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 12, + "vertices": [ -0.75588, -3.68987, -1.01898, -2.97404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.01898, -2.97404, -0.75588, -3.68987, 0, 0, -0.75588, -3.68987, -0.75588, -3.68987, -1.01898, -2.97404, -1.01898, -2.97404, -1.01898, -2.97404, -0.75588, -3.68987 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1 } + ] + }, + "eyes": { + "eyes": [ + { + "time": 0, + "vertices": [ 3.86398, 0.60645, 7.61641, 0.3323, 8.69186, 0.43607, 9.7326, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61641, 0.3323, 3.49443, 0.5533 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "vertices": [ 6.76959, 1.0625, 13.34377, 0.58218, 15.22793, 0.76399, 17.05128, -0.4145, 16.40394, -0.50793, 15.22793, 0.76399, 13.34377, 0.58218, 6.12215, 0.96937 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 1, + "vertices": [ 3.86398, 0.60645, 7.61641, 0.3323, 8.69186, 0.43607, 9.7326, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61641, 0.3323, 3.49443, 0.5533 ] + } + ] + }, + "head": { + "head": [ + { + "time": 0, + "offset": 12, + "vertices": [ 1.38039, 0.05841, 0.93076, 0.03946, 0.64284, 0.78767, 2.71751, 0.88434, 1.23665, 0.42568, -1.58743, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67878, 0.15537, 2.56357, 0.10853, 4.17887, 0.10809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46503, 8.75593, 0.22785, 1.49082, -0.0922, 1.49082, -0.0922, 5.221, 1.07409 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 12, + "vertices": [ 2.41841, 0.10234, 1.63067, 0.06914, 1.12625, 1.37998, 9.63887, 1.16067, 2.16658, 0.74578, -2.78115, -0.11792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.70107, 0.2722, 4.49131, 0.19014, 7.32128, 0.18938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79455, 0.42605, 15.34018, 0.39919, 6.02913, 0.32602, 6.02913, 0.32602, 9.14706, 1.88179 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 1, + "offset": 12, + "vertices": [ 1.38039, 0.05841, 0.93076, 0.03946, 0.64284, 0.78767, 2.71751, 0.88434, 1.23665, 0.42568, -1.58743, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67878, 0.15537, 2.56357, 0.10853, 4.17887, 0.10809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46503, 8.75593, 0.22785, 1.49082, -0.0922, 1.49082, -0.0922, 5.221, 1.07409 ] + } + ] + }, + "mantles": { + "mantles": [ + { + "time": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "vertices": [ -1.38829, 0.54368, 0.15339, -6.90906, -1.2541, -4.50875, -1.22914, -1.35892, -1.22923, -1.35754, -1.25381, -4.47607, -0.06353, -5.18391, -0.43386, 3.45035 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1 } + ] + }, + "mouth": { + "mouth": [ + { + "time": 0, + "vertices": [ 5.27927, -0.76781, 10.17068, -0.28401, 10.09426, -0.29504, 5.20281, -0.77884 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "vertices": [ 9.24916, -1.34519, 17.81878, -0.49758, 17.68489, -0.5169, 9.1152, -1.36451 ], + "curve": [ 0.587, -0.02, 0.75, 1 ] + }, + { + "time": 1, + "vertices": [ 5.27927, -0.76781, 10.17068, -0.28401, 10.09426, -0.29504, 5.20281, -0.77884 ] + } + ] + } + } + } + }, + "Jump": { + "bones": { + "R_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -6.83, "y": 12.06, "curve": "stepped" }, + { "time": 1, "x": -6.83, "y": 12.06 } + ] + }, + "L_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 2.41, "y": 1.2, "curve": "stepped" }, + { "time": 1, "x": 2.41, "y": 1.2 } + ] + }, + "foot1": { + "rotate": [ + { "time": 0, "angle": -32.23, "curve": "stepped" }, + { "time": 1, "angle": -32.23 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "foot2": { + "rotate": [ + { "time": 0, "angle": -33.3, "curve": "stepped" }, + { "time": 1, "angle": -33.3 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "Hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "thigh1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "thigh2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "body": { + "rotate": [ + { "time": 0, "angle": -10.4, "curve": "stepped" }, + { "time": 1, "angle": -10.4 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 4.89, "curve": "stepped" }, + { "time": 1, "angle": 4.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "upperarm1": { + "rotate": [ + { "time": 0, "angle": 22.69, "curve": "stepped" }, + { "time": 1, "angle": 22.69 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "forearm1": { + "rotate": [ + { "time": 0, "angle": 56.41, "curve": "stepped" }, + { "time": 1, "angle": 56.41 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "upperarm2": { + "rotate": [ + { "time": 0, "angle": 23.71, "curve": "stepped" }, + { "time": 1, "angle": 23.71 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "forearm2": { + "rotate": [ + { "time": 0, "angle": 20.06, "curve": "stepped" }, + { "time": 1, "angle": 20.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "L_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "R_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "mantles": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "shin1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "shin2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "capeRoot": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hand1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hand2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "weapon": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "cape4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + } + } + }, + "Run": { + "bones": { + "upperarm1": { + "rotate": [ + { "time": 0, "angle": -40.45 }, + { "time": 0.044, "angle": -34.97 }, + { "time": 0.0881, "angle": 1.79 }, + { "time": 0.1322, "angle": 42.58 }, + { "time": 0.3117, "angle": -282.55 }, + { "time": 0.3525, "angle": 48.21 }, + { "time": 0.3966, "angle": 26.17 }, + { "time": 0.4407, "angle": -22.81 }, + { "time": 0.5333, "angle": -40.45 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.044, "x": 1.33, "y": 0.56 }, + { "time": 0.1762, "x": -2.74, "y": -5.58 }, + { "time": 0.3117, "x": -3.1, "y": -2.45 }, + { "time": 0.4407, "x": -0.75, "y": 4.05 }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "forearm1": { + "rotate": [ + { "time": 0, "angle": 27.41 }, + { "time": 0.044, "angle": 21.5 }, + { "time": 0.0881, "angle": 16.71 }, + { "time": 0.1322, "angle": 30.61 }, + { "time": 0.3117, "angle": 38.33 }, + { "time": 0.3525, "angle": 37.81 }, + { "time": 0.3966, "angle": 16.47 }, + { "time": 0.4407, "angle": 17.71 }, + { "time": 0.5333, "angle": 27.41 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "hand1": { + "rotate": [ + { "time": 0, "angle": -20.19 }, + { "time": 0.044, "angle": -24.82 }, + { "time": 0.1762, "angle": -14.29 }, + { "time": 0.3525, "angle": 21.84 }, + { "time": 0.3966, "angle": 9.46 }, + { "time": 0.4407, "angle": 12.08 }, + { "time": 0.5333, "angle": -20.19 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "L_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 49.53, "y": 0.28 }, + { "time": 0.044, "x": 39.66, "y": 0.28 }, + { "time": 0.0881, "x": -3.63, "y": 0.28 }, + { "time": 0.1322, "x": -10.76, "y": 0.28 }, + { "time": 0.1762, "x": -16.65, "y": 22.66 }, + { "time": 0.2203, "x": -10, "y": 27.64 }, + { "time": 0.2666, "x": -11.26, "y": 17.21 }, + { "time": 0.3117, "x": 12.41, "y": 8.33 }, + { "time": 0.3525, "x": 37.47, "y": 7.86 }, + { "time": 0.3966, "x": 52.33, "y": 6.09 }, + { "time": 0.4407, "x": 68.69, "y": 20 }, + { "time": 0.4848, "x": 68.69, "y": 8.54 }, + { "time": 0.5333, "x": 49.53, "y": 0.28 } + ] + }, + "foot1": { + "rotate": [ + { "time": 0, "angle": 20.27 }, + { "time": 0.044, "angle": -0.6 }, + { "time": 0.1322, "angle": -31.14 }, + { "time": 0.1762, "angle": 262.34 }, + { "time": 0.2203, "angle": -71.2 }, + { "time": 0.2666, "angle": -84.95 }, + { "time": 0.3117, "angle": -63.21 }, + { "time": 0.3525, "angle": -8.37 }, + { "time": 0.3966, "angle": -18.33 }, + { "time": 0.4407, "angle": 34.08 }, + { "time": 0.5333, "angle": 20.27 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "R_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -58.44, "y": 26.3 }, + { "time": 0.044, "x": -42, "y": 21.37 }, + { "time": 0.0881, "x": -5.28, "y": 9.86 }, + { "time": 0.1322, "x": 11.16, "y": 12.05 }, + { "time": 0.1762, "x": 19.38, "y": 26.85 }, + { "time": 0.2203, "x": 23.89, "y": 17.18 }, + { "time": 0.2666, "x": 21.52, "y": 0.14 }, + { "time": 0.3117, "x": -19.32, "y": 0.14 }, + { "time": 0.3525, "x": -53.26, "y": -0.02 }, + { "time": 0.3966, "x": -65.63, "y": 6.74 }, + { "time": 0.4407, "x": -75.71, "y": 39.77 }, + { "time": 0.5333, "x": -58.44, "y": 26.3 } + ] + }, + "foot2": { + "rotate": [ + { "time": 0, "angle": 262.95 }, + { "time": 0.0881, "angle": -74.33 }, + { "time": 0.1322, "angle": -4.26 }, + { "time": 0.1762, "angle": 13.38 }, + { "time": 0.2203, "angle": 28.95 }, + { "time": 0.2666, "angle": 35.05 }, + { "time": 0.3117, "angle": 7.53 }, + { "time": 0.3525, "angle": -31.42 }, + { "time": 0.4407, "angle": 260.06 }, + { "time": 0.5333, "angle": 262.95 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "root": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "Hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": -7.82 }, + { "time": 0.044, "x": 1.64, "y": -12.3 }, + { + "time": 0.0881, + "x": 1.64, + "y": -10.65, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.1762, "x": 1.64, "y": 9.54 }, + { "time": 0.2203, "x": 1.64, "y": -0.52 }, + { "time": 0.2666, "x": 0, "y": -7.82 }, + { "time": 0.3117, "x": 0, "y": -9.59 }, + { + "time": 0.3525, + "x": 0, + "y": -8.91, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4407, "x": 0, "y": 6.35 }, + { "time": 0.4848, "x": 1.64, "y": -0.52 }, + { "time": 0.5333, "x": 0, "y": -7.82 } + ] + }, + "L_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1762, "x": -1.45, "y": 9.68 }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "R_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "body": { + "rotate": [ + { "time": 0, "angle": -11.15 }, + { "time": 0.044, "angle": -16.76 }, + { "time": 0.1762, "angle": -8.61 }, + { "time": 0.3117, "angle": -20.17 }, + { "time": 0.4407, "angle": -8.61 }, + { "time": 0.5333, "angle": -11.15 } + ], + "translate": [ + { "time": 0, "x": 3.36, "y": -2.52 }, + { "time": 0.044, "x": 4.98, "y": 0.87 }, + { "time": 0.1762, "x": 2.6, "y": 4.02 }, + { "time": 0.3117, "x": 5.73, "y": 0.46 }, + { "time": 0.4407, "x": 2.7, "y": 5.1 }, + { "time": 0.5333, "x": 3.36, "y": -2.52 } + ] + }, + "thigh1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 6.02, "y": 0 }, + { "time": 0.1322, "x": -3.58, "y": 1.43 }, + { "time": 0.1762, "x": 0.23, "y": 2.72 }, + { "time": 0.2666, "x": 6.13, "y": -0.59 }, + { "time": 0.3305, "x": 8.81, "y": 5.77 }, + { "time": 0.3966, "x": 31, "y": 0.35 }, + { "time": 0.4848, "x": 22.13, "y": 0.17 }, + { "time": 0.5333, "x": 6.02, "y": 0 } + ] + }, + "thigh2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -8.31, "y": -2.37 }, + { "time": 0.1322, "x": -3.93, "y": -2.37 }, + { "time": 0.2666, "x": 3.22, "y": -1.52 }, + { "time": 0.3525, "x": -18.12, "y": 0.17 }, + { "time": 0.3966, "x": -28.38, "y": 0.17 }, + { "time": 0.5333, "x": -8.31, "y": -2.37 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 8.08 }, + { + "time": 0.044, + "angle": 1.34, + "curve": [ 0.25, 0, 0.851, 0.81 ] + }, + { "time": 0.1762, "angle": 6.45 }, + { "time": 0.2666, "angle": 10.37 }, + { + "time": 0.3117, + "angle": 3.57, + "curve": [ 0.25, 0, 0.842, 0.77 ] + }, + { "time": 0.4407, "angle": 7.81 }, + { "time": 0.5333, "angle": 8.08 } + ], + "translate": [ + { "time": 0, "x": 2.87, "y": 0.23 }, + { "time": 0.044, "x": -3.5, "y": -1.82 }, + { "time": 0.1762, "x": 4.6, "y": 0.76 }, + { "time": 0.2666, "x": 1.55, "y": -6.16 }, + { "time": 0.3117, "x": -7.07, "y": -8.66 }, + { "time": 0.4407, "x": 7.03, "y": 0.05 }, + { "time": 0.5333, "x": 2.87, "y": 0.23 } + ] + }, + "mantles": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.044, "angle": -2.17 }, + { "time": 0.2666, "angle": 2.9 }, + { "time": 0.3117, "angle": -0.95 }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.044, "x": -2.6, "y": -0.65 }, + { "time": 0.2666, "x": 1.39, "y": -0.59 }, + { "time": 0.3117, "x": -2.6, "y": -0.65 }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "shin1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "shin2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "upperarm2": { + "rotate": [ + { "time": 0, "angle": 30.8 }, + { "time": 0.044, "angle": 38.3 }, + { "time": 0.1322, "angle": 5.43 }, + { + "time": 0.2203, + "angle": 334.6, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.3117, "angle": 328.38 }, + { "time": 0.4407, "angle": 21.28 }, + { "time": 0.5333, "angle": 30.8 } + ], + "translate": [ + { "time": 0, "x": -5.33, "y": -1.55 }, + { "time": 0.1762, "x": -6.43, "y": 2.12 }, + { "time": 0.5333, "x": -5.33, "y": -1.55 } + ] + }, + "forearm2": { + "rotate": [ + { "time": 0, "angle": 35.89 }, + { "time": 0.0881, "angle": 25.71 }, + { "time": 0.1762, "angle": 29.3 }, + { + "time": 0.2203, + "angle": 34.63, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.3117, "angle": 38.94 }, + { "time": 0.4407, "angle": 30.09 }, + { "time": 0.5333, "angle": 35.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "hand2": { + "rotate": [ + { "time": 0, "angle": 8.06 }, + { "time": 0.044, "angle": 12.45 }, + { "time": 0.1762, "angle": 33.85 }, + { "time": 0.4407, "angle": 22.92 }, + { "time": 0.5333, "angle": 8.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "weapon": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.5333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5333, "x": 0, "y": 0 } + ] + }, + "hair01": { + "rotate": [ + { "time": 0, "angle": 44.04 }, + { + "time": 0.044, + "angle": 14.22, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.1322, + "angle": 5.9, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.2203, "angle": 31.54 }, + { "time": 0.2666, "angle": 44.04 }, + { + "time": 0.3117, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3966, + "angle": 5.9, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4848, "angle": 31.54 }, + { "time": 0.5333, "angle": 44.04 } + ], + "translate": [ + { "time": 0, "x": 2.04, "y": 5.53 }, + { + "time": 0.044, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.0881, "x": 0.4, "y": -10.84 }, + { + "time": 0.1322, + "x": 4.4, + "y": -15.87, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.2203, "x": 5.94, "y": -2.12 }, + { "time": 0.2666, "x": 2.04, "y": 5.53 }, + { + "time": 0.3117, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.3525, "x": 0.4, "y": -10.84 }, + { + "time": 0.3966, + "x": 4.4, + "y": -15.87, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4848, "x": 5.94, "y": -2.12 }, + { "time": 0.5333, "x": 2.04, "y": 5.53 } + ] + }, + "bone2": { + "rotate": [ + { "time": 0, "angle": 16.31 }, + { + "time": 0.044, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.0881, "angle": -10.16 }, + { + "time": 0.1322, + "angle": -14.57, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.2203, "angle": 9.83 }, + { "time": 0.2666, "angle": 16.31 }, + { + "time": 0.3117, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.3525, "angle": -10.16 }, + { + "time": 0.3966, + "angle": -14.57, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4848, "angle": 9.83 }, + { "time": 0.5333, "angle": 16.31 } + ], + "translate": [ + { "time": 0, "x": -13.75, "y": 7.39 }, + { + "time": 0.044, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.0881, "x": 3.58, "y": -1.15 }, + { + "time": 0.1322, + "x": 8.09, + "y": -5.71, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.2203, "x": -8.02, "y": 1.86 }, + { "time": 0.2666, "x": -13.75, "y": 7.39 }, + { + "time": 0.3117, + "x": -9.98, + "y": 3.28, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.3525, "x": 3.58, "y": -1.15 }, + { + "time": 0.3966, + "x": 8.09, + "y": -5.71, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4848, "x": -8.02, "y": 1.86 }, + { "time": 0.5333, "x": -13.75, "y": 7.39 } + ] + } + }, + "ffd": { + "default": { + "body": { + "body": [ + { + "time": 0, + "offset": 12, + "vertices": [ 2.58728, 10.16382, -0.16621, 4.50657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.23097, 5.2839, -0.84591, 9.09544, 0, 0, -0.84591, 9.09544, -0.84591, 9.09544, -0.23097, 5.2839, -0.23097, 5.2839, -0.16621, 4.50657, -0.84591, 9.09544 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2666, + "offset": 8, + "vertices": [ -0.5755, -1.94941, 2.00167, -9.49192, -0.33624, -11.77181, -6.3903, -8.66438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.3903, -8.66438, -0.33624, -11.77181, 0, 0, -0.33624, -11.77181, -0.33624, -11.77181, -6.3903, -8.66438, -6.3903, -8.66438, -6.3903, -8.66438, -0.33624, -11.77181 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5333, + "offset": 12, + "vertices": [ 2.58728, 10.16382, -0.16621, 4.50657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.23097, 5.2839, -0.84591, 9.09544, 0, 0, -0.84591, 9.09544, -0.84591, 9.09544, -0.23097, 5.2839, -0.23097, 5.2839, -0.16621, 4.50657, -0.84591, 9.09544 ] + } + ] + }, + "eyes": { + "eyes": [ + { "time": 0 }, + { + "time": 0.2666, + "vertices": [ 6.76959, 1.0625, 15.002, 0.58575, 19.83156, 0.77389, 23.31313, -0.40103, 22.66579, -0.49446, 19.83156, 0.77389, 15.002, 0.58575, 6.12215, 0.96937 ] + }, + { "time": 0.5333 } + ] + }, + "head": { + "head": [ + { + "time": 0, + "offset": 18, + "vertices": [ -6.48673, 0.51687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.48673, 0.51687, 0, 0, -4.54435, -0.64837, -4.54435, -0.64837 ], + "curve": [ 0.227, 0.34, 0.572, 0.68 ] + }, + { + "time": 0.044, + "offset": 12, + "vertices": [ 0.99863, 0.04226, 0.67335, 0.02855, 3.60092, -3.67205, 5.49033, -3.41875, 0.89464, 0.30795, -1.14841, -0.04869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.66312, 0.11272, 1.85459, 0.07851, 1.85459, 0.07852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.13307, 0.30453, 5.89205, 0.17003, -0.17825, -0.24601, -0.17825, -0.24601 ], + "curve": [ 0.26, 0.38, 0.621, 0.72 ] + }, + { + "time": 0.1333, + "offset": 12, + "vertices": [ 2.08863, 0.08839, 1.40831, 0.05971, 1.70105, 0.20652, 12.73297, 0.17214, 1.87114, 0.64409, -2.40191, -0.10184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.87897, -4.35248, 3.87887, 0.16421, 3.87887, 0.16422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.80191, 0.07277, 12.32319, 0.35562, 4.58732, 0.19315, 4.58732, 0.19315, 3.41206, -0.09185 ], + "curve": [ 0.332, 0.38, 0.671, 0.71 ] + }, + { + "time": 0.1762, + "offset": 12, + "vertices": [ 2.41841, 0.10234, 1.63067, 0.06914, 1.12625, 1.37998, 14.92421, 1.25856, 2.16658, 0.74578, -2.78115, -0.11792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.87107, 0.27299, 4.49131, 0.19014, 4.49131, 0.19015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.90007, 0.00265, 14.26891, 0.41177, 6.02913, 0.32602, 6.02913, 0.32602, 4.44437, -0.11964 ], + "curve": [ 0.39, 0.63, 0.753, 1 ] + }, + { + "time": 0.2666, + "offset": 12, + "vertices": [ 2.79754, 0.11839, 1.8863, 0.07998, 0, 0, 16.97794, -0.22148, 2.50623, 0.8627, -3.21714, -0.13641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.97683, -2.44119, 5.1954, 0.21995, 5.1954, 0.21997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.31223, -0.07795, 16.50582, 0.47633, 7.68671, 0.47877, 10.35957, 0.20314, 8.39172, 0.32814 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3117, + "offset": 12, + "vertices": [ 0.99863, 0.04226, 0.67335, 0.02855, 3.60092, -3.67205, 5.49033, -3.41875, 0.89464, 0.30795, -1.14841, -0.04869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.66312, 0.11272, 1.85459, 0.07851, 1.85459, 0.07852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.13307, 0.30453, 7.33679, 0.50061, -0.17825, -0.24601, -0.17825, -0.24601, 4.81586, 1.10192 ], + "curve": [ 0.248, 0.42, 0.642, 0.77 ] + }, + { + "time": 0.5333, + "offset": 18, + "vertices": [ -6.48673, 0.51687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.48673, 0.51687, 0, 0, -4.54435, -0.64837, -4.54435, -0.64837 ] + } + ] + }, + "mantles": { + "mantles": [ + { + "time": 0, + "offset": 2, + "vertices": [ -0.28599, 2.32239, 3.1293, 5.3126, 0.13581, 2.32148, 0.13581, 2.32148, 3.1293, 5.3126, -0.28599, 2.32239 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2666, + "vertices": [ 4.71967, -7.39242, 1.11851, -17.07923, 2.82788, -9.03922, -0.48089, -3.11594, -0.48089, -3.11594, 2.82788, -9.03922, 0.68636, -9.22625, -0.16158, 3.04387 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5333, + "offset": 2, + "vertices": [ -0.28599, 2.32239, 3.1293, 5.3126, 0.13581, 2.32148, 0.13581, 2.32148, 3.1293, 5.3126, -0.28599, 2.32239 ] + } + ] + }, + "mouth": { + "mouth": [ + { "time": 0 }, + { + "time": 0.2666, + "vertices": [ 9.24916, -1.34519, 25.71696, -0.4806, 25.58307, -0.49992, 9.1152, -1.36451 ] + }, + { "time": 0.5333 } + ] + }, + "weapon": { + "sword": [ + { + "time": 0, + "vertices": [ -7.49269, -16.91794, 6.38517, 0.02189, 6.38517, 0.02189, -7.60862, 16.86521 ] + }, + { + "time": 0.2666, + "vertices": [ 8.41458, 4.30094, 0, 0, 0, 0, 8.4439, -4.24281 ] + }, + { + "time": 0.5333, + "vertices": [ -7.49269, -16.91794, 6.38517, 0.02189, 6.38517, 0.02189, -7.60862, 16.86521 ] + } + ] + } + } + }, + "events": [ + { "time": 0.2666, "name": "Footstep" }, + { "time": 0.5333, "name": "Footstep" } + ] + }, + "Walk": { + "bones": { + "L_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 68.76, "y": 0 }, + { "time": 0.1333, "x": 57.43, "y": 0 }, + { "time": 0.2666, "x": 41.05, "y": 0 }, + { "time": 0.4, "x": 21.33, "y": 0 }, + { "time": 0.5333, "x": 5.89, "y": 0 }, + { "time": 0.6666, "x": 4.91, "y": 0 }, + { "time": 0.8, "x": 5.89, "y": 10.31 }, + { "time": 0.9333, "x": 44.68, "y": 10.8 }, + { "time": 1.0666, "x": 68.76, "y": 0 } + ] + }, + "thigh1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 24.92, "y": 0 }, + { "time": 0.2666, "x": 22.2, "y": 0 }, + { "time": 0.4, "x": 21.75, "y": -1.01 }, + { "time": 0.5333, "x": 21.29, "y": 0 }, + { "time": 0.6666, "x": 16.1, "y": 1 }, + { "time": 0.9333, "x": 21.7, "y": -3.92 }, + { "time": 1.0666, "x": 24.92, "y": 0 } + ] + }, + "Hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": -7.39 }, + { "time": 0.1333, "x": 0, "y": -6.32 }, + { "time": 0.2666, "x": 0, "y": -1.44 }, + { "time": 0.3333, "x": 0, "y": 1.49 }, + { "time": 0.4, "x": 0, "y": 0.87 }, + { "time": 0.5333, "x": 0, "y": -9.59 }, + { "time": 0.6666, "x": 0, "y": -8.44 }, + { "time": 0.8, "x": 0, "y": -1.44 }, + { "time": 0.8666, "x": 0, "y": 1.49 }, + { "time": 0.9333, "x": 0, "y": 0.87 }, + { "time": 1.0666, "x": 0, "y": -7.39 } + ] + }, + "foot1": { + "rotate": [ + { "time": 0, "angle": 17.4 }, + { "time": 0.1333, "angle": -0.28 }, + { "time": 0.4, "angle": -10.63 }, + { "time": 0.5333, "angle": -8.71 }, + { "time": 0.6666, "angle": -24.7 }, + { "time": 0.8, "angle": -43.24 }, + { "time": 0.9333, "angle": -35.2 }, + { "time": 1.0666, "angle": 17.4 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "thigh2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -25.09, "y": 0 }, + { "time": 0.2, "x": -16.15, "y": -4.51 }, + { "time": 0.4, "x": -9.43, "y": -3.48 }, + { "time": 0.5333, "x": -4.25, "y": -1.41 }, + { "time": 0.6666, "x": -6.64, "y": 0.04 }, + { "time": 0.8, "x": -11.55, "y": -2.12 }, + { "time": 0.9333, "x": -22.84, "y": -3.88 }, + { "time": 1.0666, "x": -25.09, "y": 0 } + ] + }, + "R_Ground": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -53.9, "y": 0 }, + { "time": 0.1333, "x": -55, "y": 2.56 }, + { "time": 0.2666, "x": -56, "y": 14.27 }, + { "time": 0.4, "x": -9.55, "y": 9.63 }, + { "time": 0.5333, "x": 18.47, "y": -0.26 }, + { "time": 0.6666, "x": 6.23, "y": -0.26 }, + { "time": 0.8, "x": -20.75, "y": -0.26 }, + { "time": 0.9333, "x": -36.46, "y": -3.45 }, + { "time": 1.0666, "x": -53.9, "y": 0 } + ] + }, + "foot2": { + "rotate": [ + { "time": 0, "angle": -20 }, + { "time": 0.1333, "angle": -36.58 }, + { "time": 0.2666, "angle": -69.51 }, + { "time": 0.4, "angle": -13.92 }, + { "time": 0.5333, "angle": 33.26 }, + { "time": 0.6666, "angle": 0.41 }, + { "time": 0.9333, "angle": -1.16 }, + { "time": 1.0666, "angle": -20 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "upperarm1": { + "rotate": [ + { "time": 0, "angle": 13.97 }, + { "time": 0.1333, "angle": 2.64 }, + { "time": 0.5333, "angle": -293.8 }, + { "time": 0.6666, "angle": -302.37 }, + { "time": 0.8, "angle": 41.55 }, + { "time": 0.9333, "angle": 14.48 }, + { "time": 1.0666, "angle": 13.97 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1333, "x": 4.42, "y": 3.57 }, + { "time": 0.5333, "x": -0.22, "y": -4.77 }, + { "time": 0.6666, "x": 0.24, "y": -2.39 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "forearm1": { + "rotate": [ + { "time": 0, "angle": -11.7 }, + { "time": 0.1333, "angle": -5.73 }, + { "time": 0.5333, "angle": 24.76 }, + { + "time": 0.6666, + "angle": 33.27, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.8, "angle": 3.08 }, + { "time": 0.9333, "angle": 5.39 }, + { "time": 1.0666, "angle": -11.7 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "hand1": { + "rotate": [ + { "time": 0, "angle": -19.62 }, + { "time": 0.1333, "angle": -25.06 }, + { "time": 0.2666, "angle": -27.67 }, + { "time": 0.4, "angle": -34.31 }, + { "time": 0.5333, "angle": -24.05 }, + { "time": 0.8, "angle": 16.76 }, + { "time": 0.9333, "angle": 7.44 }, + { "time": 1.0666, "angle": -19.62 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "body": { + "rotate": [ + { "time": 0, "angle": 6.02 }, + { + "time": 0.1333, + "angle": 1.27, + "curve": [ 0.464, 0, 0.75, 1 ] + }, + { "time": 0.3333, "angle": 8.57 }, + { "time": 0.5333, "angle": 4.13 }, + { + "time": 0.6666, + "angle": 1.27, + "curve": [ 0.464, 0, 0.75, 1 ] + }, + { "time": 0.8666, "angle": 7.42 }, + { "time": 1.0666, "angle": 6.02 } + ], + "translate": [ + { "time": 0, "x": 4.41, "y": -1.14 }, + { "time": 0.1333, "x": 10.48, "y": -2.93 }, + { "time": 0.3333, "x": 1.78, "y": 5.09 }, + { "time": 0.5333, "x": 12.04, "y": -2.64 }, + { "time": 0.6666, "x": 10.48, "y": -2.93 }, + { "time": 0.8666, "x": 1.78, "y": 6.43 }, + { "time": 1.0666, "x": 4.41, "y": -0.47 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -11.7 }, + { "time": 0.1333, "angle": -2.87 }, + { "time": 0.3333, "angle": -10.46 }, + { "time": 0.5333, "angle": -6.46 }, + { "time": 0.6666, "angle": -2.85 }, + { "time": 0.8666, "angle": -8.52 }, + { "time": 1.0666, "angle": -11.7 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1333, "x": -2.96, "y": -3.42 }, + { "time": 0.3333, "x": 1.04, "y": 0.33 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.6666, "x": -2.96, "y": -3.42 }, + { "time": 0.8666, "x": 1.04, "y": 0.33 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "upperarm2": { + "rotate": [ + { "time": 0, "angle": 349.66 }, + { "time": 0.1333, "angle": 349.79 }, + { "time": 0.2666, "angle": 343.53 }, + { "time": 0.4, "angle": 334.09 }, + { "time": 0.5333, "angle": 327.79 }, + { "time": 0.8, "angle": 338.53 }, + { "time": 0.9333, "angle": 354.68 }, + { "time": 1.0666, "angle": 349.66 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1333, "x": -0.76, "y": -1.44 }, + { "time": 0.5333, "x": -0.19, "y": 8.7 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "forearm2": { + "rotate": [ + { "time": 0, "angle": 21.04 }, + { "time": 0.1333, "angle": 24.41 }, + { "time": 0.2666, "angle": -0.81 }, + { "time": 0.4, "angle": 23.68 }, + { "time": 0.5333, "angle": 23.61 }, + { "time": 0.6666, "angle": 25.56 }, + { "time": 0.8, "angle": 12.55 }, + { "time": 0.9333, "angle": -0.27 }, + { "time": 1.0666, "angle": 21.04 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "hand2": { + "rotate": [ + { "time": 0, "angle": -12.1 }, + { "time": 0.1333, "angle": -8.87 }, + { "time": 0.2666, "angle": 13.76 }, + { "time": 0.4, "angle": -3.02 }, + { "time": 0.5333, "angle": 11.48 }, + { "time": 0.6666, "angle": 5.24 }, + { "time": 0.8, "angle": 3.93 }, + { "time": 0.9333, "angle": 0.31 }, + { "time": 1.0666, "angle": -12.1 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "root": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "L_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "R_Ankle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": -1.35, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": -1.35 } + ] + }, + "mantles": { + "rotate": [ + { "time": 0, "angle": -3.56 }, + { "time": 0.3333, "angle": -8.55 }, + { "time": 0.5333, "angle": -6.73 }, + { "time": 0.8666, "angle": -8.55 }, + { "time": 1.0666, "angle": -3.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1333, "x": -1.9, "y": -1.47 }, + { "time": 0.3333, "x": -0.66, "y": -0.2 }, + { "time": 0.6666, "x": -1.9, "y": -1.47 }, + { "time": 0.8666, "x": -0.66, "y": -0.2 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "shin1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "shin2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "capeRoot": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "weapon": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "LookConstraintGoal": { + "rotate": [ + { "time": 0.9333, "angle": 0 } + ] + }, + "bone2": { + "rotate": [ + { "time": 0, "angle": 1.59 }, + { "time": 0.1333, "angle": 4.43 }, + { "time": 0.2666, "angle": -11.57 }, + { "time": 0.4, "angle": 4.79 }, + { "time": 0.5333, "angle": 1.59 }, + { "time": 0.6666, "angle": 4.43 }, + { "time": 0.8, "angle": -11.57 }, + { "time": 0.9333, "angle": 4.79 }, + { "time": 1.0666, "angle": 1.59 } + ], + "translate": [ + { "time": 0, "x": -1.69, "y": 2.56 }, + { "time": 0.1333, "x": -9.99, "y": 4.3 }, + { "time": 0.2666, "x": -2.46, "y": 3.64 }, + { "time": 0.4, "x": -5.09, "y": 7.68 }, + { "time": 0.5333, "x": -1.69, "y": 2.56 }, + { "time": 0.6666, "x": -9.99, "y": 4.3 }, + { "time": 0.8, "x": -2.46, "y": 3.64 }, + { "time": 0.9333, "x": -5.09, "y": 7.68 }, + { "time": 1.0666, "x": -1.69, "y": 2.56 } + ] + }, + "hair01": { + "rotate": [ + { "time": 0, "angle": 3.12 }, + { "time": 0.1333, "angle": 9.9 }, + { "time": 0.2666, "angle": 1.74 }, + { "time": 0.4, "angle": 9.38 }, + { "time": 0.5333, "angle": 3.12 }, + { "time": 0.6666, "angle": 9.9 }, + { "time": 0.8, "angle": 1.74 }, + { "time": 0.9333, "angle": 9.38 }, + { "time": 1.0666, "angle": 3.12 } + ], + "translate": [ + { "time": 0, "x": -1.38, "y": -0.91 }, + { "time": 0.1333, "x": -0.79, "y": -1.34 }, + { "time": 0.2666, "x": 2.12, "y": -10.12 }, + { "time": 0.4, "x": -4.16, "y": -2.75 }, + { "time": 0.5333, "x": -1.38, "y": -0.91 }, + { "time": 0.6666, "x": -0.79, "y": -1.34 }, + { "time": 0.8, "x": 2.12, "y": -10.12 }, + { "time": 0.9333, "x": -4.16, "y": -2.75 }, + { "time": 1.0666, "x": -1.38, "y": -0.91 } + ] + } + }, + "ffd": { + "default": { + "body": { + "body": [ + { + "time": 0, + "offset": 12, + "vertices": [ 2.58728, 10.16382, -0.16621, 4.50657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.23097, 5.2839, -0.84591, 9.09544, 0, 0, -0.84591, 9.09544, -0.84591, 9.09544, -0.23097, 5.2839, -0.23097, 5.2839, -0.16621, 4.50657, -0.84591, 9.09544 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5333, + "offset": 8, + "vertices": [ -0.5755, -1.94941, 2.00167, -9.49192, -0.33624, -11.77181, -6.3903, -8.66438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.3903, -8.66438, -0.33624, -11.77181, 0, 0, -0.33624, -11.77181, -0.33624, -11.77181, -6.3903, -8.66438, -6.3903, -8.66438, -6.3903, -8.66438, -0.33624, -11.77181 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "offset": 12, + "vertices": [ 2.58728, 10.16382, -0.16621, 4.50657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.23097, 5.2839, -0.84591, 9.09544, 0, 0, -0.84591, 9.09544, -0.84591, 9.09544, -0.23097, 5.2839, -0.23097, 5.2839, -0.16621, 4.50657, -0.84591, 9.09544 ] + } + ] + }, + "eyes": { + "eyes": [ + { + "time": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5333, + "vertices": [ 6.76959, 1.0625, 15.002, 0.58575, 19.83156, 0.77389, 23.31313, -0.40103, 22.66579, -0.49446, 19.83156, 0.77389, 15.002, 0.58575, 6.12215, 0.96937 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666 } + ] + }, + "head": { + "head": [ + { + "time": 0, + "offset": 18, + "vertices": [ -6.48673, 0.51687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.54038, -0.15547, -4.54038, -0.15547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.48673, 0.51687, 0, 0, -11.14854, -0.87455, -8.67198, -0.78973 ], + "curve": [ 0.227, 0.34, 0.572, 0.68 ] + }, + { + "time": 0.5333, + "offset": 12, + "vertices": [ 2.41841, 0.10234, 1.63067, 0.06914, 1.12625, 1.37998, 15.33712, 1.2489, 2.16658, 0.74578, -2.78115, -0.11792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.70107, 0.2722, 4.49131, 0.19014, 7.32128, 0.18938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.07989, 0.52394, 21.03843, 0.48741, 6.02913, 0.32602, 6.02913, 0.32602, 9.14706, 1.88179 ], + "curve": [ 0.39, 0.63, 0.753, 1 ] + }, + { + "time": 1.0666, + "offset": 18, + "vertices": [ -6.48673, 0.51687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.54038, -0.15547, -4.54038, -0.15547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.48673, 0.51687, 0, 0, -11.14854, -0.87455, -8.67198, -0.78973 ] + } + ] + }, + "mantles": { + "mantles": [ + { + "time": 0, + "offset": 2, + "vertices": [ -0.28599, 2.32239, 3.1293, 5.3126, 0.13581, 2.32148, 0.13581, 2.32148, 3.1293, 5.3126, -0.28599, 2.32239 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5333, + "vertices": [ 4.71967, -7.39242, 1.11851, -17.07923, 2.82788, -9.03922, -0.48089, -3.11594, -0.48089, -3.11594, 2.82788, -9.03922, 0.68636, -9.22625, -0.16158, 3.04387 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "offset": 2, + "vertices": [ -0.28599, 2.32239, 3.1293, 5.3126, 0.13581, 2.32148, 0.13581, 2.32148, 3.1293, 5.3126, -0.28599, 2.32239 ] + } + ] + }, + "mouth": { + "mouth": [ + { + "time": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5333, + "vertices": [ 9.24916, -1.34519, 25.71696, -0.4806, 25.58307, -0.49992, 9.1152, -1.36451 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666 } + ] + }, + "weapon": { + "sword": [ + { + "time": 0, + "vertices": [ 0.02426, -7.08119, 0, 0, 0, 0, -0.0243, 7.08133 ] + }, + { "time": 0.5333 }, + { + "time": 1.0666, + "vertices": [ 0.02426, -7.08119, 0, 0, 0, 0, -0.0243, 7.08133 ] + } + ] + } + } + }, + "events": [ + { "time": 0.5333, "name": "Footstep" }, + { "time": 1.0666, "name": "Footstep" } + ] + } +} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero.atlas.txt.meta b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.json.meta similarity index 58% rename from spine-unity/Assets/Examples/Spine/Hero/Hero.atlas.txt.meta rename to spine-unity/Assets/Examples/Spine/Hero/hero-mesh.json.meta index e4ffb1d5c..762549a18 100644 --- a/spine-unity/Assets/Examples/Spine/Hero/Hero.atlas.txt.meta +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.json.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: 51b2d149fb5a7f7449fdafb65d240843 +guid: 1d300d9a4480c99409d838b49f344f7a TextScriptImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png new file mode 100644 index 000000000..1a53b5d81 Binary files /dev/null and b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png differ diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero.png.meta b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png.meta similarity index 96% rename from spine-unity/Assets/Examples/Spine/Hero/Hero.png.meta rename to spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png.meta index 53d54547b..171050e85 100644 --- a/spine-unity/Assets/Examples/Spine/Hero/Hero.png.meta +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a34fffda3f6321b4288a172798648ba3 +guid: 8d970daea81f33648ae2d84ab59c88d4 TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/spine-tk2d/Assets/examples/goblins/Goblins SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Atlas.asset similarity index 68% rename from spine-tk2d/Assets/examples/goblins/Goblins SkeletonData.asset rename to spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Atlas.asset index f76e1dbf7..9d82fa71f 100644 Binary files a/spine-tk2d/Assets/examples/goblins/Goblins SkeletonData.asset and b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Atlas.asset differ diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas.prefab.meta b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Atlas.asset.meta similarity index 58% rename from spine-tk2d/Assets/examples/goblins/GoblinsAtlas.prefab.meta rename to spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Atlas.asset.meta index 788714172..e7d3c3ad3 100644 --- a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas.prefab.meta +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Atlas.asset.meta @@ -1,4 +1,4 @@ fileFormatVersion: 2 -guid: db91f44e9acec474fb74db538fe06935 +guid: 54d41b08afeefd44292ae69c4a235aa9 NativeFormatImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/Hero_Material.mat b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat similarity index 93% rename from spine-unity/Assets/Examples/Spine/Hero/Hero_Material.mat rename to spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat index 117459e8f..a4b4b8ec2 100644 Binary files a/spine-unity/Assets/Examples/Spine/Hero/Hero_Material.mat and b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat differ diff --git a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat.meta b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat.meta new file mode 100644 index 000000000..85debf0be --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: b04b8c6e4c57e78449f243c27617a2cd +NativeFormatImporter: + userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_SkeletonData.asset new file mode 100644 index 000000000..98307d644 Binary files /dev/null and b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_SkeletonData.asset differ diff --git a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_SkeletonData.asset.meta b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_SkeletonData.asset.meta new file mode 100644 index 000000000..8f0db9ce3 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_SkeletonData.asset.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: a5967d74cd1f3c741ba7758da7511bcf +NativeFormatImporter: + userData: diff --git a/spine-tk2d/Assets/examples/goblins.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.meta similarity index 63% rename from spine-tk2d/Assets/examples/goblins.meta rename to spine-unity/Assets/Examples/Spine/Raggedy Spineboy.meta index c23c0f726..ff4d0f512 100644 --- a/spine-tk2d/Assets/examples/goblins.meta +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a9308cf14d9ae5040ad789b02f1b3baf +guid: 31a18437d3dfcde44a2e4b24361a3620 folderAsset: yes DefaultImporter: userData: diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab new file mode 100644 index 000000000..3828cb89e Binary files /dev/null and b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab differ diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab.meta new file mode 100644 index 000000000..cba1ddd6d --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 5c60df38c5334a249b38ac8cddc6433b +NativeFormatImporter: + userData: diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.atlas.txt b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.atlas.txt new file mode 100644 index 000000000..5597c2893 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.atlas.txt @@ -0,0 +1,34 @@ + +Raggedy Spineboy.png +size: 256,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +arm + rotate: false + xy: 140, 178 + size: 71, 75 + orig: 71, 75 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 66 + size: 136, 187 + orig: 136, 187 + offset: 0, 0 + index: -1 +leg + rotate: false + xy: 140, 77 + size: 36, 99 + orig: 36, 99 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 2, 2 + size: 62, 95 + orig: 62, 95 + offset: 0, 0 + index: -1 diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.atlas.txt.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.atlas.txt.meta new file mode 100644 index 000000000..6d92e370d --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.atlas.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: bdfc7a081d52b68499e44aa82689a73d +TextScriptImporter: + userData: diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.json b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.json new file mode 100644 index 000000000..41815f4bb --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.json @@ -0,0 +1,374 @@ +{ +"skeleton": { "hash": "VwRlHLlX3k1oQzXmdPiYJ828MGo", "spine": "2.1.27", "width": 157.46, "height": 364.95, "images": "" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "x": -0.79, "y": 91.41 }, + { "name": "L-thigh", "parent": "hip", "length": 29.76, "x": 17.31, "y": -5.19, "rotation": -81.94 }, + { "name": "R-thigh", "parent": "hip", "length": 29.49, "x": -18.18, "y": -6.06, "rotation": -93.15 }, + { "name": "abdomen", "parent": "hip", "length": 33.49, "y": -0.1, "rotation": 89.54 }, + { "name": "L-foot", "parent": "L-thigh", "length": 37.25, "x": 37.35, "y": -1.78, "rotation": -6.29 }, + { "name": "R-foot", "parent": "R-thigh", "length": 39.98, "x": 36.41, "y": 0.27, "rotation": -1.8 }, + { "name": "chest", "parent": "abdomen", "length": 29.58, "x": 38.07, "y": 0.72 }, + { "name": "L-arm", "parent": "chest", "length": 32.67, "x": 24.63, "y": -16.69, "rotation": -121.22 }, + { "name": "R-arm", "parent": "chest", "length": 36.76, "x": 26, "y": 13.63, "rotation": 133.37 }, + { "name": "head", "parent": "chest", "length": 94.23, "x": 41.01, "y": -0.1, "rotation": -2.25 }, + { "name": "L-forearm", "parent": "L-arm", "length": 33.69, "x": 39.09, "y": -2.34, "rotation": -12.09 }, + { "name": "R-forearm", "parent": "R-arm", "length": 36.13, "x": 41.65, "y": 0.28, "rotation": 2.72 }, + { "name": "scalp", "parent": "head", "length": 31.94, "x": 129.34, "y": 15.1, "rotation": -29.89 }, + { "name": "hair1", "parent": "scalp", "length": 23, "x": 36.51, "y": 4.12, "rotation": 68.48 }, + { "name": "hair2", "parent": "hair1", "length": 23.49, "x": 29.03, "y": 1.58, "rotation": 59.55 } +], +"slots": [ + { "name": "R-arm", "bone": "R-arm", "attachment": "arm" }, + { "name": "L-arm", "bone": "L-arm", "attachment": "arm" }, + { "name": "L-leg", "bone": "L-thigh", "attachment": "leg" }, + { "name": "R-leg", "bone": "R-thigh", "attachment": "leg" }, + { "name": "torso", "bone": "abdomen", "attachment": "torso" }, + { "name": "head", "bone": "head", "attachment": "head" } +], +"skins": { + "default": { + "L-arm": { + "arm": { + "type": "skinnedmesh", + "uvs": [ 1, 0.16417, 0.90367, 0.30177, 0.80735, 0.43937, 0.75345, 0.50663, 0.71536, 0.55416, 0.6656, 0.61625, 0.63233, 0.65777, 0.59417, 0.7054, 0.45366, 0.8527, 0.31315, 1, 0.15657, 1, 0, 1, 0, 0.71457, 0.13235, 0.59073, 0.2647, 0.46689, 0.34675, 0.39836, 0.39153, 0.36096, 0.43007, 0.32876, 0.4689, 0.29633, 0.52302, 0.25112, 0.59417, 0.19169, 0.72983, 0.09584, 0.86549, 0, 1, 0, 0.15702, 0.83582, 0.46721, 0.51561, 0.78995, 0.22527, 0.34029, 0.70958, 0.62889, 0.38429 ], + "triangles": [ 10, 24, 9, 9, 27, 8, 9, 24, 27, 10, 11, 24, 11, 12, 24, 8, 27, 7, 12, 13, 24, 24, 13, 27, 13, 14, 27, 27, 25, 7, 25, 27, 14, 7, 25, 6, 6, 25, 5, 18, 4, 17, 28, 4, 18, 4, 28, 3, 15, 16, 25, 16, 17, 25, 25, 17, 5, 17, 4, 5, 3, 28, 2, 28, 26, 2, 2, 26, 1, 18, 19, 28, 19, 20, 28, 28, 20, 26, 1, 26, 0, 20, 21, 26, 26, 22, 0, 26, 21, 22, 22, 23, 0, 25, 14, 15 ], + "vertices": [ 1, 8, -11.38, 11.4, 1, 1, 8, 0.99, 11.79, 1, 1, 8, 13.36, 12.17, 1, 1, 8, 19.69, 11.97, 1, 2, 8, 24.16, 11.82, 0.91747, 11, -17.57, 10.72, 0.08252, 2, 8, 30, 11.63, 0.75238, 11, -11.82, 11.76, 0.24761, 2, 8, 33.91, 11.5, 0.44551, 11, -7.97, 12.46, 0.55448, 2, 8, 38.39, 11.36, 0.2127, 11, -3.56, 13.25, 0.78729, 2, 8, 53.17, 9.6, 0.07308, 11, 11.25, 14.64, 0.92691, 2, 8, 67.94999, 7.85, 0.00873, 11, 26.07, 16.03, 0.99126, 1, 11, 34.25, 8.51, 1, 1, 11, 42.44, 0.99, 1, 1, 11, 27.96, -14.77, 1, 2, 8, 50.32, -20.36, 0.05493, 11, 14.75, -15.25, 0.94506, 2, 8, 37.31, -18.06, 0.23231, 11, 1.55, -15.73, 0.76768, 2, 8, 29.75, -16.27, 0.47867, 11, -6.21, -15.58, 0.52132, 2, 8, 25.63, -15.3, 0.71242, 11, -10.43999, -15.49, 0.28757, 2, 8, 22.07, -14.47, 0.81875, 11, -14.09, -15.42, 0.18124, 2, 8, 18.5, -13.62, 0.9506, 11, -17.77, -15.34, 0.04939, 2, 8, 13.51, -12.45, 0.97879, 11, -22.89, -15.24, 0.0212, 2, 8, 6.95, -10.9, 0.99703, 11, -29.63, -15.11, 0.00296, 1, 8, -4.46999, -7.2, 1, 1, 8, -15.9, -3.49, 1, 1, 8, -21.42, 4.29, 1, 1, 11, 25.9, -0.52999, 1, 2, 8, 31.98, -4.21, 0.80128, 11, -6.55, -3.32, 0.19871, 1, 8, 0.97, 1.89, 1, 1, 11, 9.91, 1.29, 1, 1, 8, 17.31, -0.54, 1 ], + "hull": 24, + "edges": [ 0, 2, 2, 4, 4, 6, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0, 10, 34, 30, 32, 32, 34, 10, 12, 12, 14, 6, 8, 8, 10, 34, 36, 36, 38, 8, 36 ], + "width": 71, + "height": 75 + } + }, + "L-leg": { + "leg": { + "type": "skinnedmesh", + "uvs": [ 1, 0.23128, 1, 0.29497, 1, 0.37025, 1, 0.44552, 1, 0.50921, 1, 0.65975, 1, 0.71765, 1, 0.87399, 0.73923, 1, 0.2297, 1, 0, 0.89715, 0, 0.64817, 0.01978, 0.59915, 0.08516, 0.43711, 0.10541, 0.38693, 0.13057, 0.32458, 0.15317, 0.26858, 0.17799, 0.20706, 0.26155, 0, 1, 0, 0.61185, 0.12127, 0.51631, 0.54395 ], + "triangles": [ 21, 13, 4, 21, 4, 5, 12, 13, 21, 12, 21, 5, 12, 5, 6, 11, 12, 6, 9, 10, 11, 11, 6, 9, 6, 8, 9, 7, 8, 6, 20, 18, 19, 20, 19, 0, 17, 18, 20, 17, 20, 0, 17, 0, 1, 16, 17, 1, 16, 1, 2, 15, 16, 2, 15, 2, 3, 14, 15, 3, 14, 3, 4, 13, 14, 4 ], + "vertices": [ 1, 2, 11.02, 15.14, 1, 1, 2, 17.31, 14.75, 1, 2, 2, 24.75, 14.29, 0.95576, 5, -14.28, 14.6, 0.04423, 2, 2, 32.18999, 13.82, 0.71873, 5, -6.84, 14.95, 0.28126, 2, 2, 38.48, 13.43, 0.37176, 5, -0.54, 15.25, 0.62822, 2, 2, 53.36, 12.51, 0.00735, 5, 14.34, 15.96, 0.99264, 1, 5, 20.06, 16.23, 1, 1, 5, 35.52, 16.96999, 1, 1, 5, 48.43, 8.18, 1, 1, 5, 49.3, -10.13, 1, 1, 5, 39.52, -18.87, 1, 2, 2, 49.98, -23.34, 0.00312, 5, 14.9, -20.04, 0.99687, 2, 2, 45.18, -22.33, 0.02542, 5, 10.02, -19.56, 0.97457, 2, 2, 29.31, -18.99, 0.4709, 5, -6.1, -17.98, 0.52909, 2, 2, 24.4, -17.95, 0.69967, 5, -11.1, -17.48, 0.30032, 2, 2, 18.29, -16.66, 0.89625, 5, -17.31, -16.87, 0.10374, 2, 2, 12.81, -15.51, 0.97789, 5, -22.89, -16.32, 0.0221, 1, 2, 6.79, -14.24, 1, 1, 2, -13.48, -9.96, 1, 1, 2, -11.83, 16.56, 1, 1, 2, -0.71, 1.87, 1, 1, 5, 3.71, -1.97, 1 ], + "hull": 20, + "edges": [ 36, 38, 20, 22, 18, 20, 16, 18, 16, 14, 22, 24, 24, 10, 10, 12, 12, 14, 12, 22, 24, 26, 10, 8, 26, 8, 8, 6, 26, 28, 6, 28, 28, 30, 6, 4, 30, 4, 4, 2, 30, 32, 2, 32, 32, 34, 34, 36, 2, 0, 0, 38, 34, 0 ], + "width": 36, + "height": 99 + } + }, + "R-arm": { + "arm": { + "type": "skinnedmesh", + "uvs": [ 1, 0.16417, 0.90367, 0.30177, 0.80735, 0.43937, 0.75345, 0.50663, 0.71536, 0.55416, 0.6656, 0.61625, 0.63233, 0.65777, 0.59417, 0.7054, 0.45366, 0.8527, 0.31315, 1, 0.15657, 1, 0, 1, 0, 0.71457, 0.13235, 0.59073, 0.2647, 0.46689, 0.34675, 0.39836, 0.39153, 0.36096, 0.43007, 0.32876, 0.4689, 0.29633, 0.52302, 0.25112, 0.59417, 0.19169, 0.72983, 0.09584, 0.86549, 0, 1, 0, 0.15702, 0.83582, 0.46721, 0.51561, 0.78995, 0.22527, 0.34029, 0.70958, 0.62889, 0.38429 ], + "triangles": [ 10, 24, 9, 9, 27, 8, 9, 24, 27, 10, 11, 24, 11, 12, 24, 8, 27, 7, 12, 13, 24, 24, 13, 27, 13, 14, 27, 27, 25, 7, 25, 14, 15, 25, 27, 14, 7, 25, 6, 22, 23, 0, 26, 22, 0, 1, 26, 0, 6, 25, 5, 18, 4, 17, 28, 4, 18, 4, 28, 3, 15, 16, 25, 16, 17, 25, 25, 17, 5, 17, 4, 5, 3, 28, 2, 28, 26, 2, 2, 26, 1, 18, 19, 28, 19, 20, 28, 28, 20, 26, 20, 21, 26, 26, 21, 22 ], + "vertices": [ 1, 9, -6.97, 5.02, 1, 1, 9, 5.06, 7.92, 1, 1, 9, 17.09, 10.82, 1, 2, 9, 23.33, 11.91, 0.99563, 12, -17.74, 12.48, 0.00436, 2, 9, 27.74, 12.68, 0.95467, 12, -13.3, 13.04, 0.04532, 2, 9, 33.5, 13.68, 0.75827, 12, -7.5, 13.77, 0.24172, 2, 9, 37.34999, 14.35, 0.53963, 12, -3.63, 14.26, 0.46036, 2, 9, 41.75999, 15.12, 0.29362, 12, 0.81, 14.82, 0.70637, 2, 9, 56.59, 16.42, 3.9E-4, 12, 15.69, 15.4, 0.9996, 1, 12, 30.56, 15.99, 1, 1, 12, 38.33, 8.04, 1, 1, 12, 46.1, 0.1, 1, 1, 12, 30.79, -14.86, 1, 2, 9, 59.92, -13.5, 4.7E-4, 12, 17.58, -14.63, 0.99952, 2, 9, 46.71, -13.9, 0.17384, 12, 4.37, -14.41, 0.82615, 2, 9, 38.93999, -13.69, 0.56829, 12, -3.36, -13.83, 0.4317, 2, 9, 34.71, -13.58, 0.79613, 12, -7.59, -13.52, 0.20386, 2, 9, 31.06, -13.49, 0.92361, 12, -11.23, -13.25, 0.07638, 2, 9, 27.38, -13.39, 0.98277, 12, -14.9, -12.98, 0.01722, 1, 9, 22.26, -13.26, 1, 1, 9, 15.53, -13.08, 1, 1, 9, 3.58, -11.78, 1, 1, 9, -8.35999, -10.49, 1, 1, 9, -15.36, -3.99, 1, 1, 12, 29.5, -0.52999, 1, 2, 9, 38.66999, -1.43, 0.57762, 12, -3.06, -1.57, 0.42237, 1, 9, 7.06, -1.77, 1, 1, 12, 13.64, 2.15, 1, 1, 9, 23.56, -0.82, 1 ], + "hull": 24, + "edges": [ 0, 2, 2, 4, 4, 6, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0, 10, 34, 30, 32, 32, 34, 10, 12, 12, 14, 6, 8, 8, 10, 34, 36, 36, 38, 8, 36 ], + "width": 71, + "height": 75 + } + }, + "R-leg": { + "leg": { + "type": "skinnedmesh", + "uvs": [ 1, 0.23128, 1, 0.29497, 1, 0.37025, 1, 0.44552, 1, 0.50921, 1, 0.65975, 1, 0.71765, 1, 0.87399, 0.73923, 1, 0.2297, 1, 0, 0.89715, 0, 0.64817, 0.01978, 0.59915, 0.08516, 0.43711, 0.10541, 0.38693, 0.13057, 0.32458, 0.15317, 0.26858, 0.17799, 0.20706, 0.26155, 0, 1, 0, 0.61185, 0.12127, 0.51631, 0.54395 ], + "triangles": [ 21, 13, 4, 21, 4, 5, 12, 13, 21, 12, 21, 5, 12, 5, 6, 11, 12, 6, 9, 10, 11, 11, 6, 9, 6, 8, 9, 7, 8, 6, 20, 18, 19, 20, 19, 0, 17, 18, 20, 17, 20, 0, 17, 0, 1, 16, 17, 1, 16, 1, 2, 15, 16, 2, 15, 2, 3, 14, 15, 3, 14, 3, 4, 13, 14, 4 ], + "vertices": [ 1, 3, 7.41, 14.89, 1, 2, 3, 13.7, 15.23, 0.99431, 6, -23.16, 14.24, 0.00568, 2, 3, 21.14, 15.64, 0.9183, 6, -15.74, 14.88, 0.08169, 2, 3, 28.58, 16.04999, 0.65731, 6, -8.31, 15.53, 0.34268, 2, 3, 34.88, 16.4, 0.33128, 6, -2.03, 16.07, 0.66871, 2, 3, 49.76, 17.21999, 0.004, 6, 12.81, 17.36, 0.99598, 1, 6, 18.52, 17.85, 1, 2, 3, 70.94, 18.39, 0, 6, 33.93999, 19.19, 0.99999, 2, 3, 83.91, 9.7, 0, 6, 47.18, 10.92, 0.99999, 2, 3, 84.92, -8.60999, 0, 6, 48.76, -7.35, 1, 2, 3, 75.21, -17.42, 0, 6, 39.33, -16.46999, 1, 2, 3, 50.6, -18.78, 0.01347, 6, 14.78, -18.6, 0.98652, 2, 3, 45.71, -18.34, 0.05686, 6, 9.88, -18.31, 0.94313, 2, 3, 29.56, -16.87, 0.66681, 6, -6.3, -17.35, 0.33318, 2, 3, 24.56, -16.41, 0.86313, 6, -11.31, -17.04999, 0.13686, 2, 3, 18.35, -15.85, 0.97672, 6, -17.54, -16.68, 0.02327, 2, 3, 12.77, -15.34, 0.99935, 6, -23.13, -16.35, 6.4E-4, 1, 3, 6.64, -14.78, 1, 2, 3, -13.98, -12.91, 0.99999, 6, -49.96, -14.76, 0, 2, 3, -15.45, 13.63, 0.99999, 6, -52.25, 11.72, 0, 2, 3, -2.69, 0.33, 0.99999, 6, -39.09, -1.16, 0, 2, 3, 39.27, -0.79, 0.02734, 6, 2.89, -0.97, 0.97265 ], + "hull": 20, + "edges": [ 36, 38, 20, 22, 18, 20, 16, 18, 16, 14, 22, 24, 24, 10, 10, 12, 12, 14, 12, 22, 24, 26, 10, 8, 26, 8, 8, 6, 26, 28, 6, 28, 28, 30, 6, 4, 30, 4, 4, 2, 30, 32, 2, 32, 32, 34, 34, 36, 2, 0, 0, 38, 34, 0 ], + "width": 36, + "height": 99 + } + }, + "head": { + "head": { + "type": "skinnedmesh", + "uvs": [ 0.60755, 0.01863, 0.64145, 0.03354, 0.70226, 0.06028, 0.76687, 0.08869, 0.80695, 0.14523, 0.84157, 0.19407, 1, 0.41294, 1, 0.78561, 0.67348, 1, 0.38213, 1, 0.13934, 0.8937, 0.07948, 0.78807, 0.05898, 0.75189, 0, 0.6478, 0, 0.40213, 0.15055, 0.27783, 0.25631, 0.21733, 0.28424, 0.20136, 0.31116, 0.18596, 0.32033, 0.16739, 0.32984, 0.14813, 0.3317, 0.12797, 0.33358, 0.1076, 0.29622, 0.08869, 0.21778, 0.06977, 0.2514, 0.03194, 0.32658, 0.01699, 0.3752, 0.00732, 0.41202, 0, 0.45684, 0, 0.49046, 0, 0.53154, 0, 0.56516, 0, 0.55022, 0.1049, 0.46057, 0.06437, 0.38587, 0.05086, 0.31116, 0.04815, 0.54649, 0.17515, 0.35972, 0.28864, 0.14308, 0.41294, 0.13187, 0.57777, 0.24766, 0.43185, 0.43816, 0.37511, 0.59878, 0.3616, 0.78181, 0.43726, 0.8976, 0.53994, 0.87616, 0.37786 ], + "triangles": [ 36, 25, 26, 35, 27, 28, 23, 25, 36, 24, 25, 23, 26, 35, 36, 35, 26, 27, 22, 36, 35, 23, 36, 22, 28, 29, 34, 35, 28, 34, 21, 35, 34, 35, 21, 22, 34, 29, 30, 33, 31, 32, 33, 32, 0, 31, 34, 30, 34, 20, 21, 31, 33, 34, 37, 34, 33, 1, 33, 0, 2, 33, 1, 33, 2, 37, 37, 20, 34, 37, 38, 20, 19, 20, 38, 18, 19, 38, 17, 18, 38, 2, 4, 37, 4, 2, 3, 43, 4, 5, 43, 37, 4, 42, 38, 37, 43, 42, 37, 6, 46, 5, 44, 43, 5, 39, 14, 15, 41, 15, 16, 39, 15, 41, 16, 17, 38, 41, 16, 38, 41, 38, 42, 46, 44, 5, 45, 46, 6, 44, 46, 45, 40, 14, 39, 40, 39, 41, 13, 14, 40, 12, 13, 40, 45, 6, 7, 11, 12, 40, 9, 10, 40, 11, 40, 10, 9, 41, 42, 9, 40, 41, 8, 9, 42, 42, 43, 8, 44, 8, 43, 8, 44, 45, 8, 45, 7 ], + "vertices": [ 1, 14, 17.03, -22.65, 1, 3, 10, 187.59, -11.93, 0.00181, 13, 63.97, 5.58, 0.0238, 14, 11.42, -25.01, 0.97437, 2, 10, 182.37, -21.52, 0.62993, 14, 1.35, -29.25, 0.37005, 3, 10, 176.82, -31.71, 0.82289, 13, 64.49, -16.93, 0.07936, 14, -9.33, -33.75, 0.09774, 3, 10, 165.13, -38.41999, 0.8635, 13, 57.69, -28.57, 0.08155, 14, -22.66, -31.7, 0.05493, 3, 10, 155.03, -44.22, 0.89858, 13, 51.83, -38.63, 0.08345, 14, -34.16999, -29.93, 0.01796, 1, 10, 109.8, -70.69999, 1, 1, 10, 30.83, -74.44, 1, 1, 10, -16.95999, -26.54, 1, 1, 10, -19.08, 18.11, 1, 1, 10, 1.67, 56.39, 1, 1, 10, 23.62, 66.62999, 1, 1, 10, 31.14, 70.12999, 1, 1, 10, 52.77, 80.22, 1, 2, 10, 104.83, 82.69, 0.99073, 13, -54.92, 46.39, 0.00926, 3, 10, 132.26, 60.86, 0.88784, 13, -20.26, 41.13, 0.11168, 15, 48.07, 46.13, 4.7E-4, 4, 10, 145.85, 45.25, 0.85196, 13, -0.71, 34.37, 0.12365, 14, 14.48, 45.72, 0.00832, 15, 30.69, 34.9, 0.01603, 4, 10, 149.43, 41.13, 0.84249, 13, 4.44999, 32.58, 0.12681, 14, 14.71, 40.25999, 0.01053, 15, 26.1, 31.93, 0.02015, 4, 10, 152.89, 37.16, 0.83335, 13, 9.43, 30.86, 0.12986, 14, 14.94, 35, 0.01265, 15, 21.68, 29.07, 0.02412, 4, 10, 156.9, 35.93999, 0.60487, 13, 13.5, 31.8, 0.21602, 14, 17.31, 31.55, 0.05833, 15, 19.9, 25.28, 0.12076, 4, 10, 161.05, 34.68, 0.368, 13, 17.73, 32.77, 0.30535, 14, 19.76, 27.97, 0.10568, 15, 18.06, 21.35, 0.22096, 4, 10, 165.33, 34.59999, 0.18496, 13, 21.49, 34.83, 0.23674, 14, 23.06, 25.23, 0.12789, 15, 17.37, 17.12, 0.45039, 3, 13, 25.28, 36.91999, 0.1674, 14, 26.39, 22.46, 0.15034, 15, 16.67, 12.85, 0.68225, 3, 13, 25.58, 43.91, 0.03309, 14, 33, 24.76, 0.02128, 15, 21.99, 8.31, 0.94562, 1, 15, 33.59999, 3.17, 1, 1, 15, 27.7, -4.32, 1, 1, 15, 15.91, -6.38, 1, 1, 15, 8.29, -7.71, 1, 1, 15, 2.51, -8.72, 1, 2, 14, 33.79, -6.23, 0.33703, 15, -4.32, -8.06, 0.66296, 2, 14, 30.77, -10.41, 0.58777, 15, -9.46, -7.57, 0.41222, 2, 14, 27.07, -15.52, 0.81446, 15, -15.74, -6.97, 0.18553, 2, 14, 24.05, -19.7, 0.97838, 15, -20.87, -6.48, 0.02161, 1, 14, 7.36, -4.8, 1, 1, 14, 22.39, 1.29999, 1, 1, 15, 7.54, 1.63, 1, 3, 13, 34.06, 46.61, 0.01617, 14, 38.62, 17.86, 0.00459, 15, 18.89, -0.02, 0.97922, 1, 13, 30.81, 1.67, 1, 3, 10, 131.49, 28.69, 0.99827, 14, -7.07, 41.73, 7.0E-5, 15, 16.33, 51.46, 0.00165, 1, 10, 103.58, 60.65, 1, 1, 10, 68.57, 60.71, 1, 1, 10, 100.33, 44.43, 1, 1, 10, 113.74, 15.79, 1, 1, 10, 117.77, -8.68, 1, 1, 10, 103.06, -37.5, 1, 1, 10, 82.15, -56.28, 1, 3, 10, 116.33, -51.36, 0.97904, 13, 21.84, -64.11, 0.01724, 14, -68.86, -11.37, 0.00371 ], + "hull": 33, + "edges": [ 16, 14, 16, 18, 18, 20, 26, 28, 28, 30, 44, 46, 46, 48, 48, 50, 14, 12, 10, 12, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 2, 0, 0, 64, 2, 4, 4, 6, 20, 22, 22, 24, 24, 26, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 12, 80, 26, 34, 36, 30, 32, 32, 34, 36, 38, 38, 40, 40, 42, 42, 44, 12, 92, 6, 8, 8, 10 ], + "width": 136, + "height": 187 + }, + "ragdoll": { + "type": "boundingbox", + "vertices": [ -14.19607, -1.49276, -7.91528, -29.96175, 23.08404, -59.72487, 60.33676, -65.35634, 95.9493, -71.06551, 150.43092, -41.36028, 163.83543, 5.30173, 162.47502, 34.00399, 115.66124, 67.94895, 85.4782, 80.49074, 48.92517, 71.36101, 11.9019, 54.81194, -9.19035, 31.6207 ] + } + }, + "torso": { + "ragdoll": { + "type": "boundingbox", + "vertices": [ 0.62625, -28.95774, 35.77471, -25.70054, 37.14599, 27.3694, 1.96002, 28.88128 ] + }, + "torso": { + "type": "skinnedmesh", + "uvs": [ 0.87097, 0.13351, 1, 0.26702, 1, 0.45027, 1, 0.63351, 1, 0.81675, 1, 1, 0.75, 1, 0.5, 1, 0.25, 1, 0, 1, 0, 0.72402, 0, 0.44804, 0.09822, 0.22402, 0.19645, 0, 0.4692, 0, 0.74194, 0, 0.58868, 0.13131, 0.40099, 0.46062, 0.83539, 0.50155, 0.42394, 0.26749, 0.36228, 0.63165, 0.58838, 0.76773, 0.71972, 0.25772, 0.84057, 0.76485, 0.57726, 0.50305, 0.24069, 0.44015, 0.19158, 0.80079, 0.29694, 0.12288, 0.37842, 0.84005, 0.71037, 0.63432, 0.15888, 0.60895 ], + "triangles": [ 8, 26, 28, 8, 28, 7, 9, 26, 8, 9, 10, 26, 23, 4, 5, 6, 23, 5, 7, 21, 6, 6, 21, 23, 23, 3, 4, 22, 19, 16, 22, 0, 1, 19, 14, 16, 19, 27, 14, 22, 15, 0, 22, 16, 15, 12, 13, 27, 16, 14, 15, 27, 13, 14, 22, 24, 19, 1, 18, 22, 25, 27, 19, 25, 12, 27, 17, 19, 24, 24, 22, 18, 17, 25, 19, 7, 28, 21, 26, 20, 28, 28, 20, 21, 10, 30, 26, 26, 30, 20, 20, 24, 21, 21, 29, 23, 21, 24, 29, 29, 18, 23, 23, 18, 3, 10, 11, 30, 29, 24, 18, 18, 2, 3, 30, 25, 20, 20, 17, 24, 20, 25, 17, 30, 11, 25, 2, 18, 1, 11, 12, 25 ], + "vertices": [ 1, 7, 31.68, -23.15, 1, 2, 4, 57.14, -30.52, 0.39506, 7, 19.06, -31.25, 0.60493, 2, 4, 39.73, -30.66, 0.60493, 7, 1.66, -31.38, 0.39506, 2, 4, 22.33, -30.79, 0.79012, 7, -15.74, -31.52, 0.20987, 1, 2, -7.76, 14.88, 1, 1, 2, 9.47, 12.45, 1, 1, 2, 7.3, -2.89, 1, 2, 2, 5.13, -18.24, 0.488, 3, 5.76, 18.5, 0.51199, 2, 2, 2.96, -33.59, 0.16266, 3, 6.61, 3.02, 0.83733, 3, 4, -12.97, 30.92, 0.26337, 7, -51.04, 30.19, 0.06995, 3, 7.46, -12.45, 0.66666, 1, 3, -18.70999, -13.88, 1, 2, 4, 39.46, 31.33, 0.60493, 7, 1.38, 30.6, 0.39506, 2, 4, 60.79, 25.41, 0.39506, 7, 22.71, 24.68, 0.60493, 1, 7, 44.04, 18.76, 1, 1, 7, 44.17, 1.85, 1, 1, 7, 44.3, -15.05, 1, 1, 7, 31.75, -5.65, 1, 2, 4, 38.46, 6.46, 0.55198, 7, 0.38, 5.73, 0.448, 2, 4, 34.78, -20.49, 0.55198, 7, -3.29, -21.22, 0.448, 1, 7, 18.74, 4.46, 1, 1, 4, 22.19, 8.72999, 1, 2, 4, 9.37, -5.38, 0.52, 2, -15.94, -9.72, 0.48, 1, 7, 19.81, -13.86, 1, 2, 4, 9.77, -21.01, 0.52, 2, -14.02, 5.79, 0.48, 2, 4, 34.50999, -4.48999, 0.55198, 7, -3.55, -5.21999, 0.448, 2, 4, 40.32, 16.42, 0.55198, 7, 2.25, 15.69, 0.448, 2, 4, 6.04, 19.19, 0.584, 3, -12.08, -1.62, 0.41599, 1, 7, 32.41, 12.44, 1, 2, 4, 2.4, 7.58, 0.584, 3, -8.99, 10.14, 0.41599, 1, 4, 22.11, -12.84, 1, 1, 4, 24.25, 21.36, 1 ], + "hull": 16, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 0 ], + "width": 62, + "height": 95 + } + } + } +}, +"animations": { + "animation": { + "bones": { + "abdomen": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.374, 1 ] + }, + { "time": 0.3333, "angle": 2.47 }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "chest": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.374, 1 ] + }, + { + "time": 0.3333, + "angle": 21.85, + "curve": [ 0.25, 0, 0.434, 1 ] + }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.348, 0, 0.608, 0.5 ] + }, + { + "time": 0.1, + "angle": -10.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.4333, + "angle": 3.79, + "curve": [ 0.803, 0, 0.592, 0.98 ] + }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "R-arm": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.659, -0.5, 0.608, 0.5 ] + }, + { + "time": 0.3333, + "angle": -11.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "L-arm": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.374, 1 ] + }, + { + "time": 0.3333, + "angle": 53.01, + "curve": [ 0.659, 0.01, 0.734, 0.42 ] + }, + { + "time": 0.7666, + "angle": 56.78, + "curve": [ 0.44, 0.4, 0.695, 1 ] + }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "R-forearm": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.374, 1 ] + }, + { + "time": 0.3333, + "angle": 9.78, + "curve": [ 0.25, 0, 0.471, 1 ] + }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "L-forearm": { + "rotate": [ + { + "time": 0, + "angle": 14.89, + "curve": [ 0.33, -5.56, 0.527, 1 ] + }, + { + "time": 0.4333, + "angle": 32.07, + "curve": [ 0.641, 0, 0.317, 1 ] + }, + { + "time": 0.6333, + "angle": 9.77, + "curve": [ 0.25, 0, 0.317, 1 ] + }, + { + "time": 0.9, + "angle": 58, + "curve": [ 0.25, 0, 0.628, 1 ] + }, + { "time": 1.3333, "angle": 14.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "scalp": { + "rotate": [ + { + "time": 0, + "angle": -7.01, + "curve": [ 0.357, 0, 0.642, 0.45 ] + }, + { + "time": 0.2666, + "angle": 7.61, + "curve": [ 0.208, 0.44, 0.478, 1 ] + }, + { "time": 0.6666, "angle": 0 }, + { "time": 1.3333, "angle": -7.01 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "hair1": { + "rotate": [ + { + "time": 0, + "angle": -8.8, + "curve": [ 0.25, 0, 0.374, 1 ] + }, + { + "time": 0.2666, + "angle": -16.02, + "curve": [ 0.25, 0, 0.535, 1 ] + }, + { + "time": 0.5333, + "angle": 29.38, + "curve": [ 0.25, 0, 0.438, 1 ] + }, + { "time": 1.3333, "angle": -8.8 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "hair2": { + "rotate": [ + { + "time": 0, + "angle": 4.65, + "curve": [ 0.282, 0.3, 0.374, 1 ] + }, + { + "time": 0.2666, + "angle": -17.96, + "curve": [ 0.25, 0, 0.535, 1 ] + }, + { + "time": 0.6333, + "angle": 6.62, + "curve": [ 0.25, 0, 0.438, 1 ] + }, + { "time": 1.3333, "angle": 4.65 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "root": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -0.59, "y": 0 } + ] + }, + "R-foot": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "R-thigh": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "L-foot": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "L-thigh": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.json.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.json.meta new file mode 100644 index 000000000..2f3417f5b --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.json.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: e6f1c85da28190c49a9aaa887894ab0d +TextScriptImporter: + userData: diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png new file mode 100644 index 000000000..cb07c5df1 Binary files /dev/null and b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png differ diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-hingeChain.png.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta similarity index 89% rename from spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-hingeChain.png.meta rename to spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta index 6f346e072..3f00c1513 100644 --- a/spine-tk2d/Assets/spine-tk2d/Editor/GUI/icon-hingeChain.png.meta +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta @@ -1,11 +1,11 @@ fileFormatVersion: 2 -guid: 2c2c6d283dcf3654baf40001c982891c +guid: b29bbacbc2368c94a9c942d176ac6f59 TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 linearTexture: 0 correctGamma: 0 fadeOut: 0 @@ -21,8 +21,8 @@ TextureImporter: grayScaleToAlpha: 0 generateCubemap: 0 seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 1024 + textureFormat: -3 + maxTextureSize: 2048 textureSettings: filterMode: -1 aniso: -1 diff --git a/spine-tk2d/Assets/examples/spineboy/Spineboy SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Atlas.asset similarity index 67% rename from spine-tk2d/Assets/examples/spineboy/Spineboy SkeletonData.asset rename to spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Atlas.asset index e93322ba0..6f99b08ed 100644 Binary files a/spine-tk2d/Assets/examples/spineboy/Spineboy SkeletonData.asset and b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Atlas.asset differ diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Atlas.asset.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Atlas.asset.meta new file mode 100644 index 000000000..28738eda5 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Atlas.asset.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: a9d85e8796d75384199c06f6fdbb0d73 +NativeFormatImporter: + userData: diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat similarity index 93% rename from spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat rename to spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat index 4f4fd3fd1..48ee5e073 100644 Binary files a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat and b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat differ diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat.meta new file mode 100644 index 000000000..58813197c --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 4ad4f7167d4983147ad870f93ebc9416 +NativeFormatImporter: + userData: diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset new file mode 100644 index 000000000..31e9c71fa Binary files /dev/null and b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset differ diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset.meta new file mode 100644 index 000000000..076aa16cb --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 57484171e9b9c7243aa3117bc663e7b9 +NativeFormatImporter: + userData: diff --git a/spine-unity/Assets/Examples/Spine/Raptor/raptor.skel.bytes b/spine-unity/Assets/Examples/Spine/Raptor/raptor.skel.bytes new file mode 100644 index 000000000..507d86e2e Binary files /dev/null and b/spine-unity/Assets/Examples/Spine/Raptor/raptor.skel.bytes differ diff --git a/spine-unity/Assets/Examples/Spine/Raptor/raptor.skel.bytes.meta b/spine-unity/Assets/Examples/Spine/Raptor/raptor.skel.bytes.meta new file mode 100644 index 000000000..7dae281bc --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Raptor/raptor.skel.bytes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d6edb328bfcef44a9d1bf852e5724bc +timeCreated: 1427642224 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/dragon.prefab b/spine-unity/Assets/Examples/Spine/dragon.prefab index d11770576..f70e632e4 100644 Binary files a/spine-unity/Assets/Examples/Spine/dragon.prefab and b/spine-unity/Assets/Examples/Spine/dragon.prefab differ diff --git a/spine-unity/Assets/spine-unity/AtlasAsset.cs b/spine-unity/Assets/spine-unity/AtlasAsset.cs index 5096d3869..19dadb509 100644 --- a/spine-unity/Assets/spine-unity/AtlasAsset.cs +++ b/spine-unity/Assets/spine-unity/AtlasAsset.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -69,15 +70,86 @@ public class AtlasAsset : ScriptableObject { return null; } } + + public Sprite GenerateSprite (string name, out Material material) { + AtlasRegion region = atlas.FindRegion(name); + + Sprite sprite = null; + material = null; + + if (region != null) { + //sprite.rect + } + + return sprite; + } + + public Mesh GenerateMesh (string name, Mesh mesh, out Material material, float scale = 0.01f) { + AtlasRegion region = atlas.FindRegion(name); + material = null; + if (region != null) { + if (mesh == null) { + mesh = new Mesh(); + mesh.name = name; + } + + Vector3[] verts = new Vector3[4]; + Vector2[] uvs = new Vector2[4]; + Color[] colors = new Color[4] { Color.white, Color.white, Color.white, Color.white }; + int[] triangles = new int[6] { 0, 1, 2, 2, 3, 0 }; + + float left, right, top, bottom; + left = region.width / -2f; + right = left * -1f; + top = region.height / 2f; + bottom = top * -1; + + verts[0] = new Vector3(left, bottom, 0) * scale; + verts[1] = new Vector3(left, top, 0) * scale; + verts[2] = new Vector3(right, top, 0) * scale; + verts[3] = new Vector3(right, bottom, 0) * scale; + float u, v, u2, v2; + u = region.u; + v = region.v; + u2 = region.u2; + v2 = region.v2; + + if (!region.rotate) { + uvs[0] = new Vector2(u, v2); + uvs[1] = new Vector2(u, v); + uvs[2] = new Vector2(u2, v); + uvs[3] = new Vector2(u2, v2); + } else { + uvs[0] = new Vector2(u2, v2); + uvs[1] = new Vector2(u, v2); + uvs[2] = new Vector2(u, v); + uvs[3] = new Vector2(u2, v); + } + + mesh.triangles = new int[0]; + mesh.vertices = verts; + mesh.uv = uvs; + mesh.colors = colors; + mesh.triangles = triangles; + mesh.RecalculateNormals(); + mesh.RecalculateBounds(); + + material = (Material)region.page.rendererObject; + } else { + mesh = null; + } + + return mesh; + } } public class MaterialsTextureLoader : TextureLoader { AtlasAsset atlasAsset; - + public MaterialsTextureLoader (AtlasAsset atlasAsset) { this.atlasAsset = atlasAsset; } - + public void Load (AtlasPage page, String path) { String name = Path.GetFileNameWithoutExtension(path); Material material = null; diff --git a/spine-unity/Assets/spine-unity/AtlasRegionAttacher.cs b/spine-unity/Assets/spine-unity/AtlasRegionAttacher.cs index d3824f521..84fef5f45 100644 --- a/spine-unity/Assets/spine-unity/AtlasRegionAttacher.cs +++ b/spine-unity/Assets/spine-unity/AtlasRegionAttacher.cs @@ -1,4 +1,35 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; using Spine; @@ -19,14 +50,14 @@ public class AtlasRegionAttacher : MonoBehaviour { Atlas atlas; - void Awake() { + void Awake () { GetComponent().OnReset += Apply; } - void Apply(SkeletonRenderer skeletonRenderer) { + void Apply (SkeletonRenderer skeletonRenderer) { atlas = atlasAsset.GetAtlas(); - + AtlasAttachmentLoader loader = new AtlasAttachmentLoader(atlas); float scaleMultiplier = skeletonRenderer.skeletonDataAsset.scale; diff --git a/spine-unity/Assets/spine-unity/BoneFollower.cs b/spine-unity/Assets/spine-unity/BoneFollower.cs index e900ba8ee..0866f1f62 100644 --- a/spine-unity/Assets/spine-unity/BoneFollower.cs +++ b/spine-unity/Assets/spine-unity/BoneFollower.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -57,6 +58,8 @@ public class BoneFollower : MonoBehaviour { /// If a bone isn't set, boneName is used to find the bone. + + [SpineBone(dataField: "skeletonRenderer")] public String boneName; public bool resetOnAwake = true; protected Transform cachedTransform; @@ -140,4 +143,4 @@ public class BoneFollower : MonoBehaviour { } } -} \ No newline at end of file +} diff --git a/spine-unity/Assets/spine-unity/BoundingBoxFollower.cs b/spine-unity/Assets/spine-unity/BoundingBoxFollower.cs new file mode 100644 index 000000000..ae8d94e16 --- /dev/null +++ b/spine-unity/Assets/spine-unity/BoundingBoxFollower.cs @@ -0,0 +1,194 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Spine; + +[ExecuteInEditMode] +public class BoundingBoxFollower : MonoBehaviour { + + public SkeletonRenderer skeletonRenderer; + + [SpineSlot(dataField: "skeletonRenderer", containsBoundingBoxes: true)] + public string slotName; + + //TODO: not this + [Tooltip("LOL JK, Someone else do it!")] + public bool use3DMeshCollider; + + private Slot slot; + private BoundingBoxAttachment currentAttachment; + private PolygonCollider2D currentCollider; + private string currentAttachmentName; + private bool valid = false; + private bool hasReset; + + public Dictionary colliderTable = new Dictionary(); + public Dictionary attachmentNameTable = new Dictionary(); + + public string CurrentAttachmentName { + get { + return currentAttachmentName; + } + } + + public BoundingBoxAttachment CurrentAttachment { + get { + return currentAttachment; + } + } + + public PolygonCollider2D CurrentCollider { + get { + return currentCollider; + } + } + + public Slot Slot { + get { + return slot; + } + } + + + void OnEnable () { + ClearColliders(); + + if (skeletonRenderer == null) + skeletonRenderer = GetComponentInParent(); + + if (skeletonRenderer != null) { + skeletonRenderer.OnReset -= HandleReset; + skeletonRenderer.OnReset += HandleReset; + + if (hasReset) + HandleReset(skeletonRenderer); + } + } + + void OnDisable () { + skeletonRenderer.OnReset -= HandleReset; + } + + void Start () { + if (!hasReset && skeletonRenderer != null) + HandleReset(skeletonRenderer); + } + + public void HandleReset (SkeletonRenderer renderer) { + if (slotName == null || slotName == "") + return; + + hasReset = true; + + ClearColliders(); + colliderTable.Clear(); + + if (skeletonRenderer.skeleton == null) { + skeletonRenderer.OnReset -= HandleReset; + skeletonRenderer.Reset(); + skeletonRenderer.OnReset += HandleReset; + } + + + var skeleton = skeletonRenderer.skeleton; + slot = skeleton.FindSlot(slotName); + int slotIndex = skeleton.FindSlotIndex(slotName); + + foreach (var skin in skeleton.Data.Skins) { + List attachmentNames = new List(); + skin.FindNamesForSlot(slotIndex, attachmentNames); + + foreach (var name in attachmentNames) { + var attachment = skin.GetAttachment(slotIndex, name); + if (attachment is BoundingBoxAttachment) { + var collider = SkeletonUtility.AddBoundingBoxAsComponent((BoundingBoxAttachment)attachment, gameObject, true); + collider.enabled = false; + collider.hideFlags = HideFlags.HideInInspector; + colliderTable.Add((BoundingBoxAttachment)attachment, collider); + attachmentNameTable.Add((BoundingBoxAttachment)attachment, name); + } + } + } + + if (colliderTable.Count == 0) + valid = false; + else + valid = true; + + if (!valid) + Debug.LogWarning("Bounding Box Follower not valid! Slot [" + slotName + "] does not contain any Bounding Box Attachments!"); + } + + void ClearColliders () { + var colliders = GetComponents(); + if (Application.isPlaying) { + foreach (var c in colliders) { + Destroy(c); + } + } else { + foreach (var c in colliders) { + DestroyImmediate(c); + } + } + + colliderTable.Clear(); + attachmentNameTable.Clear(); + } + + void LateUpdate () { + if (!skeletonRenderer.valid) + return; + + if (slot != null) { + if (slot.Attachment != currentAttachment) + SetCurrent((BoundingBoxAttachment)slot.Attachment); + } + } + + void SetCurrent (BoundingBoxAttachment attachment) { + if (currentCollider) + currentCollider.enabled = false; + + if (attachment != null) { + currentCollider = colliderTable[attachment]; + currentCollider.enabled = true; + } else { + currentCollider = null; + } + + currentAttachment = attachment; + + currentAttachmentName = currentAttachment == null ? null : attachmentNameTable[attachment]; + } +} diff --git a/spine-tk2d/Assets/spine-tk2d/BoneFollower.cs.meta b/spine-unity/Assets/spine-unity/BoundingBoxFollower.cs.meta similarity index 78% rename from spine-tk2d/Assets/spine-tk2d/BoneFollower.cs.meta rename to spine-unity/Assets/spine-unity/BoundingBoxFollower.cs.meta index 29dabc13e..d81fd14af 100644 --- a/spine-tk2d/Assets/spine-tk2d/BoneFollower.cs.meta +++ b/spine-unity/Assets/spine-unity/BoundingBoxFollower.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a1fd8daaed7b64148a34acb96ba14ce1 +guid: 0317ee9ba6e1b1e49a030268e026d372 MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/spine-unity/Assets/spine-unity/CustomSkin.cs b/spine-unity/Assets/spine-unity/CustomSkin.cs index 5b98ad66c..ea74d572a 100644 --- a/spine-unity/Assets/spine-unity/CustomSkin.cs +++ b/spine-unity/Assets/spine-unity/CustomSkin.cs @@ -1,4 +1,35 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; using Spine; @@ -20,7 +51,7 @@ public class CustomSkin : MonoBehaviour { public Skin customSkin; SkeletonRenderer skeletonRenderer; - void Start() { + void Start () { skeletonRenderer = GetComponent(); Skeleton skeleton = skeletonRenderer.skeleton; diff --git a/spine-unity/Assets/spine-unity/Editor/AtlasAssetInspector.cs b/spine-unity/Assets/spine-unity/Editor/AtlasAssetInspector.cs index 72b0a68d0..93bab1a35 100644 --- a/spine-unity/Assets/spine-unity/Editor/AtlasAssetInspector.cs +++ b/spine-unity/Assets/spine-unity/Editor/AtlasAssetInspector.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -27,11 +28,13 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ + using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.IO; using UnityEditor; using UnityEngine; using Spine; @@ -40,13 +43,43 @@ using Spine; [CustomEditor(typeof(AtlasAsset))] public class AtlasAssetInspector : Editor { private SerializedProperty atlasFile, materials; + private AtlasAsset atlasAsset; + private List baked; + private List bakedObjects; void OnEnable () { SpineEditorUtilities.ConfirmInitialization(); atlasFile = serializedObject.FindProperty("atlasFile"); materials = serializedObject.FindProperty("materials"); + atlasAsset = (AtlasAsset)target; + UpdateBakedList(); } + void UpdateBakedList () { + AtlasAsset asset = (AtlasAsset)target; + baked = new List(); + bakedObjects = new List(); + if (atlasFile.objectReferenceValue != null) { + Atlas atlas = asset.GetAtlas(); + FieldInfo field = typeof(Atlas).GetField("regions", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.NonPublic); + List regions = (List)field.GetValue(atlas); + string atlasAssetPath = AssetDatabase.GetAssetPath(atlasAsset); + string atlasAssetDirPath = Path.GetDirectoryName(atlasAssetPath); + string bakedDirPath = Path.Combine(atlasAssetDirPath, atlasAsset.name); + + + for (int i = 0; i < regions.Count; i++) { + AtlasRegion region = regions[i]; + string bakedPrefabPath = Path.Combine(bakedDirPath, SpineEditorUtilities.GetPathSafeRegionName(region) + ".prefab").Replace("\\", "/"); + GameObject prefab = (GameObject)AssetDatabase.LoadAssetAtPath(bakedPrefabPath, typeof(GameObject)); + baked.Add(prefab != null); + bakedObjects.Add(prefab); + } + } + } + + + override public void OnInspectorGUI () { serializedObject.Update(); AtlasAsset asset = (AtlasAsset)target; @@ -70,22 +103,71 @@ public class AtlasAssetInspector : Editor { return; } } - - if (atlasFile.objectReferenceValue != null) { Atlas atlas = asset.GetAtlas(); FieldInfo field = typeof(Atlas).GetField("regions", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.NonPublic); List regions = (List)field.GetValue(atlas); - EditorGUILayout.LabelField("Regions"); + EditorGUILayout.LabelField(new GUIContent("Region Baking", SpineEditorUtilities.Icons.unityIcon)); EditorGUI.indentLevel++; + AtlasPage lastPage = null; for (int i = 0; i < regions.Count; i++) { - EditorGUILayout.LabelField(regions[i].name); + if (lastPage != regions[i].page) { + if (lastPage != null) { + EditorGUILayout.Separator(); + EditorGUILayout.Separator(); + } + lastPage = regions[i].page; + Material mat = ((Material)lastPage.rendererObject); + if (mat != null) { + GUILayout.BeginHorizontal(); + { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField(mat, typeof(Material), false, GUILayout.Width(250)); + EditorGUI.EndDisabledGroup(); + } + GUILayout.EndHorizontal(); + + } else { + EditorGUILayout.LabelField(new GUIContent("Page missing material!", SpineEditorUtilities.Icons.warning)); + } + } + GUILayout.BeginHorizontal(); + { + //EditorGUILayout.ToggleLeft(baked[i] ? "" : regions[i].name, baked[i]); + bool result = baked[i] ? EditorGUILayout.ToggleLeft("", baked[i], GUILayout.Width(24)) : EditorGUILayout.ToggleLeft(" " + regions[i].name, baked[i]); + if(baked[i]){ + EditorGUILayout.ObjectField(bakedObjects[i], typeof(GameObject), false, GUILayout.Width(250)); + } + if (result && !baked[i]) { + //bake + baked[i] = true; + bakedObjects[i] = SpineEditorUtilities.BakeRegion(atlasAsset, regions[i]); + EditorGUIUtility.PingObject(bakedObjects[i]); + } else if (!result && baked[i]) { + //unbake + bool unbakeResult = EditorUtility.DisplayDialog("Delete Baked Region", "Do you want to delete the prefab for " + regions[i].name, "Yes", "Cancel"); + switch (unbakeResult) { + case true: + //delete + string atlasAssetPath = AssetDatabase.GetAssetPath(atlasAsset); + string atlasAssetDirPath = Path.GetDirectoryName(atlasAssetPath); + string bakedDirPath = Path.Combine(atlasAssetDirPath, atlasAsset.name); + string bakedPrefabPath = Path.Combine(bakedDirPath, SpineEditorUtilities.GetPathSafeRegionName(regions[i]) + ".prefab").Replace("\\", "/"); + AssetDatabase.DeleteAsset(bakedPrefabPath); + baked[i] = false; + break; + case false: + //do nothing + break; + } + } + } + GUILayout.EndHorizontal(); } EditorGUI.indentLevel--; } - if (serializedObject.ApplyModifiedProperties() || (UnityEngine.Event.current.type == EventType.ValidateCommand && UnityEngine.Event.current.commandName == "UndoRedoPerformed") ) { diff --git a/spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs b/spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs index 943a98715..1d28e23c2 100644 --- a/spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs +++ b/spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -27,6 +28,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ + using System; using UnityEditor; using UnityEngine; @@ -35,6 +37,7 @@ using UnityEngine; public class BoneFollowerInspector : Editor { private SerializedProperty boneName, skeletonRenderer, followZPosition, followBoneRotation; BoneFollower component; + bool needsReset; void OnEnable () { skeletonRenderer = serializedObject.FindProperty("skeletonRenderer"); @@ -64,6 +67,12 @@ public class BoneFollowerInspector : Editor { } override public void OnInspectorGUI () { + if (needsReset) { + component.Reset(); + component.DoUpdate(); + needsReset = false; + SceneView.RepaintAll(); + } serializedObject.Update(); FindRenderer(); @@ -71,26 +80,16 @@ public class BoneFollowerInspector : Editor { EditorGUILayout.PropertyField(skeletonRenderer); if (component.valid) { - String[] bones = new String[1]; - try { - bones = new String[component.skeletonRenderer.skeleton.Data.Bones.Count + 1]; - } catch { - + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(boneName); + if (EditorGUI.EndChangeCheck()) { + serializedObject.ApplyModifiedProperties(); + needsReset = true; + serializedObject.Update(); } + + - bones[0] = ""; - for (int i = 0; i < bones.Length - 1; i++) - bones[i + 1] = component.skeletonRenderer.skeleton.Data.Bones[i].Name; - Array.Sort(bones); - int boneIndex = Math.Max(0, Array.IndexOf(bones, boneName.stringValue)); - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Bone"); - EditorGUIUtility.LookLikeControls(); - boneIndex = EditorGUILayout.Popup(boneIndex, bones); - EditorGUILayout.EndHorizontal(); - - boneName.stringValue = boneIndex == 0 ? null : bones[boneIndex]; EditorGUILayout.PropertyField(followBoneRotation); EditorGUILayout.PropertyField(followZPosition); } else { diff --git a/spine-unity/Assets/spine-unity/Editor/BoundingBoxFollowerInspector.cs b/spine-unity/Assets/spine-unity/Editor/BoundingBoxFollowerInspector.cs new file mode 100644 index 000000000..5b3aba77e --- /dev/null +++ b/spine-unity/Assets/spine-unity/Editor/BoundingBoxFollowerInspector.cs @@ -0,0 +1,84 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; +using UnityEditor; +using System.Collections; + +[CustomEditor(typeof(BoundingBoxFollower))] +public class BoundingBoxFollowerInspector : Editor { + SerializedProperty skeletonRenderer, slotName; + BoundingBoxFollower follower; + bool needToReset = false; + + void OnEnable () { + skeletonRenderer = serializedObject.FindProperty("skeletonRenderer"); + slotName = serializedObject.FindProperty("slotName"); + follower = (BoundingBoxFollower)target; + } + + public override void OnInspectorGUI () { + if (needToReset) { + follower.HandleReset(null); + needToReset = false; + } + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(skeletonRenderer); + EditorGUILayout.PropertyField(slotName, new GUIContent("Slot")); + + if (EditorGUI.EndChangeCheck()){ + serializedObject.ApplyModifiedProperties(); + needToReset = true; + } + + bool hasBone = follower.GetComponent() != null; + + EditorGUI.BeginDisabledGroup(hasBone || follower.Slot == null); + { + if (GUILayout.Button(new GUIContent("Add Bone Follower", SpineEditorUtilities.Icons.bone))) { + var boneFollower = follower.gameObject.AddComponent(); + boneFollower.boneName = follower.Slot.Data.BoneData.Name; + } + } + EditorGUI.EndDisabledGroup(); + + + + //GUILayout.Space(20); + GUILayout.Label("Attachment Names", EditorStyles.boldLabel); + foreach (var kp in follower.attachmentNameTable) { + string name = kp.Value; + var collider = follower.colliderTable[kp.Key]; + bool isPlaceholder = name != kp.Key.Name; + collider.enabled = EditorGUILayout.ToggleLeft(new GUIContent(!isPlaceholder ? name : name + " [" + kp.Key.Name + "]", isPlaceholder ? SpineEditorUtilities.Icons.skinPlaceholder : SpineEditorUtilities.Icons.boundingBox), collider.enabled); + } + } +} diff --git a/spine-tk2d/Assets/spine-tk2d/Editor/BoneFollowerInspector.cs.meta b/spine-unity/Assets/spine-unity/Editor/BoundingBoxFollowerInspector.cs.meta similarity index 78% rename from spine-tk2d/Assets/spine-tk2d/Editor/BoneFollowerInspector.cs.meta rename to spine-unity/Assets/spine-unity/Editor/BoundingBoxFollowerInspector.cs.meta index a5cf9ae89..e42ba7739 100644 --- a/spine-tk2d/Assets/spine-tk2d/Editor/BoneFollowerInspector.cs.meta +++ b/spine-unity/Assets/spine-unity/Editor/BoundingBoxFollowerInspector.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c71ca35fd6241cb49a0b0756a664fcf7 +guid: 670a3cefa3853bd48b5da53a424fd542 MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/spine-unity/Assets/spine-unity/Editor/GUI/icon-boundingBox.png.meta b/spine-unity/Assets/spine-unity/Editor/GUI/icon-boundingBox.png.meta index 49c9ab374..0e5d62848 100644 --- a/spine-unity/Assets/spine-unity/Editor/GUI/icon-boundingBox.png.meta +++ b/spine-unity/Assets/spine-unity/Editor/GUI/icon-boundingBox.png.meta @@ -20,11 +20,8 @@ TextureImporter: isReadable: 0 grayScaleToAlpha: 0 generateCubemap: 0 - cubemapConvolution: 0 - cubemapConvolutionSteps: 8 - cubemapConvolutionExponent: 1.5 seamlessCubemap: 0 - textureFormat: -1 + textureFormat: -3 maxTextureSize: 1024 textureSettings: filterMode: -1 @@ -33,7 +30,6 @@ TextureImporter: wrapMode: 1 nPOTScale: 0 lightmap: 0 - rGBM: 0 compressionQuality: 50 spriteMode: 0 spriteExtrude: 1 @@ -49,5 +45,3 @@ TextureImporter: sprites: [] spritePackingTag: userData: - assetBundleName: - assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Editor/GUI/icon-hingeChain.png.meta b/spine-unity/Assets/spine-unity/Editor/GUI/icon-hingeChain.png.meta index 83eb12195..e61da1e82 100644 --- a/spine-unity/Assets/spine-unity/Editor/GUI/icon-hingeChain.png.meta +++ b/spine-unity/Assets/spine-unity/Editor/GUI/icon-hingeChain.png.meta @@ -5,8 +5,8 @@ TextureImporter: serializedVersion: 2 mipmaps: mipMapMode: 0 - enableMipMap: 1 - linearTexture: 0 + enableMipMap: 0 + linearTexture: 1 correctGamma: 0 fadeOut: 0 borderMipMap: 0 @@ -20,20 +20,16 @@ TextureImporter: isReadable: 0 grayScaleToAlpha: 0 generateCubemap: 0 - cubemapConvolution: 0 - cubemapConvolutionSteps: 8 - cubemapConvolutionExponent: 1.5 seamlessCubemap: 0 - textureFormat: -1 + textureFormat: -3 maxTextureSize: 1024 textureSettings: filterMode: -1 - aniso: -1 + aniso: 1 mipBias: -1 - wrapMode: -1 - nPOTScale: 1 + wrapMode: 1 + nPOTScale: 0 lightmap: 0 - rGBM: 0 compressionQuality: 50 spriteMode: 0 spriteExtrude: 1 @@ -42,12 +38,10 @@ TextureImporter: spritePivot: {x: .5, y: .5} spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 - alphaIsTransparency: 0 - textureType: -1 + alphaIsTransparency: 1 + textureType: 2 buildTargetSettings: [] spriteSheet: sprites: [] spritePackingTag: userData: - assetBundleName: - assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Editor/Menus.cs b/spine-unity/Assets/spine-unity/Editor/Menus.cs index 578493228..761db5084 100644 --- a/spine-unity/Assets/spine-unity/Editor/Menus.cs +++ b/spine-unity/Assets/spine-unity/Editor/Menus.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -27,6 +28,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ + using System; using System.IO; using UnityEditor; diff --git a/spine-unity/Assets/spine-unity/Editor/SkeletonAnimationInspector.cs b/spine-unity/Assets/spine-unity/Editor/SkeletonAnimationInspector.cs index f338626b2..bd7bdecb1 100644 --- a/spine-unity/Assets/spine-unity/Editor/SkeletonAnimationInspector.cs +++ b/spine-unity/Assets/spine-unity/Editor/SkeletonAnimationInspector.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -27,6 +28,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ + using System; using UnityEditor; using UnityEngine; @@ -66,6 +68,7 @@ public class SkeletonAnimationInspector : SkeletonRendererInspector { } } + EditorGUILayout.Space(); //TODO: Refactor this to use GenericMenu and callbacks to avoid interfering with control by other behaviours. // Animation name. @@ -74,16 +77,13 @@ public class SkeletonAnimationInspector : SkeletonRendererInspector { animations[0] = ""; int animationIndex = 0; for (int i = 0; i < animations.Length - 1; i++) { - String name = component.skeleton.Data.Animations[i].Name; + String name = component.skeleton.Data.Animations.Items[i].Name; animations[i + 1] = name; if (name == animationName.stringValue) animationIndex = i + 1; } - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Animation", GUILayout.Width(EditorGUIUtility.labelWidth)); - animationIndex = EditorGUILayout.Popup(animationIndex, animations); - EditorGUILayout.EndHorizontal(); + animationIndex = EditorGUILayout.Popup("Animation", animationIndex, animations); String selectedAnimationName = animationIndex == 0 ? null : animations[animationIndex]; if (component.AnimationName != selectedAnimationName) { diff --git a/spine-unity/Assets/spine-unity/Editor/SkeletonAnimatorInspector.cs b/spine-unity/Assets/spine-unity/Editor/SkeletonAnimatorInspector.cs index beefec4a2..9c4bdec98 100644 --- a/spine-unity/Assets/spine-unity/Editor/SkeletonAnimatorInspector.cs +++ b/spine-unity/Assets/spine-unity/Editor/SkeletonAnimatorInspector.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * SkeletonAnimatorInspector created by Mitch Thompson @@ -68,4 +40,4 @@ public class SkeletonAnimatorInspector : SkeletonRendererInspector { } } } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/spine-unity/Editor/SkeletonBaker.cs b/spine-unity/Assets/spine-unity/Editor/SkeletonBaker.cs index 74fcc2899..4373a1a22 100644 --- a/spine-unity/Assets/spine-unity/Editor/SkeletonBaker.cs +++ b/spine-unity/Assets/spine-unity/Editor/SkeletonBaker.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * SkeletonBaker added by Mitch Thompson @@ -68,6 +40,7 @@ using Spine; /// FFD (Unity does not provide access to BlendShapes with code) /// Color Keys (Maybe one day when Unity supports full FBX standard and provides access with code) /// InheritScale (Never. Unity and Spine do scaling very differently) +/// Draw Order Keyframes /// public static class SkeletonBaker { @@ -76,7 +49,7 @@ public static class SkeletonBaker { /// const float bakeIncrement = 1 / 60f; - public static void BakeToPrefab (SkeletonDataAsset skeletonDataAsset, List skins, string outputPath = "", bool bakeAnimations = true, bool bakeIK = true, SendMessageOptions eventOptions = SendMessageOptions.DontRequireReceiver) { + public static void BakeToPrefab (SkeletonDataAsset skeletonDataAsset, ExposedList skins, string outputPath = "", bool bakeAnimations = true, bool bakeIK = true, SendMessageOptions eventOptions = SendMessageOptions.DontRequireReceiver) { if (skeletonDataAsset == null || skeletonDataAsset.GetSkeletonData(true) == null) { Debug.LogError("Could not export Spine Skeleton because SkeletonDataAsset is null or invalid!"); return; @@ -135,7 +108,7 @@ public static class SkeletonBaker { for (int s = 0; s < skeletonData.Slots.Count; s++) { List attachmentNames = new List(); for (int i = 0; i < skinCount; i++) { - var skin = skins[i]; + var skin = skins.Items[i]; List temp = new List(); skin.FindNamesForSlot(s, temp); foreach (string str in temp) { @@ -159,7 +132,7 @@ public static class SkeletonBaker { unusedClipNames.Remove(clip.name); } else { AssetDatabase.AddObjectToAsset(clip, controller); -#if UNITY_5_0 +#if UNITY_5 controller.AddMotion(clip); #else UnityEditorInternal.AnimatorController.AddAnimationClipToController(controller, clip); @@ -216,7 +189,7 @@ public static class SkeletonBaker { //create bones for (int i = 0; i < skeletonData.Bones.Count; i++) { - var boneData = skeletonData.Bones[i]; + var boneData = skeletonData.Bones.Items[i]; Transform boneTransform = new GameObject(boneData.Name).transform; boneTransform.parent = prefabRoot.transform; boneTable.Add(boneTransform.name, boneTransform); @@ -225,7 +198,7 @@ public static class SkeletonBaker { for (int i = 0; i < skeletonData.Bones.Count; i++) { - var boneData = skeletonData.Bones[i]; + var boneData = skeletonData.Bones.Items[i]; Transform boneTransform = boneTable[boneData.Name]; Transform parentTransform = null; if (i > 0) @@ -246,7 +219,7 @@ public static class SkeletonBaker { //create slots and attachments for (int i = 0; i < skeletonData.Slots.Count; i++) { - var slotData = skeletonData.Slots[i]; + var slotData = skeletonData.Slots.Items[i]; Transform slotTransform = new GameObject(slotData.Name).transform; slotTransform.parent = prefabRoot.transform; slotTable.Add(slotData.Name, slotTransform); @@ -387,6 +360,7 @@ public static class SkeletonBaker { if (skeletonDataAsset.controller != null) { controller = (UnityEditor.Animations.AnimatorController)skeletonDataAsset.controller; + controllerPath = AssetDatabase.GetAssetPath(controller); } else { if (File.Exists(controllerPath)) { if (EditorUtility.DisplayDialog("Controller Overwrite Warning", "Unknown Controller already exists at: " + controllerPath, "Update", "Overwrite")) { @@ -404,6 +378,7 @@ public static class SkeletonBaker { if (skeletonDataAsset.controller != null) { controller = (UnityEditorInternal.AnimatorController)skeletonDataAsset.controller; + controllerPath = AssetDatabase.GetAssetPath(controller); } else { if (File.Exists(controllerPath)) { if (EditorUtility.DisplayDialog("Controller Overwrite Warning", "Unknown Controller already exists at: " + controllerPath, "Update", "Overwrite")) { @@ -640,7 +615,7 @@ public static class SkeletonBaker { skeleton.UpdateWorldTransform(); float[] floatVerts = new float[attachment.UVs.Length]; - attachment.ComputeWorldVertices(skeleton.Slots[slotIndex], floatVerts); + attachment.ComputeWorldVertices(skeleton.Slots.Items[slotIndex], floatVerts); Vector2[] uvs = ExtractUV(attachment.UVs); Vector3[] verts = ExtractVerts(floatVerts); @@ -884,6 +859,7 @@ public static class SkeletonBaker { var ev = events[i]; AnimationEvent ae = new AnimationEvent(); + //TODO: Deal with Mecanim's zero-time missed event ae.time = frames[i]; ae.functionName = ev.Data.Name; ae.messageOptions = eventOptions; @@ -911,8 +887,8 @@ public static class SkeletonBaker { static void ParseAttachmentTimeline (Skeleton skeleton, AttachmentTimeline timeline, Dictionary> slotLookup, AnimationClip clip) { var attachmentNames = slotLookup[timeline.SlotIndex]; - string bonePath = GetPath(skeleton.Slots[timeline.SlotIndex].Bone.Data); - string slotPath = bonePath + "/" + skeleton.Slots[timeline.SlotIndex].Data.Name; + string bonePath = GetPath(skeleton.Slots.Items[timeline.SlotIndex].Bone.Data); + string slotPath = bonePath + "/" + skeleton.Slots.Items[timeline.SlotIndex].Data.Name; Dictionary curveTable = new Dictionary(); @@ -923,7 +899,7 @@ public static class SkeletonBaker { float[] frames = timeline.Frames; if (frames[0] != 0) { - string startingName = skeleton.Slots[timeline.SlotIndex].Data.AttachmentName; + string startingName = skeleton.Slots.Items[timeline.SlotIndex].Data.AttachmentName; foreach (var pair in curveTable) { if (startingName == "" || startingName == null) { pair.Value.AddKey(new Keyframe(0, 0, float.PositiveInfinity, float.PositiveInfinity)); @@ -1061,8 +1037,8 @@ public static class SkeletonBaker { } static void ParseTranslateTimeline (Skeleton skeleton, TranslateTimeline timeline, AnimationClip clip) { - var boneData = skeleton.Data.Bones[timeline.BoneIndex]; - var bone = skeleton.Bones[timeline.BoneIndex]; + var boneData = skeleton.Data.Bones.Items[timeline.BoneIndex]; + var bone = skeleton.Bones.Items[timeline.BoneIndex]; AnimationCurve xCurve = new AnimationCurve(); AnimationCurve yCurve = new AnimationCurve(); @@ -1207,8 +1183,8 @@ public static class SkeletonBaker { } static void ParseScaleTimeline (Skeleton skeleton, ScaleTimeline timeline, AnimationClip clip) { - var boneData = skeleton.Data.Bones[timeline.BoneIndex]; - var bone = skeleton.Bones[timeline.BoneIndex]; + var boneData = skeleton.Data.Bones.Items[timeline.BoneIndex]; + var bone = skeleton.Bones.Items[timeline.BoneIndex]; AnimationCurve xCurve = new AnimationCurve(); AnimationCurve yCurve = new AnimationCurve(); @@ -1340,8 +1316,8 @@ public static class SkeletonBaker { } static void ParseRotateTimeline (Skeleton skeleton, RotateTimeline timeline, AnimationClip clip) { - var boneData = skeleton.Data.Bones[timeline.BoneIndex]; - var bone = skeleton.Bones[timeline.BoneIndex]; + var boneData = skeleton.Data.Bones.Items[timeline.BoneIndex]; + var bone = skeleton.Bones.Items[timeline.BoneIndex]; AnimationCurve curve = new AnimationCurve(); diff --git a/spine-unity/Assets/spine-unity/Editor/SkeletonBaker.cs.meta b/spine-unity/Assets/spine-unity/Editor/SkeletonBaker.cs.meta index 1e73fe1df..37b13c997 100644 --- a/spine-unity/Assets/spine-unity/Editor/SkeletonBaker.cs.meta +++ b/spine-unity/Assets/spine-unity/Editor/SkeletonBaker.cs.meta @@ -1,10 +1,8 @@ fileFormatVersion: 2 -guid: 8dc542c228b046648ae29be625ecd1b4 +guid: 687d9be457ea4eb44bf09c35c95ee5cd MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs b/spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs index 83bbef004..5fc35fe02 100644 --- a/spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs +++ b/spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Automatic import and advanced preview added by Mitch Thompson @@ -48,13 +20,17 @@ public class SkeletonDataAssetInspector : Editor { static bool showAnimationList = true; static bool showSlotList = false; static bool showAttachments = false; - static bool showBaking = true; + static bool showUnity = true; static bool bakeAnimations = true; static bool bakeIK = true; static SendMessageOptions bakeEventOptions = SendMessageOptions.DontRequireReceiver; private SerializedProperty atlasAssets, skeletonJSON, scale, fromAnimation, toAnimation, duration, defaultMix, controller; +#if SPINE_TK2D + private SerializedProperty spriteCollection; +#endif + private bool m_initialized = false; private SkeletonDataAsset m_skeletonDataAsset; private SkeletonData m_skeletonData; @@ -76,6 +52,9 @@ public class SkeletonDataAssetInspector : Editor { duration = serializedObject.FindProperty("duration"); defaultMix = serializedObject.FindProperty("defaultMix"); controller = serializedObject.FindProperty("controller"); +#if SPINE_TK2D + spriteCollection = serializedObject.FindProperty("spriteCollection"); +#endif m_skeletonDataAsset = (SkeletonDataAsset)target; m_skeletonDataAssetGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(m_skeletonDataAsset)); @@ -88,7 +67,7 @@ public class SkeletonDataAssetInspector : Editor { m_skeletonData = m_skeletonDataAsset.GetSkeletonData(true); - showBaking = EditorPrefs.GetBool("SkeletonDataAssetInspector_showBaking", true); + showUnity = EditorPrefs.GetBool("SkeletonDataAssetInspector_showUnity", true); RepopulateWarnings(); } @@ -107,7 +86,14 @@ public class SkeletonDataAssetInspector : Editor { serializedObject.Update(); EditorGUI.BeginChangeCheck(); +#if !SPINE_TK2D EditorGUILayout.PropertyField(atlasAssets, true); +#else + EditorGUI.BeginDisabledGroup(spriteCollection.objectReferenceValue != null); + EditorGUILayout.PropertyField(atlasAssets, true); + EditorGUI.EndDisabledGroup(); + EditorGUILayout.PropertyField(spriteCollection, true); +#endif EditorGUILayout.PropertyField(skeletonJSON); EditorGUILayout.PropertyField(scale); if (EditorGUI.EndChangeCheck()) { @@ -127,11 +113,10 @@ public class SkeletonDataAssetInspector : Editor { if (m_skeletonData != null) { - DrawMecanim(); DrawAnimationStateInfo(); DrawAnimationList(); DrawSlotList(); - DrawBaking(); + DrawUnityTools(); } else { @@ -146,20 +131,35 @@ public class SkeletonDataAssetInspector : Editor { } void DrawMecanim () { + EditorGUILayout.PropertyField(controller, new GUIContent("Controller", SpineEditorUtilities.Icons.controllerIcon)); if (controller.objectReferenceValue == null) { - if (GUILayout.Button(new GUIContent("Generate Mecanim Controller", SpineEditorUtilities.Icons.controllerIcon), GUILayout.Width(195), GUILayout.Height(20))) + GUILayout.BeginHorizontal(); + GUILayout.Space(32); + if (GUILayout.Button(new GUIContent("Generate Mecanim Controller"), EditorStyles.toolbarButton, GUILayout.Width(195), GUILayout.Height(20))) SkeletonBaker.GenerateMecanimAnimationClips(m_skeletonDataAsset); + //GUILayout.Label(new GUIContent("Alternative to SkeletonAnimation, not a requirement.", SpineEditorUtilities.Icons.warning)); + GUILayout.EndHorizontal(); + EditorGUILayout.LabelField("Alternative to SkeletonAnimation, not required", EditorStyles.miniLabel); } + } - void DrawBaking () { - bool pre = showBaking; - showBaking = EditorGUILayout.Foldout(showBaking, new GUIContent("Baking", SpineEditorUtilities.Icons.unityIcon)); - if (pre != showBaking) - EditorPrefs.SetBool("SkeletonDataAssetInspector_showBaking", showBaking); + void DrawUnityTools () { + bool pre = showUnity; + showUnity = EditorGUILayout.Foldout(showUnity, new GUIContent("Unity Tools", SpineEditorUtilities.Icons.unityIcon)); + if (pre != showUnity) + EditorPrefs.SetBool("SkeletonDataAssetInspector_showUnity", showUnity); - if (showBaking) { + if (showUnity) { + EditorGUI.indentLevel++; + EditorGUILayout.LabelField("SkeletonAnimator", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + DrawMecanim(); + EditorGUI.indentLevel--; + GUILayout.Space(32); + EditorGUILayout.LabelField("Baking", EditorStyles.boldLabel); + EditorGUILayout.HelpBox("WARNING!\n\nBaking is NOT the same as SkeletonAnimator!\nDoes not support the following:\n\tFlipX or Y\n\tInheritScale\n\tColor Keys\n\tDraw Order Keys\n\tIK and Curves are sampled at 60fps and are not realtime.\n\tPlease read SkeletonBaker.cs comments for full details.\n\nThe main use of Baking is to export Spine projects to be used without the Spine Runtime (ie: for sale on the Asset Store, or background objects that are animated only with a wind noise generator)", MessageType.Warning, true); EditorGUI.indentLevel++; bakeAnimations = EditorGUILayout.Toggle("Bake Animations", bakeAnimations); EditorGUI.BeginDisabledGroup(bakeAnimations == false); @@ -186,7 +186,7 @@ public class SkeletonDataAssetInspector : Editor { Skin bakeSkin = m_skeletonAnimation.skeleton.Skin; if (bakeSkin == null) { skinName = "Default"; - bakeSkin = m_skeletonData.Skins[0]; + bakeSkin = m_skeletonData.Skins.Items[0]; } else skinName = m_skeletonAnimation.skeleton.Skin.Name; @@ -195,7 +195,7 @@ public class SkeletonDataAssetInspector : Editor { try { GUILayout.BeginVertical(); if (GUILayout.Button(new GUIContent("Bake " + skinName, SpineEditorUtilities.Icons.unityIcon), GUILayout.Height(32), GUILayout.Width(250))) - SkeletonBaker.BakeToPrefab(m_skeletonDataAsset, new List(new Skin[] { bakeSkin }), "", bakeAnimations, bakeIK, bakeEventOptions); + SkeletonBaker.BakeToPrefab(m_skeletonDataAsset, new ExposedList(new Skin[] { bakeSkin }), "", bakeAnimations, bakeIK, bakeEventOptions); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Skins", SpineEditorUtilities.Icons.skinsRoot), GUILayout.Width(50)); @@ -259,7 +259,7 @@ public class SkeletonDataAssetInspector : Editor { // Animation names String[] animations = new String[m_skeletonData.Animations.Count]; for (int i = 0; i < animations.Length; i++) - animations[i] = m_skeletonData.Animations[i].Name; + animations[i] = m_skeletonData.Animations.Items[i].Name; for (int i = 0; i < fromAnimation.arraySize; i++) { SerializedProperty from = fromAnimation.GetArrayElementAtIndex(i); @@ -311,13 +311,13 @@ public class SkeletonDataAssetInspector : Editor { if (m_skeletonAnimation != null && m_skeletonAnimation.state != null) { if (m_skeletonAnimation.state.GetCurrent(0) != null && m_skeletonAnimation.state.GetCurrent(0).Animation == a) { - GUI.contentColor = Color.black; - if (GUILayout.Button("\u25BA", GUILayout.Width(24))) { + GUI.contentColor = Color.red; + if (GUILayout.Button("\u25BA", EditorStyles.toolbarButton, GUILayout.Width(24))) { StopAnimation(); } GUI.contentColor = Color.white; } else { - if (GUILayout.Button("\u25BA", GUILayout.Width(24))) { + if (GUILayout.Button("\u25BA", EditorStyles.toolbarButton, GUILayout.Width(24))) { PlayAnimation(a.Name, true); } } @@ -350,14 +350,14 @@ public class SkeletonDataAssetInspector : Editor { List slotAttachments = new List(); List slotAttachmentNames = new List(); List defaultSkinAttachmentNames = new List(); - var defaultSkin = m_skeletonData.Skins[0]; + var defaultSkin = m_skeletonData.Skins.Items[0]; Skin skin = m_skeletonAnimation.skeleton.Skin; if (skin == null) { skin = defaultSkin; } for (int i = m_skeletonAnimation.skeleton.Slots.Count - 1; i >= 0; i--) { - Slot slot = m_skeletonAnimation.skeleton.Slots[i]; + Slot slot = m_skeletonAnimation.skeleton.Slots.Items[i]; EditorGUILayout.LabelField(new GUIContent(slot.Data.Name, SpineEditorUtilities.Icons.slot)); if (showAttachments) { @@ -441,8 +441,8 @@ public class SkeletonDataAssetInspector : Editor { warnings.Add("Missing Skeleton JSON"); else { - if (SpineEditorUtilities.IsSpineJSON((TextAsset)skeletonJSON.objectReferenceValue) == false) { - warnings.Add("Skeleton JSON is not a Valid JSON file"); + if (SpineEditorUtilities.IsValidSpineData((TextAsset)skeletonJSON.objectReferenceValue) == false) { + warnings.Add("Skeleton data file is not a valid JSON or binary file."); } else { bool detectedNullAtlasEntry = false; List atlasList = new List(); @@ -674,7 +674,9 @@ public class SkeletonDataAssetInspector : Editor { if (!EditorApplication.isPlaying) m_skeletonAnimation.LateUpdate(); - if (drawHandles) { + + + if (drawHandles) { Handles.SetCamera(m_previewUtility.m_Camera); Handles.color = m_originColor; @@ -683,10 +685,47 @@ public class SkeletonDataAssetInspector : Editor { } this.m_previewUtility.m_Camera.Render(); + + if (drawHandles) { + Handles.SetCamera(m_previewUtility.m_Camera); + foreach (var slot in m_skeletonAnimation.skeleton.Slots) { + if (slot.Attachment is BoundingBoxAttachment) { + + DrawBoundingBox(slot.Bone, (BoundingBoxAttachment)slot.Attachment); + } + } + } + go.GetComponent().enabled = false; } + } + + void DrawBoundingBox (Bone bone, BoundingBoxAttachment box) { + float[] worldVerts = new float[box.Vertices.Length]; + box.ComputeWorldVertices(bone, worldVerts); + + Handles.color = Color.green; + Vector3 lastVert = Vector3.back; + Vector3 vert = Vector3.back; + Vector3 firstVert = new Vector3(worldVerts[0], worldVerts[1], -1); + for (int i = 0; i < worldVerts.Length; i += 2) { + vert.x = worldVerts[i]; + vert.y = worldVerts[i + 1]; + + if (i > 0) { + Handles.DrawLine(lastVert, vert); + } + + + lastVert = vert; + } + + Handles.DrawLine(lastVert, firstVert); + + + } void Update () { diff --git a/spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs.meta b/spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs.meta index 5a602df97..fba64b6e3 100644 --- a/spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs.meta +++ b/spine-unity/Assets/spine-unity/Editor/SkeletonDataAssetInspector.cs.meta @@ -6,5 +6,3 @@ MonoImporter: executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Editor/SkeletonRendererInspector.cs b/spine-unity/Assets/spine-unity/Editor/SkeletonRendererInspector.cs index e2f8ff52f..267a4e4d0 100644 --- a/spine-unity/Assets/spine-unity/Editor/SkeletonRendererInspector.cs +++ b/spine-unity/Assets/spine-unity/Editor/SkeletonRendererInspector.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -27,14 +28,22 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ + using System; +using System.Reflection; using UnityEditor; using UnityEngine; [CustomEditor(typeof(SkeletonRenderer))] public class SkeletonRendererInspector : Editor { + protected static bool advancedFoldout; + protected SerializedProperty skeletonDataAsset, initialSkinName, normals, tangents, meshes, immutableTriangles, submeshSeparators, front; + private static MethodInfo EditorGUILayoutSortingLayerField; + protected SerializedObject rendererSerializedObject; + protected SerializedProperty sortingLayerIDProperty; + protected virtual void OnEnable () { SpineEditorUtilities.ConfirmInitialization(); skeletonDataAsset = serializedObject.FindProperty("skeletonDataAsset"); @@ -45,11 +54,16 @@ public class SkeletonRendererInspector : Editor { immutableTriangles = serializedObject.FindProperty("immutableTriangles"); submeshSeparators = serializedObject.FindProperty("submeshSeparators"); front = serializedObject.FindProperty("frontFacing"); + + if(EditorGUILayoutSortingLayerField == null) + EditorGUILayoutSortingLayerField = typeof(EditorGUILayout).GetMethod("SortingLayerField", BindingFlags.Static | BindingFlags.NonPublic, null, new Type[] { typeof(GUIContent), typeof(SerializedProperty), typeof(GUIStyle) }, null); + + rendererSerializedObject = new SerializedObject(((SkeletonRenderer)target).GetComponent()); + sortingLayerIDProperty = rendererSerializedObject.FindProperty("m_SortingLayerID"); } protected virtual void gui () { SkeletonRenderer component = (SkeletonRenderer)target; - EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(skeletonDataAsset); float reloadWidth = GUI.skin.label.CalcSize(new GUIContent("Reload")).x + 20; @@ -78,28 +92,55 @@ public class SkeletonRendererInspector : Editor { String[] skins = new String[component.skeleton.Data.Skins.Count]; int skinIndex = 0; for (int i = 0; i < skins.Length; i++) { - String name = component.skeleton.Data.Skins[i].Name; + String name = component.skeleton.Data.Skins.Items[i].Name; skins[i] = name; if (name == initialSkinName.stringValue) skinIndex = i; } - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Initial Skin", GUILayout.Width(EditorGUIUtility.labelWidth)); - skinIndex = EditorGUILayout.Popup(skinIndex, skins); - EditorGUILayout.EndHorizontal(); - + + skinIndex = EditorGUILayout.Popup("Initial Skin", skinIndex, skins); initialSkinName.stringValue = skins[skinIndex]; } - - EditorGUILayout.PropertyField(meshes, - new GUIContent("Render Meshes", "Disable to optimize rendering for skeletons that don't use meshes")); - EditorGUILayout.PropertyField(immutableTriangles, - new GUIContent("Immutable Triangles", "Enable to optimize rendering for skeletons that never change attachment visbility")); - EditorGUILayout.PropertyField(normals); - EditorGUILayout.PropertyField(tangents); - EditorGUILayout.PropertyField(front); - EditorGUILayout.PropertyField(submeshSeparators, true); + + EditorGUILayout.Space(); + + // Sorting Layers + { + var renderer = component.GetComponent(); + if(renderer != null) { + EditorGUI.BeginChangeCheck(); + + if(EditorGUILayoutSortingLayerField != null && sortingLayerIDProperty != null) { + EditorGUILayoutSortingLayerField.Invoke(null, new object[] { new GUIContent("Sorting Layer"), sortingLayerIDProperty, EditorStyles.popup } ); + } else { + renderer.sortingLayerID = EditorGUILayout.IntField("Sorting Layer ID", renderer.sortingLayerID); + } + + renderer.sortingOrder = EditorGUILayout.IntField("Order in Layer", renderer.sortingOrder); + + if(EditorGUI.EndChangeCheck()) { + rendererSerializedObject.ApplyModifiedProperties(); + EditorUtility.SetDirty(renderer); + } + } + } + + // More Render Options... + { + advancedFoldout = EditorGUILayout.Foldout(advancedFoldout, "Advanced"); + if(advancedFoldout) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(meshes, + new GUIContent("Render Meshes", "Disable to optimize rendering for skeletons that don't use meshes")); + EditorGUILayout.PropertyField(immutableTriangles, + new GUIContent("Immutable Triangles", "Enable to optimize rendering for skeletons that never change attachment visbility")); + EditorGUILayout.PropertyField(normals); + EditorGUILayout.PropertyField(tangents); + EditorGUILayout.PropertyField(front); + EditorGUILayout.PropertyField(submeshSeparators, true); + EditorGUI.indentLevel--; + } + } } override public void OnInspectorGUI () { @@ -112,4 +153,5 @@ public class SkeletonRendererInspector : Editor { ((SkeletonRenderer)target).Reset(); } } + } diff --git a/spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs b/spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs index 9d9e3b3d2..17810e6e0 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs +++ b/spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Spine Attribute Drawers created by Mitch Thompson @@ -82,8 +54,8 @@ public class SpineSlotDrawer : PropertyDrawer { } else if (property.serializedObject.targetObject is Component) { var component = (Component)property.serializedObject.targetObject; - if (component.GetComponent() != null) { - var skeletonRenderer = component.GetComponent(); + if (component.GetComponentInChildren() != null) { + var skeletonRenderer = component.GetComponentInChildren(); skeletonDataAsset = skeletonRenderer.skeletonDataAsset; } } @@ -113,9 +85,36 @@ public class SpineSlotDrawer : PropertyDrawer { menu.AddSeparator(""); for (int i = 0; i < data.Slots.Count; i++) { - string name = data.Slots[i].Name; - if (name.StartsWith(attrib.startsWith)) - menu.AddItem(new GUIContent(name), name == property.stringValue, HandleSelect, new SpineDrawerValuePair(name, property)); + string name = data.Slots.Items[i].Name; + if (name.StartsWith(attrib.startsWith)) { + if (attrib.containsBoundingBoxes) { + + int slotIndex = i; + + List attachments = new List(); + foreach (var skin in data.Skins) { + skin.FindAttachmentsForSlot(slotIndex, attachments); + } + + bool hasBoundingBox = false; + foreach (var attachment in attachments) { + if (attachment is BoundingBoxAttachment) { + menu.AddItem(new GUIContent(name), name == property.stringValue, HandleSelect, new SpineDrawerValuePair(name, property)); + hasBoundingBox = true; + break; + } + } + + if (!hasBoundingBox) + menu.AddDisabledItem(new GUIContent(name)); + + + } else { + menu.AddItem(new GUIContent(name), name == property.stringValue, HandleSelect, new SpineDrawerValuePair(name, property)); + } + + } + } menu.ShowAsContext(); @@ -160,8 +159,8 @@ public class SpineSkinDrawer : PropertyDrawer { } else if (property.serializedObject.targetObject is Component) { var component = (Component)property.serializedObject.targetObject; - if (component.GetComponent() != null) { - var skeletonRenderer = component.GetComponent(); + if (component.GetComponentInChildren() != null) { + var skeletonRenderer = component.GetComponentInChildren(); skeletonDataAsset = skeletonRenderer.skeletonDataAsset; } } @@ -191,7 +190,7 @@ public class SpineSkinDrawer : PropertyDrawer { menu.AddSeparator(""); for (int i = 0; i < data.Skins.Count; i++) { - string name = data.Skins[i].Name; + string name = data.Skins.Items[i].Name; if (name.StartsWith(attrib.startsWith)) menu.AddItem(new GUIContent(name), name == property.stringValue, HandleSelect, new SpineDrawerValuePair(name, property)); } @@ -304,8 +303,8 @@ public class SpineAnimationDrawer : PropertyDrawer { } } else if (property.serializedObject.targetObject is Component) { var component = (Component)property.serializedObject.targetObject; - if (component.GetComponent() != null) { - var skeletonRenderer = component.GetComponent(); + if (component.GetComponentInChildren() != null) { + var skeletonRenderer = component.GetComponentInChildren(); skeletonDataAsset = skeletonRenderer.skeletonDataAsset; } } @@ -331,7 +330,7 @@ public class SpineAnimationDrawer : PropertyDrawer { var animations = skeletonDataAsset.GetAnimationStateData().SkeletonData.Animations; for (int i = 0; i < animations.Count; i++) { - string name = animations[i].Name; + string name = animations.Items[i].Name; if (name.StartsWith(attrib.startsWith)) menu.AddItem(new GUIContent(name), name == property.stringValue, HandleSelect, new SpineDrawerValuePair(name, property)); } @@ -384,8 +383,8 @@ public class SpineAttachmentDrawer : PropertyDrawer { } else if (property.serializedObject.targetObject is Component) { var component = (Component)property.serializedObject.targetObject; - if (component.GetComponent() != null) { - skeletonRenderer = component.GetComponent(); + if (component.GetComponentInChildren() != null) { + skeletonRenderer = component.GetComponentInChildren(); skeletonDataAsset = skeletonRenderer.skeletonDataAsset; } } @@ -417,7 +416,7 @@ public class SpineAttachmentDrawer : PropertyDrawer { if (skeletonRenderer.skeleton.Skin != null) { validSkins.Add(skeletonRenderer.skeleton.Skin); } else { - validSkins.Add(data.Skins[0]); + validSkins.Add(data.Skins.Items[0]); } } else { foreach (Skin skin in data.Skins) { @@ -441,7 +440,7 @@ public class SpineAttachmentDrawer : PropertyDrawer { menu.AddItem(new GUIContent("Null"), property.stringValue == "", HandleSelect, new SpineDrawerValuePair("", property)); menu.AddSeparator(""); - Skin defaultSkin = data.Skins[0]; + Skin defaultSkin = data.Skins.Items[0]; SerializedProperty slotProperty = property.serializedObject.FindProperty(attrib.slotField); string slotMatch = ""; @@ -458,7 +457,7 @@ public class SpineAttachmentDrawer : PropertyDrawer { prefix = skinPrefix; for (int i = 0; i < data.Slots.Count; i++) { - if (slotMatch.Length > 0 && data.Slots[i].Name.ToLower().Contains(slotMatch) == false) + if (slotMatch.Length > 0 && data.Slots.Items[i].Name.ToLower().Contains(slotMatch) == false) continue; attachmentNames.Clear(); @@ -474,11 +473,11 @@ public class SpineAttachmentDrawer : PropertyDrawer { for (int a = 0; a < attachmentNames.Count; a++) { string attachmentPath = attachmentNames[a]; - string menuPath = prefix + data.Slots[i].Name + "/" + attachmentPath; + string menuPath = prefix + data.Slots.Items[i].Name + "/" + attachmentPath; string name = attachmentNames[a]; if (attrib.returnAttachmentPath) - name = skin.Name + "/" + data.Slots[i].Name + "/" + attachmentPath; + name = skin.Name + "/" + data.Slots.Items[i].Name + "/" + attachmentPath; if (attrib.placeholdersOnly && placeholderNames.Contains(attachmentPath) == false) { menu.AddDisabledItem(new GUIContent(menuPath)); @@ -534,8 +533,8 @@ public class SpineBoneDrawer : PropertyDrawer { } else if (property.serializedObject.targetObject is Component) { var component = (Component)property.serializedObject.targetObject; - if (component.GetComponent() != null) { - var skeletonRenderer = component.GetComponent(); + if (component.GetComponentInChildren() != null) { + var skeletonRenderer = component.GetComponentInChildren(); skeletonDataAsset = skeletonRenderer.skeletonDataAsset; } } @@ -565,7 +564,7 @@ public class SpineBoneDrawer : PropertyDrawer { menu.AddSeparator(""); for (int i = 0; i < data.Bones.Count; i++) { - string name = data.Bones[i].Name; + string name = data.Bones.Items[i].Name; if (name.StartsWith(attrib.startsWith)) menu.AddItem(new GUIContent(name), name == property.stringValue, HandleSelect, new SpineDrawerValuePair(name, property)); } @@ -582,4 +581,4 @@ public class SpineBoneDrawer : PropertyDrawer { public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return 18; } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs index c1ebb804f..36dc47ae3 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs @@ -1,26 +1,26 @@ -#pragma warning disable 0219 /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -29,6 +29,8 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ +#pragma warning disable 0219 + /***************************************************************************** * Spine Editor Utilities created by Mitch Thompson * Full irrevocable rights and permissions granted to Esoteric Software @@ -149,16 +151,21 @@ public class SpineEditorUtilities : AssetPostprocessor { public static string editorGUIPath = ""; static Dictionary skeletonRendererTable; static Dictionary skeletonUtilityBoneTable; + static Dictionary boundingBoxFollowerTable; public static float defaultScale = 0.01f; public static float defaultMix = 0.2f; public static string defaultShader = "Spine/Skeleton"; public static bool initialized; + const string DEFAULT_MIX_KEY = "SPINE_DEFAULT_MIX"; + static SpineEditorUtilities () { Initialize(); } static void Initialize () { + defaultMix = EditorPrefs.GetFloat(DEFAULT_MIX_KEY, 0.2f); + DirectoryInfo rootDir = new DirectoryInfo(Application.dataPath); FileInfo[] files = rootDir.GetFiles("SpineEditorUtilities.cs", SearchOption.AllDirectories); editorPath = Path.GetDirectoryName(files[0].FullName.Replace("\\", "/").Replace(Application.dataPath, "Assets")); @@ -168,6 +175,7 @@ public class SpineEditorUtilities : AssetPostprocessor { skeletonRendererTable = new Dictionary(); skeletonUtilityBoneTable = new Dictionary(); + boundingBoxFollowerTable = new Dictionary(); EditorApplication.hierarchyWindowChanged += HierarchyWindowChanged; EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI; @@ -184,15 +192,19 @@ public class SpineEditorUtilities : AssetPostprocessor { static void HierarchyWindowChanged () { skeletonRendererTable.Clear(); skeletonUtilityBoneTable.Clear(); + boundingBoxFollowerTable.Clear(); SkeletonRenderer[] arr = Object.FindObjectsOfType(); - foreach (SkeletonRenderer r in arr) skeletonRendererTable.Add(r.gameObject.GetInstanceID(), r.gameObject); SkeletonUtilityBone[] boneArr = Object.FindObjectsOfType(); foreach (SkeletonUtilityBone b in boneArr) skeletonUtilityBoneTable.Add(b.gameObject.GetInstanceID(), b); + + BoundingBoxFollower[] bbfArr = Object.FindObjectsOfType(); + foreach (BoundingBoxFollower bbf in bbfArr) + boundingBoxFollowerTable.Add(bbf.gameObject.GetInstanceID(), bbf); } static void HierarchyWindowItemOnGUI (int instanceId, Rect selectionRect) { @@ -222,6 +234,21 @@ public class SpineEditorUtilities : AssetPostprocessor { } } + } else if (boundingBoxFollowerTable.ContainsKey(instanceId)) { + Rect r = new Rect(selectionRect); + r.x -= 26; + + if (boundingBoxFollowerTable[instanceId] != null) { + if (boundingBoxFollowerTable[instanceId].transform.childCount == 0) + r.x += 13; + + r.y += 2; + + r.width = 13; + r.height = 13; + + GUI.DrawTexture(r, Icons.boundingBox); + } } } @@ -247,9 +274,13 @@ public class SpineEditorUtilities : AssetPostprocessor { imagePaths.Add(str); break; case ".json": - TextAsset spineJson = (TextAsset)AssetDatabase.LoadAssetAtPath(str, typeof(TextAsset)); - if (IsSpineJSON(spineJson)) { + if (IsValidSpineData((TextAsset)AssetDatabase.LoadAssetAtPath(str, typeof(TextAsset)))) skeletonPaths.Add(str); + break; + case ".bytes": + if (str.ToLower().EndsWith(".skel.bytes")) { + if (IsValidSpineData((TextAsset)AssetDatabase.LoadAssetAtPath(str, typeof(TextAsset)))) + skeletonPaths.Add(str); } break; } @@ -375,7 +406,7 @@ public class SpineEditorUtilities : AssetPostprocessor { Selection.activeObject = null; skeletonDataAsset.Reset(); - + string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(skeletonDataAsset)); string lastHash = EditorPrefs.GetString(guid + "_hash"); @@ -399,7 +430,9 @@ public class SpineEditorUtilities : AssetPostprocessor { static bool CheckForValidAtlas (string atlasPath) { - + return false; + //////////////DEPRECATED - always check for new atlas data now + /* string dir = Path.GetDirectoryName(atlasPath); TextAsset textAsset = (TextAsset)AssetDatabase.LoadAssetAtPath(atlasPath, typeof(TextAsset)); DirectoryInfo dirInfo = new DirectoryInfo(dir); @@ -411,12 +444,37 @@ public class SpineEditorUtilities : AssetPostprocessor { var obj = AssetDatabase.LoadAssetAtPath(localPath, typeof(Object)); if (obj is AtlasAsset) { var atlasAsset = (AtlasAsset)obj; - if (atlasAsset.atlasFile == textAsset) + if (atlasAsset.atlasFile == textAsset) { + + + Atlas atlas = atlasAsset.GetAtlas(); + FieldInfo field = typeof(Atlas).GetField("regions", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.NonPublic); + List regions = (List)field.GetValue(atlas); + string atlasAssetPath = AssetDatabase.GetAssetPath(atlasAsset); + string atlasAssetDirPath = Path.GetDirectoryName(atlasAssetPath); + string bakedDirPath = Path.Combine(atlasAssetDirPath, atlasAsset.name); + + for (int i = 0; i < regions.Count; i++) { + AtlasRegion region = regions[i]; + string bakedPrefabPath = Path.Combine(bakedDirPath, SpineEditorUtilities.GetPathSafeRegionName(region) + ".prefab").Replace("\\", "/"); + GameObject prefab = (GameObject)AssetDatabase.LoadAssetAtPath(bakedPrefabPath, typeof(GameObject)); + + if (prefab != null) { + Debug.Log("Updating: " + region.name); + BakeRegion(atlasAsset, region); + } + } + + return true; + } + } } return false; + + */ } static List MultiAtlasDialog (List requiredPaths, string initialDirectory, string header = "") { @@ -511,10 +569,23 @@ public class SpineEditorUtilities : AssetPostprocessor { return (AtlasAsset)obj; } - public static List GetRequiredAtlasRegions (string jsonPath) { + static void AddRequiredAtlasRegionsFromBinary (string skeletonDataPath, List requiredPaths) { + SkeletonBinary binary = new SkeletonBinary(new AtlasRequirementLoader(requiredPaths)); + TextAsset data = (TextAsset)AssetDatabase.LoadAssetAtPath(skeletonDataPath, typeof(TextAsset)); + MemoryStream input = new MemoryStream(data.bytes); + binary.ReadSkeletonData(input); + binary = null; + } + + public static List GetRequiredAtlasRegions (string skeletonDataPath) { List requiredPaths = new List(); - TextAsset spineJson = (TextAsset)AssetDatabase.LoadAssetAtPath(jsonPath, typeof(TextAsset)); + if (skeletonDataPath.Contains(".skel")) { + AddRequiredAtlasRegionsFromBinary(skeletonDataPath, requiredPaths); + return requiredPaths; + } + + TextAsset spineJson = (TextAsset)AssetDatabase.LoadAssetAtPath(skeletonDataPath, typeof(TextAsset)); StringReader reader = new StringReader(spineJson.text); var root = Json.Deserialize(reader) as Dictionary; @@ -524,6 +595,12 @@ public class SpineEditorUtilities : AssetPostprocessor { foreach (KeyValuePair attachmentEntry in ((Dictionary)slotEntry.Value)) { var data = ((Dictionary)attachmentEntry.Value); + if (data.ContainsKey("type")) { + if ((string)data["type"] == "boundingbox") { + continue; + } + + } if (data.ContainsKey("path")) requiredPaths.Add((string)data["path"]); else if (data.ContainsKey("name")) @@ -582,8 +659,14 @@ public class SpineEditorUtilities : AssetPostprocessor { return arr; } - public static bool IsSpineJSON (TextAsset asset) { - object obj = Json.Deserialize(new StringReader(asset.text)); + public static bool IsValidSpineData (TextAsset asset) { + if (asset.name.Contains(".skel")) return true; + + object obj = null; + try { + obj = Json.Deserialize(new StringReader(asset.text)); + } catch (System.Exception) { + } if (obj == null) { Debug.LogError("Is not valid JSON"); return false; @@ -615,9 +698,14 @@ public class SpineEditorUtilities : AssetPostprocessor { AtlasAsset atlasAsset = (AtlasAsset)AssetDatabase.LoadAssetAtPath(atlasPath, typeof(AtlasAsset)); + List vestigialMaterials = new List(); if (atlasAsset == null) atlasAsset = AtlasAsset.CreateInstance(); + else { + foreach (Material m in atlasAsset.materials) + vestigialMaterials.Add(m); + } atlasAsset.atlasFile = atlasText; @@ -639,6 +727,7 @@ public class SpineEditorUtilities : AssetPostprocessor { Texture2D texture = (Texture2D)AssetDatabase.LoadAssetAtPath(texturePath, typeof(Texture2D)); TextureImporter texImporter = (TextureImporter)TextureImporter.GetAtPath(texturePath); + texImporter.textureType = TextureImporterType.Advanced; texImporter.textureFormat = TextureImporterFormat.AutomaticTruecolor; texImporter.mipmapEnabled = false; texImporter.alphaIsTransparency = false; @@ -660,6 +749,8 @@ public class SpineEditorUtilities : AssetPostprocessor { if (mat == null) { mat = new Material(Shader.Find(defaultShader)); AssetDatabase.CreateAsset(mat, materialPath); + } else { + vestigialMaterials.Remove(mat); } mat.mainTexture = texture; @@ -670,16 +761,96 @@ public class SpineEditorUtilities : AssetPostprocessor { atlasAsset.materials[i] = mat; } + for (int i = 0; i < vestigialMaterials.Count; i++) + AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(vestigialMaterials[i])); + if (AssetDatabase.GetAssetPath(atlasAsset) == "") AssetDatabase.CreateAsset(atlasAsset, atlasPath); else atlasAsset.Reset(); + EditorUtility.SetDirty(atlasAsset); + AssetDatabase.SaveAssets(); + + //iterate regions and bake marked + Atlas atlas = atlasAsset.GetAtlas(); + FieldInfo field = typeof(Atlas).GetField("regions", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.NonPublic); + List regions = (List)field.GetValue(atlas); + string atlasAssetPath = AssetDatabase.GetAssetPath(atlasAsset); + string atlasAssetDirPath = Path.GetDirectoryName(atlasAssetPath); + string bakedDirPath = Path.Combine(atlasAssetDirPath, atlasAsset.name); + + bool hasBakedRegions = false; + for (int i = 0; i < regions.Count; i++) { + AtlasRegion region = regions[i]; + string bakedPrefabPath = Path.Combine(bakedDirPath, SpineEditorUtilities.GetPathSafeRegionName(region) + ".prefab").Replace("\\", "/"); + GameObject prefab = (GameObject)AssetDatabase.LoadAssetAtPath(bakedPrefabPath, typeof(GameObject)); + + if (prefab != null) { + BakeRegion(atlasAsset, region, false); + hasBakedRegions = true; + } + } + + if (hasBakedRegions) { + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + return (AtlasAsset)AssetDatabase.LoadAssetAtPath(atlasPath, typeof(AtlasAsset)); } + public static GameObject BakeRegion (AtlasAsset atlasAsset, AtlasRegion region, bool autoSave = true) { + Atlas atlas = atlasAsset.GetAtlas(); + string atlasAssetPath = AssetDatabase.GetAssetPath(atlasAsset); + string atlasAssetDirPath = Path.GetDirectoryName(atlasAssetPath); + string bakedDirPath = Path.Combine(atlasAssetDirPath, atlasAsset.name); + string bakedPrefabPath = Path.Combine(bakedDirPath, GetPathSafeRegionName(region) + ".prefab").Replace("\\", "/"); + + GameObject prefab = (GameObject)AssetDatabase.LoadAssetAtPath(bakedPrefabPath, typeof(GameObject)); + GameObject root; + Mesh mesh; + bool isNewPrefab = false; + + if (!Directory.Exists(bakedDirPath)) + Directory.CreateDirectory(bakedDirPath); + + if (prefab == null) { + root = new GameObject("temp", typeof(MeshFilter), typeof(MeshRenderer)); + prefab = (GameObject)PrefabUtility.CreatePrefab(bakedPrefabPath, root); + isNewPrefab = true; + Object.DestroyImmediate(root); + } + + mesh = (Mesh)AssetDatabase.LoadAssetAtPath(bakedPrefabPath, typeof(Mesh)); + + Material mat = null; + mesh = atlasAsset.GenerateMesh(region.name, mesh, out mat); + if (isNewPrefab) { + AssetDatabase.AddObjectToAsset(mesh, prefab); + prefab.GetComponent().sharedMesh = mesh; + } + + EditorUtility.SetDirty(mesh); + EditorUtility.SetDirty(prefab); + + if (autoSave) { + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + + prefab.GetComponent().sharedMaterial = mat; + + return prefab; + } + + public static string GetPathSafeRegionName (AtlasRegion region) { + return region.name.Replace("/", "_"); + } + static SkeletonDataAsset IngestSpineProject (TextAsset spineJson, params AtlasAsset[] atlasAssets) { string primaryName = Path.GetFileNameWithoutExtension(spineJson.name); string assetPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(spineJson)); @@ -779,7 +950,7 @@ public class SpineEditorUtilities : AssetPostprocessor { skin = data.DefaultSkin; if (skin == null) - skin = data.Skins[0]; + skin = data.Skins.Items[0]; anim.Reset(); @@ -828,7 +999,7 @@ public class SpineEditorUtilities : AssetPostprocessor { public static SkeletonAnimator InstantiateSkeletonAnimator (SkeletonDataAsset skeletonDataAsset, Skin skin = null) { GameObject go = new GameObject(skeletonDataAsset.name.Replace("_SkeletonData", ""), typeof(MeshFilter), typeof(MeshRenderer), typeof(Animator), typeof(SkeletonAnimator)); - if(skeletonDataAsset.controller == null){ + if (skeletonDataAsset.controller == null) { SkeletonBaker.GenerateMecanimAnimationClips(skeletonDataAsset); } @@ -865,7 +1036,7 @@ public class SpineEditorUtilities : AssetPostprocessor { skin = data.DefaultSkin; if (skin == null) - skin = data.Skins[0]; + skin = data.Skins.Items[0]; anim.Reset(); @@ -878,4 +1049,108 @@ public class SpineEditorUtilities : AssetPostprocessor { return anim; } -} \ No newline at end of file + + static bool preferencesLoaded = false; + + [PreferenceItem("Spine")] + static void PreferencesGUI () { + if (!preferencesLoaded) { + preferencesLoaded = true; + defaultMix = EditorPrefs.GetFloat(DEFAULT_MIX_KEY, 0.2f); + } + + + EditorGUILayout.LabelField("Auto-Import Settings", EditorStyles.boldLabel); + EditorGUI.BeginChangeCheck(); + defaultMix = EditorGUILayout.FloatField("Default Mix", defaultMix); + if (EditorGUI.EndChangeCheck()) + EditorPrefs.SetFloat(DEFAULT_MIX_KEY, defaultMix); + + GUILayout.Space(20); + EditorGUILayout.LabelField("3rd Party Settings", EditorStyles.boldLabel); + GUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("TK2D"); + + if (GUILayout.Button("Enable", GUILayout.Width(64))) + EnableTK2D(); + if (GUILayout.Button("Disable", GUILayout.Width(64))) + DisableTK2D(); + GUILayout.EndHorizontal(); + } + + + //TK2D Support + const string SPINE_TK2D_DEFINE = "SPINE_TK2D"; + + static void EnableTK2D () { + bool added = false; + foreach (BuildTargetGroup group in System.Enum.GetValues(typeof(BuildTargetGroup))) { + string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group); + if (!defines.Contains(SPINE_TK2D_DEFINE)) { + added = true; + if (defines.EndsWith(";")) + defines = defines + SPINE_TK2D_DEFINE; + else + defines = defines + ";" + SPINE_TK2D_DEFINE; + + PlayerSettings.SetScriptingDefineSymbolsForGroup(group, defines); + } + } + + if (added) { + Debug.LogWarning("Setting Scripting Define Symbol " + SPINE_TK2D_DEFINE); + } else { + Debug.LogWarning("Already Set Scripting Define Symbol " + SPINE_TK2D_DEFINE); + } + } + + + static void DisableTK2D () { + bool removed = false; + foreach (BuildTargetGroup group in System.Enum.GetValues(typeof(BuildTargetGroup))) { + string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group); + if (defines.Contains(SPINE_TK2D_DEFINE)) { + removed = true; + if (defines.Contains(SPINE_TK2D_DEFINE + ";")) + defines = defines.Replace(SPINE_TK2D_DEFINE + ";", ""); + else + defines = defines.Replace(SPINE_TK2D_DEFINE, ""); + + PlayerSettings.SetScriptingDefineSymbolsForGroup(group, defines); + } + } + + if (removed) { + Debug.LogWarning("Removing Scripting Define Symbol " + SPINE_TK2D_DEFINE); + } else { + Debug.LogWarning("Already Removed Scripting Define Symbol " + SPINE_TK2D_DEFINE); + } + } + + public class AtlasRequirementLoader : AttachmentLoader { + + List requirementList; + public AtlasRequirementLoader (List requirementList) { + this.requirementList = requirementList; + } + + public RegionAttachment NewRegionAttachment (Skin skin, string name, string path) { + requirementList.Add(path); + return new RegionAttachment(name); + } + + public MeshAttachment NewMeshAttachment (Skin skin, string name, string path) { + requirementList.Add(path); + return new MeshAttachment(name); + } + + public SkinnedMeshAttachment NewSkinnedMeshAttachment (Skin skin, string name, string path) { + requirementList.Add(path); + return new SkinnedMeshAttachment(name); + } + + public BoundingBoxAttachment NewBoundingBoxAttachment (Skin skin, string name) { + return new BoundingBoxAttachment(name); + } + } +} diff --git a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs.meta b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs.meta index 858912afe..544e47769 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs.meta +++ b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs.meta @@ -6,5 +6,3 @@ MonoImporter: executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data.meta b/spine-unity/Assets/spine-unity/Ghost.meta similarity index 63% rename from spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data.meta rename to spine-unity/Assets/spine-unity/Ghost.meta index 1211c5e9f..cc485896c 100644 --- a/spine-tk2d/Assets/examples/goblins/GoblinsAtlas Data.meta +++ b/spine-unity/Assets/spine-unity/Ghost.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 982b49f422d2cb04bbaf38993fef207b +guid: 13193c9d213765f4c85f4c1faa615711 folderAsset: yes DefaultImporter: userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Shaders.meta b/spine-unity/Assets/spine-unity/Ghost/Shaders.meta similarity index 63% rename from spine-tk2d/Assets/spine-tk2d/Shaders.meta rename to spine-unity/Assets/spine-unity/Ghost/Shaders.meta index 488bc7cd1..0e0bd214c 100644 --- a/spine-tk2d/Assets/spine-tk2d/Shaders.meta +++ b/spine-unity/Assets/spine-unity/Ghost/Shaders.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9cb3e0bb833385047a0c479316f3d5df +guid: a0cee0de78cef7440ae0b5aac39ae971 folderAsset: yes DefaultImporter: userData: diff --git a/spine-unity/Assets/spine-unity/Ghost/Shaders/SkeletonGhost.shader b/spine-unity/Assets/spine-unity/Ghost/Shaders/SkeletonGhost.shader new file mode 100644 index 000000000..1494a89d6 --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ghost/Shaders/SkeletonGhost.shader @@ -0,0 +1,92 @@ +//Shader written by Alex Dixon +Shader "Spine/SkeletonGhost" +{ + Properties + { + _Color ("Main Color", Color) = (1,1,1,1) + _MainTex ("Base (RGB) Alpha (A)", 2D) = "white" {} + _TextureFade ("Texture Fade Out", Range(0,1)) = 0 + } + SubShader + { + + Tags {"Queue"="Transparent" "IgnoreProjector"="False" "RenderType"="Transparent"} + Fog { Mode Off } + Blend One OneMinusSrcAlpha + ZWrite Off + Cull Off + + Pass + { + Tags {"LightMode" = "Always"} // This Pass tag is important or Unity may not give it the correct light information. + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + //#pragma multi_compile_fwdbase // This line tells Unity to compile this pass for forward base. + + #include "UnityCG.cginc" + //#include "AutoLight.cginc" + + struct vertex_input + { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + float4 color : COLOR; + + }; + + struct vertex_output + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + + float4 color : COLOR; + }; + + sampler2D _MainTex; + fixed4 _Color; + fixed _TextureFade; + + vertex_output vert (vertex_input v) + { + vertex_output o; + o.pos = mul( UNITY_MATRIX_MVP, v.vertex); + o.uv = v.texcoord.xy; + o.color = v.color; + + + return o; + } + + fixed4 frag(vertex_output i) : COLOR + { + fixed4 tex = tex2D(_MainTex, i.uv); + + tex = fixed4(max(_TextureFade, tex.r), max(_TextureFade, tex.g), max(_TextureFade, tex.b), tex.a); + + return tex * ((i.color * _Color) * tex.a); + + + + //float finalAlpha = tex.a * i.color.a * _Color.a; + + /* + TODO: Add basic lighting stuff in later? + + fixed4 c; + c.rgb = (UNITY_LIGHTMODEL_AMBIENT.rgb * tex.rgb); // Ambient term. Only do this in Forward Base. It only needs calculating once. + c.rgb += tex.rgb; // Diffuse and specular. + //Unity 4: c.rgb = (UNITY_LIGHTMODEL_AMBIENT.rgb * tex.rgb * 2); // Ambient term. Only do this in Forward Base. It only needs calculating once. + //Unity 4: c.rgb += (tex.rgb * _LightColor0.rgb * diff) * (atten * 2); // Diffuse and specular. + c.a = tex.a; // + _LightColor0.a * atten; + + return c; + */ + } + ENDCG + } + + + } + //FallBack "Transparent/Cutout/VertexLit" // Use VertexLit's shadow caster/receiver passes. +} \ No newline at end of file diff --git a/spine-unity/Assets/spine-unity/Ghost/Shaders/SkeletonGhost.shader.meta b/spine-unity/Assets/spine-unity/Ghost/Shaders/SkeletonGhost.shader.meta new file mode 100644 index 000000000..d24d9a340 --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ghost/Shaders/SkeletonGhost.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3873d4699ee8a4b4da8fa6b8c229b94d +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Ghost/SkeletonGhost.cs b/spine-unity/Assets/spine-unity/Ghost/SkeletonGhost.cs new file mode 100644 index 000000000..fe827aebe --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ghost/SkeletonGhost.cs @@ -0,0 +1,147 @@ +/***************************************************************************** + * SkeletonGhost created by Mitch Thompson + * Full irrevocable rights and permissions granted to Esoteric Software +*****************************************************************************/ + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +[RequireComponent(typeof(SkeletonRenderer))] +public class SkeletonGhost : MonoBehaviour { + public bool ghostingEnabled = true; + public float spawnRate = 0.05f; + public Color32 color = new Color32(0xFF, 0xFF, 0xFF, 0x00); + [Tooltip("Remember to set color alpha to 0 if Additive is true")] + public bool additive = true; + public int maximumGhosts = 10; + public float fadeSpeed = 10; + public Shader ghostShader; + [Tooltip("0 is Color and Alpha, 1 is Alpha only.")] + [Range(0, 1)] + public float textureFade = 1; + + float nextSpawnTime; + SkeletonGhostRenderer[] pool; + int poolIndex = 0; + SkeletonRenderer skeletonRenderer; + MeshRenderer meshRenderer; + MeshFilter meshFilter; + + + Dictionary materialTable = new Dictionary(); + + void Start () { + if (ghostShader == null) + ghostShader = Shader.Find("Spine/SkeletonGhost"); + + skeletonRenderer = GetComponent(); + meshFilter = GetComponent(); + meshRenderer = GetComponent(); + nextSpawnTime = Time.time + spawnRate; + pool = new SkeletonGhostRenderer[maximumGhosts]; + for (int i = 0; i < maximumGhosts; i++) { + GameObject go = new GameObject(gameObject.name + " Ghost", typeof(SkeletonGhostRenderer)); + pool[i] = go.GetComponent(); + go.SetActive(false); + go.hideFlags = HideFlags.HideInHierarchy; + } + + if (skeletonRenderer is SkeletonAnimation) + ((SkeletonAnimation)skeletonRenderer).state.Event += OnEvent; + + } + + //SkeletonAnimation + /* + * Int Value: 0 sets ghostingEnabled to false, 1 sets ghostingEnabled to true + * Float Value: Values greater than 0 set the spawnRate equal the float value + * String Value: Pass RGBA hex color values in to set the color property. IE: "A0FF8BFF" + */ + void OnEvent (Spine.AnimationState state, int trackIndex, Spine.Event e) { + if (e.Data.Name == "Ghosting") { + ghostingEnabled = e.Int > 0; + if (e.Float > 0) + spawnRate = e.Float; + if (e.String != null) { + this.color = HexToColor(e.String); + } + } + } + + //SkeletonAnimator + //SkeletonAnimator or Mecanim based animations only support toggling ghostingEnabled. Be sure not to set anything other than the Int param in Spine or String will take priority. + void Ghosting (float val) { + ghostingEnabled = val > 0; + } + + void Update () { + if (!ghostingEnabled) + return; + + if (Time.time >= nextSpawnTime) { + GameObject go = pool[poolIndex].gameObject; + + Material[] materials = meshRenderer.sharedMaterials; + for (int i = 0; i < materials.Length; i++) { + var originalMat = materials[i]; + Material ghostMat; + if (!materialTable.ContainsKey(originalMat)) { + ghostMat = new Material(originalMat); + ghostMat.shader = ghostShader; + ghostMat.color = Color.white; + if (ghostMat.HasProperty("_TextureFade")) + ghostMat.SetFloat("_TextureFade", textureFade); + materialTable.Add(originalMat, ghostMat); + } else { + ghostMat = materialTable[originalMat]; + } + + materials[i] = ghostMat; + } + + pool[poolIndex].Initialize(meshFilter.sharedMesh, materials, color, additive, fadeSpeed, meshRenderer.sortingOrder - 1); + go.transform.parent = transform; + + go.transform.localPosition = Vector3.zero; + go.transform.localRotation = Quaternion.identity; + go.transform.localScale = Vector3.one; + + go.transform.parent = null; + + poolIndex++; + + if (poolIndex == pool.Length) + poolIndex = 0; + + nextSpawnTime = Time.time + spawnRate; + } + } + + void OnDestroy () { + for (int i = 0; i < maximumGhosts; i++) { + if (pool[i] != null) + pool[i].Cleanup(); + } + + foreach (var mat in materialTable.Values) + Destroy(mat); + } + + + //based on UnifyWiki http://wiki.unity3d.com/index.php?title=HexConverter + static Color32 HexToColor (string hex) { + if (hex.Length < 6) + return Color.magenta; + + hex = hex.Replace("#", ""); + byte r = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber); + byte g = byte.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber); + byte b = byte.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber); + byte a = 0xFF; + if (hex.Length == 8) + a = byte.Parse(hex.Substring(6, 2), System.Globalization.NumberStyles.HexNumber); + + return new Color32(r, g, b, a); + } +} diff --git a/spine-unity/Assets/spine-unity/Ghost/SkeletonGhost.cs.meta b/spine-unity/Assets/spine-unity/Ghost/SkeletonGhost.cs.meta new file mode 100644 index 000000000..32cd44c59 --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ghost/SkeletonGhost.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 02f2fa991881c6d419500ccc40ad443f +timeCreated: 1431858330 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: + - ghostShader: {fileID: 4800000, guid: 3873d4699ee8a4b4da8fa6b8c229b94d, type: 3} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Ghost/SkeletonGhostRenderer.cs b/spine-unity/Assets/spine-unity/Ghost/SkeletonGhostRenderer.cs new file mode 100644 index 000000000..6ce7dfefb --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ghost/SkeletonGhostRenderer.cs @@ -0,0 +1,109 @@ +/***************************************************************************** + * SkeletonGhostRenderer created by Mitch Thompson + * Full irrevocable rights and permissions granted to Esoteric Software +*****************************************************************************/ + +using UnityEngine; +using System.Collections; + +public class SkeletonGhostRenderer : MonoBehaviour { + + public float fadeSpeed = 10; + + Color32[] colors; + Color32 black = new Color32(0, 0, 0, 0); + MeshFilter meshFilter; + MeshRenderer meshRenderer; + + void Awake () { + meshRenderer = gameObject.AddComponent(); + meshFilter = gameObject.AddComponent(); + } + + public void Initialize (Mesh mesh, Material[] materials, Color32 color, bool additive, float speed, int sortingOrder) { + StopAllCoroutines(); + + gameObject.SetActive(true); + + + meshRenderer.sharedMaterials = materials; + meshRenderer.sortingOrder = sortingOrder; + + meshFilter.sharedMesh = (Mesh)Instantiate(mesh); + + colors = meshFilter.sharedMesh.colors32; + + if ((color.a + color.r + color.g + color.b) > 0) { + for (int i = 0; i < colors.Length; i++) { + colors[i] = color; + } + } + + fadeSpeed = speed; + + if (additive) + StartCoroutine(FadeAdditive()); + else + StartCoroutine(Fade()); + } + + IEnumerator Fade () { + Color32 c; + for (int t = 0; t < 500; t++) { + + bool breakout = true; + for (int i = 0; i < colors.Length; i++) { + c = colors[i]; + if (c.a > 0) + breakout = false; + + colors[i] = Color32.Lerp(c, black, Time.deltaTime * fadeSpeed); + } + + meshFilter.sharedMesh.colors32 = colors; + + if (breakout) + break; + yield return null; + } + + Destroy(meshFilter.sharedMesh); + + gameObject.SetActive(false); + } + + IEnumerator FadeAdditive () { + Color32 c; + Color32 black = this.black; + + for (int t = 0; t < 500; t++) { + + bool breakout = true; + for (int i = 0; i < colors.Length; i++) { + c = colors[i]; + black.a = c.a; + if (c.r > 0 || c.g > 0 || c.b > 0) + breakout = false; + + colors[i] = Color32.Lerp(c, black, Time.deltaTime * fadeSpeed); + } + + meshFilter.sharedMesh.colors32 = colors; + + if (breakout) + break; + yield return null; + } + + Destroy(meshFilter.sharedMesh); + + gameObject.SetActive(false); + } + + public void Cleanup () { + if (meshFilter != null && meshFilter.sharedMesh != null) + Destroy(meshFilter.sharedMesh); + + Destroy(gameObject); + } +} diff --git a/spine-unity/Assets/Examples/Scripts/DynamicSpineBone.cs.meta b/spine-unity/Assets/spine-unity/Ghost/SkeletonGhostRenderer.cs.meta similarity index 82% rename from spine-unity/Assets/Examples/Scripts/DynamicSpineBone.cs.meta rename to spine-unity/Assets/spine-unity/Ghost/SkeletonGhostRenderer.cs.meta index bc05f26e6..2f9fb1a1a 100644 --- a/spine-unity/Assets/Examples/Scripts/DynamicSpineBone.cs.meta +++ b/spine-unity/Assets/spine-unity/Ghost/SkeletonGhostRenderer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7dae3f4db9a24bf4abe2059526bfd689 +guid: 58e3a9b80754b7545a1dff4d8475b51f MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/spine-tk2d/Assets/examples.meta b/spine-unity/Assets/spine-unity/Ragdoll.meta similarity index 63% rename from spine-tk2d/Assets/examples.meta rename to spine-unity/Assets/spine-unity/Ragdoll.meta index 914d7a476..cb9062592 100644 --- a/spine-tk2d/Assets/examples.meta +++ b/spine-unity/Assets/spine-unity/Ragdoll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ddc30294e8bdeb0469c854ccf66824fc +guid: 90af663b37d994841b7ac03ae30fe2a9 folderAsset: yes DefaultImporter: userData: diff --git a/spine-tk2d/Assets/spine-tk2d/Editor.meta b/spine-unity/Assets/spine-unity/Ragdoll/Editor.meta similarity index 63% rename from spine-tk2d/Assets/spine-tk2d/Editor.meta rename to spine-unity/Assets/spine-unity/Ragdoll/Editor.meta index 18a2e4c7e..6cac463d2 100644 --- a/spine-tk2d/Assets/spine-tk2d/Editor.meta +++ b/spine-unity/Assets/spine-unity/Ragdoll/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ad07f9d157ce0a1468016aa5b6683e2a +guid: 7220dc1e8d545e849a2eb63e8633349b folderAsset: yes DefaultImporter: userData: diff --git a/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdoll2DInspector.cs b/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdoll2DInspector.cs new file mode 100644 index 000000000..87c3da693 --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdoll2DInspector.cs @@ -0,0 +1,52 @@ +/***************************************************************************** + * SkeletonRagdoll2D added by Mitch Thompson + * Full irrevocable rights and permissions granted to Esoteric Software +*****************************************************************************/ + +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Collections.Generic; + +[CustomEditor(typeof(SkeletonRagdoll2D))] +public class SkeletonRagdoll2DInspector : Editor { + SerializedProperty startingBoneName, stopBoneNames, applyOnStart, pinStartBone, enableJointCollision, gravityScale, disableIK, thickness, rotationLimit, colliderLayer, mix, rootMass, massFalloffFactor; + + void OnEnable () { + startingBoneName = serializedObject.FindProperty("startingBoneName"); + stopBoneNames = serializedObject.FindProperty("stopBoneNames"); + applyOnStart = serializedObject.FindProperty("applyOnStart"); + pinStartBone = serializedObject.FindProperty("pinStartBone"); + gravityScale = serializedObject.FindProperty("gravityScale"); + disableIK = serializedObject.FindProperty("disableIK"); + thickness = serializedObject.FindProperty("thickness"); + rotationLimit = serializedObject.FindProperty("rotationLimit"); + colliderLayer = serializedObject.FindProperty("colliderLayer"); + mix = serializedObject.FindProperty("mix"); + rootMass = serializedObject.FindProperty("rootMass"); + massFalloffFactor = serializedObject.FindProperty("massFalloffFactor"); + } + + public override void OnInspectorGUI () { + EditorGUILayout.PropertyField(startingBoneName); + EditorGUILayout.PropertyField(stopBoneNames, true); + EditorGUILayout.PropertyField(applyOnStart); + EditorGUILayout.PropertyField(pinStartBone); + EditorGUILayout.PropertyField(gravityScale); + EditorGUILayout.PropertyField(disableIK); + EditorGUILayout.PropertyField(thickness); + EditorGUILayout.PropertyField(rotationLimit); + EditorGUILayout.PropertyField(rootMass); + EditorGUILayout.PropertyField(massFalloffFactor); + colliderLayer.intValue = EditorGUILayout.LayerField(colliderLayer.displayName, colliderLayer.intValue); + EditorGUILayout.PropertyField(mix); + + + serializedObject.ApplyModifiedProperties(); + } + + void Header (string name) { + GUILayout.Space(20); + EditorGUILayout.LabelField(name, EditorStyles.boldLabel); + } +} diff --git a/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdoll2DInspector.cs.meta b/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdoll2DInspector.cs.meta new file mode 100644 index 000000000..08480207a --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdoll2DInspector.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b6dd0b99faf3aeb4d803eb9989cb369c +timeCreated: 1431741936 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdollInspector.cs b/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdollInspector.cs new file mode 100644 index 000000000..af1627af4 --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdollInspector.cs @@ -0,0 +1,53 @@ +/***************************************************************************** + * SkeletonRagdoll added by Mitch Thompson + * Full irrevocable rights and permissions granted to Esoteric Software +*****************************************************************************/ + +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Collections.Generic; + +[CustomEditor(typeof(SkeletonRagdoll))] +public class SkeletonRagdollInspector : Editor { + SerializedProperty startingBoneName, stopBoneNames, applyOnStart, pinStartBone, enableJointCollision, useGravity, disableIK, thickness, rotationLimit, colliderLayer, mix, rootMass, massFalloffFactor; + + void OnEnable () { + startingBoneName = serializedObject.FindProperty("startingBoneName"); + stopBoneNames = serializedObject.FindProperty("stopBoneNames"); + applyOnStart = serializedObject.FindProperty("applyOnStart"); + pinStartBone = serializedObject.FindProperty("pinStartBone"); + enableJointCollision = serializedObject.FindProperty("enableJointCollision"); + useGravity = serializedObject.FindProperty("useGravity"); + disableIK = serializedObject.FindProperty("disableIK"); + thickness = serializedObject.FindProperty("thickness"); + rotationLimit = serializedObject.FindProperty("rotationLimit"); + colliderLayer = serializedObject.FindProperty("colliderLayer"); + mix = serializedObject.FindProperty("mix"); + rootMass = serializedObject.FindProperty("rootMass"); + massFalloffFactor = serializedObject.FindProperty("massFalloffFactor"); + } + + public override void OnInspectorGUI () { + EditorGUILayout.PropertyField(startingBoneName); + EditorGUILayout.PropertyField(stopBoneNames, true); + EditorGUILayout.PropertyField(applyOnStart); + EditorGUILayout.PropertyField(pinStartBone); + EditorGUILayout.PropertyField(enableJointCollision); + EditorGUILayout.PropertyField(useGravity); + EditorGUILayout.PropertyField(disableIK); + EditorGUILayout.PropertyField(thickness); + EditorGUILayout.PropertyField(rotationLimit); + EditorGUILayout.PropertyField(rootMass); + EditorGUILayout.PropertyField(massFalloffFactor); + colliderLayer.intValue = EditorGUILayout.LayerField(colliderLayer.displayName, colliderLayer.intValue); + EditorGUILayout.PropertyField(mix); + + serializedObject.ApplyModifiedProperties(); + } + + void Header (string name) { + GUILayout.Space(20); + EditorGUILayout.LabelField(name, EditorStyles.boldLabel); + } +} diff --git a/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdollInspector.cs.meta b/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdollInspector.cs.meta new file mode 100644 index 000000000..7c478ae50 --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ragdoll/Editor/SkeletonRagdollInspector.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c95a670c56447c644a0f062e4cdd448e +timeCreated: 1431740230 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll.cs b/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll.cs new file mode 100644 index 000000000..c2ce22116 --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll.cs @@ -0,0 +1,413 @@ +/***************************************************************************** + * SkeletonRagdoll added by Mitch Thompson + * Full irrevocable rights and permissions granted to Esoteric Software +*****************************************************************************/ + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Spine; + +[RequireComponent(typeof(SkeletonRenderer))] +public class SkeletonRagdoll : MonoBehaviour { + private static Transform helper; + + [Header("Hierarchy")] + [SpineBone] + public string startingBoneName = ""; + [SpineBone] + public List stopBoneNames = new List(); + + [Header("Parameters")] + public bool applyOnStart; + [Tooltip("Set RootRigidbody IsKinematic to true when Apply is called.")] + public bool pinStartBone; + [Tooltip("Enable Collision between adjacent ragdoll elements (IE: Neck and Head)")] + public bool enableJointCollision; + public bool useGravity = true; + [Tooltip("Warning! You will have to re-enable and tune mix values manually if attempting to remove the ragdoll system.")] + public bool disableIK = true; + [Tooltip("If no BoundingBox Attachment is attached to a bone, this becomes the default Width or Radius of a Bone's ragdoll Rigidbody")] + public float thickness = 0.125f; + [Tooltip("Default rotational limit value. Min is negative this value, Max is this value.")] + public float rotationLimit = 20; + public float rootMass = 20; + [Tooltip("If your ragdoll seems unstable or uneffected by limits, try lowering this value.")] + [Range(0.01f, 1f)] + public float massFalloffFactor = 0.4f; + [Tooltip("The layer assigned to all of the rigidbody parts.")] + public int colliderLayer = 0; + [Range(0, 1)] + public float mix = 1; + + public Rigidbody RootRigidbody { + get { + return this.rootRigidbody; + } + } + + public Vector3 RootOffset { + get { + return this.rootOffset; + } + } + + public Vector3 EstimatedSkeletonPosition { + get { + return rootRigidbody.position - rootOffset; + } + } + + public bool IsActive { + get { + return this.isActive; + } + } + + private Rigidbody rootRigidbody; + private ISkeletonAnimation skeletonAnim; + private Skeleton skeleton; + private Dictionary boneTable = new Dictionary(); + private Bone startingBone; + private Transform ragdollRoot; + private Vector3 rootOffset; + private bool isActive; + + IEnumerator Start () { + skeletonAnim = (ISkeletonAnimation)GetComponent(); + if (helper == null) { + helper = (Transform)(new GameObject("Helper")).transform; + helper.hideFlags = HideFlags.HideInHierarchy; + } + + if (applyOnStart) { + yield return null; + Apply(); + } + } + + public Coroutine SmoothMix (float target, float duration) { + return StartCoroutine(SmoothMixCoroutine(target, duration)); + } + + IEnumerator SmoothMixCoroutine (float target, float duration) { + float startTime = Time.time; + float startMix = mix; + while (mix > 0) { + mix = Mathf.SmoothStep(startMix, target, (Time.time - startTime) / duration); + yield return null; + } + } + + public void SetSkeletonPosition (Vector3 worldPosition) { + if (!isActive) { + Debug.LogWarning("Can't call SetSkeletonPosition while Ragdoll is not active!"); + return; + } + + Vector3 offset = worldPosition - transform.position; + transform.position = worldPosition; + foreach (Transform t in boneTable.Values) { + t.position -= offset; + } + + UpdateWorld(null); + skeleton.UpdateWorldTransform(); + } + + public Rigidbody[] GetRigidbodyArray () { + if (!isActive) + return new Rigidbody[0]; + + Rigidbody[] arr = new Rigidbody[boneTable.Count]; + int i = 0; + foreach (Transform t in boneTable.Values) { + arr[i] = t.GetComponent(); + i++; + } + + return arr; + } + + public Rigidbody GetRigidbody (string boneName) { + var bone = skeleton.FindBone(boneName); + if (bone == null) + return null; + + if (boneTable.ContainsKey(bone)) + return boneTable[bone].GetComponent(); + + return null; + } + + public void Remove () { + isActive = false; + foreach (var t in boneTable.Values) { + Destroy(t.gameObject); + } + Destroy(ragdollRoot.gameObject); + + boneTable.Clear(); + skeletonAnim.UpdateWorld -= UpdateWorld; + } + + public void Apply () { + isActive = true; + skeleton = skeletonAnim.Skeleton; + mix = 1; + + var ragdollRootBone = skeleton.FindBone(startingBoneName); + startingBone = ragdollRootBone; + RecursivelyCreateBoneProxies(ragdollRootBone); + + rootRigidbody = boneTable[ragdollRootBone].GetComponent(); + rootRigidbody.isKinematic = pinStartBone; + + rootRigidbody.mass = rootMass; + + List boneColliders = new List(); + + foreach (var pair in boneTable) { + var b = pair.Key; + var t = pair.Value; + Bone parentBone = null; + Transform parentTransform = transform; + + boneColliders.Add(t.GetComponent()); + + if (b != startingBone) { + parentBone = b.Parent; + parentTransform = boneTable[parentBone]; + } else { + ragdollRoot = new GameObject("RagdollRoot").transform; + ragdollRoot.parent = transform; + + if (b == skeleton.RootBone) { + ragdollRoot.localPosition = new Vector3(b.WorldX, b.WorldY, 0); + ragdollRoot.localRotation = Quaternion.Euler(0, 0, GetCompensatedRotationIK(b)); + parentTransform = ragdollRoot; + } else { + ragdollRoot.localPosition = new Vector3(b.Parent.WorldX, b.Parent.WorldY, 0); + ragdollRoot.localRotation = Quaternion.Euler(0, 0, GetCompensatedRotationIK(b.Parent)); + parentTransform = ragdollRoot; + } + + rootOffset = t.position - transform.position; + } + + var rbParent = parentTransform.GetComponent(); + + if (rbParent != null) { + var joint = t.gameObject.AddComponent(); + joint.connectedBody = rbParent; + Vector3 localPos = parentTransform.InverseTransformPoint(t.position); + localPos.x *= 1; + joint.connectedAnchor = localPos; + joint.axis = Vector3.forward; + joint.GetComponent().mass = joint.connectedBody.mass * massFalloffFactor; + JointLimits limits = new JointLimits(); + limits.min = -rotationLimit; + limits.max = rotationLimit; + joint.limits = limits; + joint.useLimits = true; + joint.enableCollision = enableJointCollision; + } + } + + for (int x = 0; x < boneColliders.Count; x++) { + for (int y = 0; y < boneColliders.Count; y++) { + if (x == y) continue; + Physics.IgnoreCollision(boneColliders[x], boneColliders[y]); + } + } + + var utilityBones = GetComponentsInChildren(); + if (utilityBones.Length > 0) { + List destroyedUtilityBoneNames = new List(); + foreach (var ub in utilityBones) { + if (ub.mode == SkeletonUtilityBone.Mode.Override) { + destroyedUtilityBoneNames.Add(ub.gameObject.name); + Destroy(ub.gameObject); + } + } + + if (destroyedUtilityBoneNames.Count > 0) { + string msg = "Destroyed Utility Bones: "; + for (int i = 0; i < destroyedUtilityBoneNames.Count; i++) { + msg += destroyedUtilityBoneNames[i]; + if (i != destroyedUtilityBoneNames.Count - 1) { + msg += ","; + } + } + Debug.LogWarning(msg); + } + } + + if (disableIK) { + foreach (IkConstraint ik in skeleton.IkConstraints) { + ik.Mix = 0; + } + } + + skeletonAnim.UpdateWorld += UpdateWorld; + } + + void RecursivelyCreateBoneProxies (Bone b) { + if (stopBoneNames.Contains(b.Data.Name)) + return; + + GameObject go = new GameObject(b.Data.Name); + go.layer = colliderLayer; + Transform t = go.transform; + boneTable.Add(b, t); + + t.parent = transform; + + t.localPosition = new Vector3(b.WorldX, b.WorldY, 0); + t.localRotation = Quaternion.Euler(0, 0, b.WorldFlipX ^ b.WorldFlipY ? -b.WorldRotation : b.WorldRotation); + t.localScale = new Vector3(b.WorldScaleX, b.WorldScaleY, 1); + + float length = b.Data.Length; + + var colliders = AttachBoundingBoxRagdollColliders(b); + + if (length == 0) { + //physics + if (colliders.Count == 0) { + var ball = go.AddComponent(); + ball.radius = thickness / 2f; + } + } else { + //physics + if (colliders.Count == 0) { + var box = go.AddComponent(); + box.size = new Vector3(length, thickness, thickness); + box.center = new Vector3((b.WorldFlipX ? -length : length) / 2, 0); + } + } + + var rb = go.AddComponent(); + rb.constraints = RigidbodyConstraints.FreezePositionZ; + foreach (Bone child in b.Children) { + RecursivelyCreateBoneProxies(child); + } + } + + List AttachBoundingBoxRagdollColliders (Bone b) { + List colliders = new List(); + + Transform t = boneTable[b]; + GameObject go = t.gameObject; + var skin = skeleton.Skin; + if (skin == null) + skin = skeleton.Data.DefaultSkin; + + bool flipX = b.WorldFlipX; + bool flipY = b.WorldFlipY; + + List attachments = new List(); + foreach (Slot s in skeleton.Slots) { + if (s.Bone == b) { + skin.FindAttachmentsForSlot(skeleton.Slots.IndexOf(s), attachments); + foreach (var a in attachments) { + if (a is BoundingBoxAttachment) { + if (!a.Name.ToLower().Contains("ragdoll")) + continue; + + var collider = go.AddComponent(); + var bounds = SkeletonUtility.GetBoundingBoxBounds((BoundingBoxAttachment)a, thickness); + + collider.center = bounds.center; + collider.size = bounds.size; + + if (flipX || flipY) { + Vector3 center = collider.center; + + if (flipX) + center.x *= -1; + + if (flipY) + center.y *= -1; + + collider.center = center; + } + + colliders.Add(collider); + } + } + } + } + + return colliders; + } + + void UpdateWorld (SkeletonRenderer skeletonRenderer) { + foreach (var pair in boneTable) { + var b = pair.Key; + var t = pair.Value; + bool flip = false; + bool flipX = false; //TODO: deal with negative scale instead of Flip Key for Spine 3.0 + bool flipY = false; //TODO: deal with negative scale instead of Flip Key for Spine 3.0 + Bone parentBone = null; + Transform parentTransform = transform; + + if (b != startingBone) { + parentBone = b.Parent; + parentTransform = boneTable[parentBone]; + flipX = parentBone.WorldFlipX; + flipY = parentBone.WorldFlipY; + + } else { + parentBone = b.Parent; + parentTransform = ragdollRoot; + if (b.Parent != null) { + flipX = b.worldFlipX; + flipY = b.WorldFlipY; + } else { + flipX = b.Skeleton.FlipX; + flipY = b.Skeleton.FlipY; + } + } + + flip = flipX ^ flipY; + + helper.position = parentTransform.position; + helper.rotation = parentTransform.rotation; + helper.localScale = new Vector3(flipX ? -parentTransform.localScale.x : parentTransform.localScale.x, flipY ? -parentTransform.localScale.y : parentTransform.localScale.y, 1); + + + Vector3 pos = t.position; + pos = helper.InverseTransformPoint(pos); + b.X = Mathf.Lerp(b.X, pos.x, mix); + b.Y = Mathf.Lerp(b.Y, pos.y, mix); + + Vector3 right = helper.InverseTransformDirection(t.right); + + float a = Mathf.Atan2(right.y, right.x) * Mathf.Rad2Deg; + + if (b.WorldFlipX ^ b.WorldFlipY) { + a *= -1; + } + + if (parentBone != null) { + if ((b.WorldFlipX ^ b.WorldFlipY) != flip) { + a -= GetCompensatedRotationIK(parentBone) * 2; + } + } + + b.Rotation = Mathf.Lerp(b.Rotation, a, mix); + b.RotationIK = Mathf.Lerp(b.rotationIK, a, mix); + } + } + + float GetCompensatedRotationIK (Bone b) { + Bone parent = b.Parent; + float a = b.RotationIK; + while (parent != null) { + a += parent.RotationIK; + parent = parent.parent; + } + + return a; + } +} diff --git a/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll.cs.meta b/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll.cs.meta new file mode 100644 index 000000000..f19d6808f --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 373527d2bf3351348b9fcc499ce9ea23 +timeCreated: 1430552693 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll2D.cs b/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll2D.cs new file mode 100644 index 000000000..962acf543 --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll2D.cs @@ -0,0 +1,423 @@ +/***************************************************************************** + * SkeletonRagdoll2D added by Mitch Thompson + * Full irrevocable rights and permissions granted to Esoteric Software +*****************************************************************************/ + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Spine; + +[RequireComponent(typeof(SkeletonRenderer))] +public class SkeletonRagdoll2D : MonoBehaviour { + private static Transform helper; + + [Header("Hierarchy")] + [SpineBone] + public string startingBoneName = ""; + [SpineBone] + public List stopBoneNames = new List(); + + [Header("Parameters")] + public bool applyOnStart; + [Tooltip("Set RootRigidbody IsKinematic to true when Apply is called.")] + public bool pinStartBone; + public float gravityScale = 1; + [Tooltip("Warning! You will have to re-enable and tune mix values manually if attempting to remove the ragdoll system.")] + public bool disableIK = true; + [Tooltip("If no BoundingBox Attachment is attached to a bone, this becomes the default Width or Radius of a Bone's ragdoll Rigidbody")] + public float thickness = 0.125f; + [Tooltip("Default rotational limit value. Min is negative this value, Max is this value.")] + public float rotationLimit = 20; + public float rootMass = 20; + [Tooltip("If your ragdoll seems unstable or uneffected by limits, try lowering this value.")] + [Range(0.01f, 1f)] + public float massFalloffFactor = 0.4f; + [Tooltip("The layer assigned to all of the rigidbody parts.")] + public int colliderLayer = 0; + [Range(0, 1)] + public float mix = 1; + + public Rigidbody2D RootRigidbody { + get { + return this.rootRigidbody; + } + } + + public Vector3 RootOffset { + get { + return this.rootOffset; + } + } + + public Vector3 EstimatedSkeletonPosition { + get { + return this.rootRigidbody.position - rootOffset; + } + } + + public bool IsActive { + get { + return this.isActive; + } + } + + private Rigidbody2D rootRigidbody; + private ISkeletonAnimation skeletonAnim; + private Skeleton skeleton; + private Dictionary boneTable = new Dictionary(); + private Bone startingBone; + private Transform ragdollRoot; + private Vector2 rootOffset; + private bool isActive; + + + IEnumerator Start () { + skeletonAnim = (ISkeletonAnimation)GetComponent(); + if (helper == null) { + helper = (Transform)(new GameObject("Helper")).transform; + helper.hideFlags = HideFlags.HideInHierarchy; + } + + if (applyOnStart) { + yield return null; + Apply(); + } + } + + public Coroutine SmoothMix (float target, float duration) { + return StartCoroutine(SmoothMixCoroutine(target, duration)); + } + + IEnumerator SmoothMixCoroutine (float target, float duration) { + float startTime = Time.time; + float startMix = mix; + while (mix > 0) { + mix = Mathf.SmoothStep(startMix, target, (Time.time - startTime) / duration); + yield return null; + } + } + + public void SetSkeletonPosition (Vector3 worldPosition) { + if (!isActive) { + Debug.LogWarning("Can't call SetSkeletonPosition while Ragdoll is not active!"); + return; + } + + Vector3 offset = worldPosition - transform.position; + transform.position = worldPosition; + foreach (Transform t in boneTable.Values) { + t.position -= offset; + } + + UpdateWorld(null); + skeleton.UpdateWorldTransform(); + } + + public Rigidbody2D[] GetRigidbodyArray () { + if (!isActive) + return new Rigidbody2D[0]; + + Rigidbody2D[] arr = new Rigidbody2D[boneTable.Count]; + int i = 0; + foreach (Transform t in boneTable.Values) { + arr[i] = t.GetComponent(); + i++; + } + + return arr; + } + + public Rigidbody2D GetRigidbody (string boneName) { + var bone = skeleton.FindBone(boneName); + if (bone == null) + return null; + + if (boneTable.ContainsKey(bone)) + return boneTable[bone].GetComponent(); + + return null; + } + + public void Remove () { + isActive = false; + foreach (var t in boneTable.Values) { + Destroy(t.gameObject); + } + Destroy(ragdollRoot.gameObject); + + boneTable.Clear(); + skeletonAnim.UpdateWorld -= UpdateWorld; + } + + public void Apply () { + isActive = true; + skeleton = skeletonAnim.Skeleton; + mix = 1; + + var ragdollRootBone = skeleton.FindBone(startingBoneName); + startingBone = ragdollRootBone; + RecursivelyCreateBoneProxies(ragdollRootBone); + + rootRigidbody = boneTable[ragdollRootBone].GetComponent(); + rootRigidbody.isKinematic = pinStartBone; + rootRigidbody.mass = rootMass; + + List boneColliders = new List(); + + foreach (var pair in boneTable) { + var b = pair.Key; + var t = pair.Value; + Bone parentBone = null; + Transform parentTransform = transform; + + boneColliders.Add(t.GetComponent()); + + if (b != startingBone) { + parentBone = b.Parent; + parentTransform = boneTable[parentBone]; + } else { + ragdollRoot = new GameObject("RagdollRoot").transform; + ragdollRoot.parent = transform; + + if (b == skeleton.RootBone) { + ragdollRoot.localPosition = new Vector3(b.WorldX, b.WorldY, 0); + ragdollRoot.localRotation = Quaternion.Euler(0, 0, GetCompensatedRotationIK(b)); + parentTransform = ragdollRoot; + } else { + ragdollRoot.localPosition = new Vector3(b.Parent.WorldX, b.Parent.WorldY, 0); + ragdollRoot.localRotation = Quaternion.Euler(0, 0, GetCompensatedRotationIK(b.Parent)); + parentTransform = ragdollRoot; + } + + rootOffset = t.position - transform.position; + } + + var rbParent = parentTransform.GetComponent(); + + if (rbParent != null) { + var joint = t.gameObject.AddComponent(); + joint.connectedBody = rbParent; + Vector3 localPos = parentTransform.InverseTransformPoint(t.position); + localPos.x *= 1; + joint.connectedAnchor = localPos; + joint.GetComponent().mass = joint.connectedBody.mass * massFalloffFactor; + JointAngleLimits2D limits = new JointAngleLimits2D(); + limits.min = -rotationLimit; + limits.max = rotationLimit; + joint.limits = limits; + joint.useLimits = true; + } + } + + for (int x = 0; x < boneColliders.Count; x++) { + for (int y = 0; y < boneColliders.Count; y++) { + if (x == y) continue; + Physics2D.IgnoreCollision(boneColliders[x], boneColliders[y]); + } + } + + var utilityBones = GetComponentsInChildren(); + if (utilityBones.Length > 0) { + List destroyedUtilityBoneNames = new List(); + foreach (var ub in utilityBones) { + if (ub.mode == SkeletonUtilityBone.Mode.Override) { + destroyedUtilityBoneNames.Add(ub.gameObject.name); + Destroy(ub.gameObject); + } + } + + if (destroyedUtilityBoneNames.Count > 0) { + string msg = "Destroyed Utility Bones: "; + for (int i = 0; i < destroyedUtilityBoneNames.Count; i++) { + msg += destroyedUtilityBoneNames[i]; + if (i != destroyedUtilityBoneNames.Count - 1) { + msg += ","; + } + } + Debug.LogWarning(msg); + } + } + + if (disableIK) { + foreach (IkConstraint ik in skeleton.IkConstraints) { + ik.Mix = 0; + } + } + + skeletonAnim.UpdateWorld += UpdateWorld; + } + + void RecursivelyCreateBoneProxies (Bone b) { + if (stopBoneNames.Contains(b.Data.Name)) + return; + + GameObject go = new GameObject(b.Data.Name); + go.layer = colliderLayer; + Transform t = go.transform; + boneTable.Add(b, t); + + t.parent = transform; + + t.localPosition = new Vector3(b.WorldX, b.WorldY, 0); + //TODO: deal with WorldFlipY + t.localRotation = Quaternion.Euler(0, 0, b.WorldFlipX ? -b.WorldRotation : b.WorldRotation); + t.localScale = new Vector3(b.WorldScaleX, b.WorldScaleY, 0); + + float length = b.Data.Length; + + //TODO proper ragdoll branching + var colliders = AttachBoundingBoxRagdollColliders(b); + + if (length == 0) { + //physics + if (colliders.Count == 0) { + var circle = go.AddComponent(); + circle.radius = thickness / 2f; + } + } else { + //physics + if (colliders.Count == 0) { + var box = go.AddComponent(); + box.size = new Vector2(length, thickness); +#if UNITY_5 + box.offset = new Vector2((b.WorldFlipX ? -length : length) / 2, 0); +#else + box.center = new Vector2((b.WorldFlipX ? -length : length) / 2, 0); +#endif + } + } + + var rb = go.AddComponent(); + rb.gravityScale = gravityScale; + + foreach (Bone child in b.Children) { + RecursivelyCreateBoneProxies(child); + } + } + + List AttachBoundingBoxRagdollColliders (Bone b) { + List colliders = new List(); + Transform t = boneTable[b]; + GameObject go = t.gameObject; + var skin = skeleton.Skin; + if (skin == null) + skin = skeleton.Data.DefaultSkin; + + bool flipX = b.WorldFlipX; + bool flipY = b.WorldFlipY; + + List attachments = new List(); + foreach (Slot s in skeleton.Slots) { + if (s.Bone == b) { + skin.FindAttachmentsForSlot(skeleton.Slots.IndexOf(s), attachments); + foreach (var a in attachments) { + if (a is BoundingBoxAttachment) { + if (!a.Name.ToLower().Contains("ragdoll")) + continue; + + var collider = SkeletonUtility.AddBoundingBoxAsComponent((BoundingBoxAttachment)a, go, false); + + if (flipX || flipY) { + Vector2[] points = collider.points; + + for (int i = 0; i < points.Length; i++) { + if (flipX) + points[i].x *= -1; + + if (flipY) + points[i].y *= -1; + } + + collider.points = points; + } + + colliders.Add(collider); + } + } + } + } + + return colliders; + } + + void UpdateWorld (SkeletonRenderer skeletonRenderer) { + foreach (var pair in boneTable) { + var b = pair.Key; + var t = pair.Value; + bool flip = false; + bool flipX = false; //TODO: deal with negative scale instead of Flip Key + bool flipY = false; //TODO: deal with negative scale instead of Flip Key + Bone parentBone = null; + Transform parentTransform = transform; + + if (b != startingBone) { + parentBone = b.Parent; + parentTransform = boneTable[parentBone]; + flipX = parentBone.WorldFlipX; + flipY = parentBone.WorldFlipY; + + } else { + parentBone = b.Parent; + parentTransform = ragdollRoot; + if (b.Parent != null) { + flipX = b.worldFlipX; + flipY = b.WorldFlipY; + } else { + flipX = b.Skeleton.FlipX; + flipY = b.Skeleton.FlipY; + } + } + + flip = flipX ^ flipY; + + helper.position = parentTransform.position; + helper.rotation = parentTransform.rotation; + helper.localScale = new Vector3(flipX ? -parentTransform.localScale.x : parentTransform.localScale.x, flipY ? -parentTransform.localScale.y : parentTransform.localScale.y, 1); + + + Vector3 pos = t.position; + pos = helper.InverseTransformPoint(pos); + b.X = Mathf.Lerp(b.X, pos.x, mix); + b.Y = Mathf.Lerp(b.Y, pos.y, mix); + + Vector3 right = helper.InverseTransformDirection(t.right); + + float a = Mathf.Atan2(right.y, right.x) * Mathf.Rad2Deg; + + if (b.WorldFlipX ^ b.WorldFlipY) { + a *= -1; + } + + if (parentBone != null) { + if ((b.WorldFlipX ^ b.WorldFlipY) != flip) { + a -= GetCompensatedRotationIK(parentBone) * 2; + } + } + + b.Rotation = Mathf.Lerp(b.Rotation, a, mix); + b.RotationIK = Mathf.Lerp(b.rotationIK, a, mix); + } + } + + float GetCompensatedRotationIK (Bone b) { + Bone parent = b.Parent; + float a = b.RotationIK; + while (parent != null) { + a += parent.RotationIK; + parent = parent.parent; + } + + return a; + } + + void OnDrawGizmosSelected () { + if (isActive) { + Gizmos.DrawWireSphere(transform.position, thickness * 1.2f); + Vector3 newTransformPos = rootRigidbody.position - rootOffset; + Gizmos.DrawLine(transform.position, newTransformPos); + Gizmos.DrawWireSphere(newTransformPos, thickness * 1.2f); + } + } + +} diff --git a/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll2D.cs.meta b/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll2D.cs.meta new file mode 100644 index 000000000..ed29795fe --- /dev/null +++ b/spine-unity/Assets/spine-unity/Ragdoll/SkeletonRagdoll2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e74a49a26242a214d9084fde00bfe3ab +timeCreated: 1431497383 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/SkeletonAnimation.cs b/spine-unity/Assets/spine-unity/SkeletonAnimation.cs index 07ebca526..7277ce233 100644 --- a/spine-unity/Assets/spine-unity/SkeletonAnimation.cs +++ b/spine-unity/Assets/spine-unity/SkeletonAnimation.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -62,6 +63,12 @@ public class SkeletonAnimation : SkeletonRenderer, ISkeletonAnimation { protected event UpdateBonesDelegate _UpdateWorld; protected event UpdateBonesDelegate _UpdateComplete; + public Skeleton Skeleton { + get { + return this.skeleton; + } + } + [SerializeField] private String _animationName; @@ -107,17 +114,17 @@ public class SkeletonAnimation : SkeletonRenderer, ISkeletonAnimation { state.Update(deltaTime); state.Apply(skeleton); - if (_UpdateLocal != null) + if (_UpdateLocal != null) _UpdateLocal(this); skeleton.UpdateWorldTransform(); - if (_UpdateWorld != null) { + if (_UpdateWorld != null) { _UpdateWorld(this); skeleton.UpdateWorldTransform(); } - if (_UpdateComplete != null) { + if (_UpdateComplete != null) { _UpdateComplete(this); } } diff --git a/spine-unity/Assets/spine-unity/SkeletonAnimationInterface.cs b/spine-unity/Assets/spine-unity/SkeletonAnimationInterface.cs index e06b3085c..520114fd8 100644 --- a/spine-unity/Assets/spine-unity/SkeletonAnimationInterface.cs +++ b/spine-unity/Assets/spine-unity/SkeletonAnimationInterface.cs @@ -1,5 +1,37 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; +using Spine; public delegate void UpdateBonesDelegate (SkeletonRenderer skeletonRenderer); public interface ISkeletonAnimation { @@ -8,4 +40,5 @@ public interface ISkeletonAnimation { event UpdateBonesDelegate UpdateComplete; void LateUpdate (); -} \ No newline at end of file + Skeleton Skeleton { get; } +} diff --git a/spine-unity/Assets/spine-unity/SkeletonAnimator.cs b/spine-unity/Assets/spine-unity/SkeletonAnimator.cs index 4adba2684..cd8d7726a 100644 --- a/spine-unity/Assets/spine-unity/SkeletonAnimator.cs +++ b/spine-unity/Assets/spine-unity/SkeletonAnimator.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * SkeletonAnimator created by Mitch Thompson @@ -43,6 +15,10 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { public enum MixMode { AlwaysMix, MixNext, SpineStyle } public MixMode[] layerMixModes = new MixMode[0]; + public Skeleton GetSkeleton () { + return this.skeleton; + + } public event UpdateBonesDelegate UpdateLocal { add { _UpdateLocal += value; } remove { _UpdateLocal -= value; } @@ -62,8 +38,16 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { protected event UpdateBonesDelegate _UpdateWorld; protected event UpdateBonesDelegate _UpdateComplete; - Dictionary animationTable = new Dictionary(); + public Skeleton Skeleton { + get { + return this.skeleton; + } + } + + Dictionary animationTable = new Dictionary(); + Dictionary clipNameHashCodeTable = new Dictionary(); Animator animator; + float lastTime; public override void Reset () { base.Reset(); @@ -71,16 +55,17 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { return; animationTable.Clear(); + clipNameHashCodeTable.Clear(); var data = skeletonDataAsset.GetSkeletonData(true); foreach (var a in data.Animations) { - animationTable.Add(a.Name, a); + animationTable.Add(a.Name.GetHashCode(), a); } animator = GetComponent(); - + lastTime = Time.time; } void Update () { @@ -90,12 +75,13 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { if (layerMixModes.Length != animator.layerCount) { System.Array.Resize(ref layerMixModes, animator.layerCount); } + float deltaTime = Time.time - lastTime; skeleton.Update(Time.deltaTime); //apply int layerCount = animator.layerCount; - float deltaTime = Time.deltaTime; + for (int i = 0; i < layerCount; i++) { float layerWeight = animator.GetLayerWeight(i); @@ -122,7 +108,7 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { continue; float time = stateInfo.normalizedTime * info.clip.length; - animationTable[info.clip.name].Mix(skeleton, Mathf.Max(0, time - deltaTime), time, stateInfo.loop, null, weight); + animationTable[GetAnimationClipNameHashCode(info.clip)].Mix(skeleton, Mathf.Max(0, time - deltaTime), time, stateInfo.loop, null, weight); } foreach (var info in nextClipInfo) { @@ -131,7 +117,7 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { continue; float time = nextStateInfo.normalizedTime * info.clip.length; - animationTable[info.clip.name].Mix(skeleton, Mathf.Max(0, time - deltaTime), time, nextStateInfo.loop, null, weight); + animationTable[GetAnimationClipNameHashCode(info.clip)].Mix(skeleton, Mathf.Max(0, time - deltaTime), time, nextStateInfo.loop, null, weight); } } else if (mode >= MixMode.MixNext) { //apply first non-zero weighted clip @@ -144,7 +130,7 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { continue; float time = stateInfo.normalizedTime * info.clip.length; - animationTable[info.clip.name].Apply(skeleton, Mathf.Max(0, time - deltaTime), time, stateInfo.loop, null); + animationTable[GetAnimationClipNameHashCode(info.clip)].Apply(skeleton, Mathf.Max(0, time - deltaTime), time, stateInfo.loop, null); break; } @@ -156,7 +142,7 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { continue; float time = stateInfo.normalizedTime * info.clip.length; - animationTable[info.clip.name].Mix(skeleton, Mathf.Max(0, time - deltaTime), time, stateInfo.loop, null, weight); + animationTable[GetAnimationClipNameHashCode(info.clip)].Mix(skeleton, Mathf.Max(0, time - deltaTime), time, stateInfo.loop, null, weight); } c = 0; @@ -170,7 +156,7 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { continue; float time = nextStateInfo.normalizedTime * info.clip.length; - animationTable[info.clip.name].Apply(skeleton, Mathf.Max(0, time - deltaTime), time, nextStateInfo.loop, null); + animationTable[GetAnimationClipNameHashCode(info.clip)].Apply(skeleton, Mathf.Max(0, time - deltaTime), time, nextStateInfo.loop, null); break; } } @@ -183,7 +169,7 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { continue; float time = nextStateInfo.normalizedTime * info.clip.length; - animationTable[info.clip.name].Mix(skeleton, Mathf.Max(0, time - deltaTime), time, nextStateInfo.loop, null, weight); + animationTable[GetAnimationClipNameHashCode(info.clip)].Mix(skeleton, Mathf.Max(0, time - deltaTime), time, nextStateInfo.loop, null, weight); } } } @@ -201,5 +187,17 @@ public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { if (_UpdateComplete != null) { _UpdateComplete(this); } + + lastTime = Time.time; } -} + + private int GetAnimationClipNameHashCode (AnimationClip clip) { + int clipNameHashCode; + if (!clipNameHashCodeTable.TryGetValue(clip, out clipNameHashCode)) { + clipNameHashCode = clip.name.GetHashCode(); + clipNameHashCodeTable.Add(clip, clipNameHashCode); + } + + return clipNameHashCode; + } +} \ No newline at end of file diff --git a/spine-unity/Assets/spine-unity/SkeletonDataAsset.cs b/spine-unity/Assets/spine-unity/SkeletonDataAsset.cs index 327ba4640..6a8b991c5 100644 --- a/spine-unity/Assets/spine-unity/SkeletonDataAsset.cs +++ b/spine-unity/Assets/spine-unity/SkeletonDataAsset.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -36,6 +37,9 @@ using Spine; public class SkeletonDataAsset : ScriptableObject { public AtlasAsset[] atlasAssets; +#if SPINE_TK2D + public tk2dSpriteCollectionData spriteCollection; +#endif public TextAsset skeletonJSON; public float scale = 1; public String[] fromAnimation; @@ -46,12 +50,12 @@ public class SkeletonDataAsset : ScriptableObject { private SkeletonData skeletonData; private AnimationStateData stateData; - public void Reset() { + public void Reset () { skeletonData = null; stateData = null; } - public SkeletonData GetSkeletonData(bool quiet) { + public SkeletonData GetSkeletonData (bool quiet) { if (atlasAssets == null) { atlasAssets = new AtlasAsset[0]; if (!quiet) @@ -67,12 +71,17 @@ public class SkeletonDataAsset : ScriptableObject { return null; } - - +#if !SPINE_TK2D if (atlasAssets.Length == 0) { Reset(); return null; } +#else + if (atlasAssets.Length == 0 && spriteCollection == null) { + Reset(); + return null; + } +#endif Atlas[] atlasArr = new Atlas[atlasAssets.Length]; for (int i = 0; i < atlasAssets.Length; i++) { @@ -90,10 +99,44 @@ public class SkeletonDataAsset : ScriptableObject { if (skeletonData != null) return skeletonData; - SkeletonJson json = new SkeletonJson(atlasArr); - json.Scale = scale; + AttachmentLoader attachmentLoader; + float skeletonDataScale; + +#if !SPINE_TK2D + attachmentLoader = new AtlasAttachmentLoader(atlasArr); + skeletonDataScale = scale; +#else + if (spriteCollection != null) { + attachmentLoader = new SpriteCollectionAttachmentLoader(spriteCollection); + skeletonDataScale = (1.0f / (spriteCollection.invOrthoSize * spriteCollection.halfTargetHeight) * scale) * 100f; + } else { + if (atlasArr.Length == 0) { + Reset(); + if (!quiet) Debug.LogError("Atlas not set for SkeletonData asset: " + name, this); + return null; + } + attachmentLoader = new AtlasAttachmentLoader(atlasArr); + skeletonDataScale = scale; + } +#endif + try { - skeletonData = json.ReadSkeletonData(new StringReader(skeletonJSON.text)); + //var stopwatch = new System.Diagnostics.Stopwatch(); + if (skeletonJSON.name.ToLower().Contains(".skel")) { + var input = new MemoryStream(skeletonJSON.bytes); + var binary = new SkeletonBinary(attachmentLoader); + binary.Scale = skeletonDataScale; + //stopwatch.Start(); + skeletonData = binary.ReadSkeletonData(input); + } else { + var input = new StringReader(skeletonJSON.text); + var json = new SkeletonJson(attachmentLoader); + json.Scale = skeletonDataScale; + //stopwatch.Start(); + skeletonData = json.ReadSkeletonData(input); + } + //stopwatch.Stop(); + //Debug.Log(stopwatch.Elapsed); } catch (Exception ex) { if (!quiet) Debug.LogError("Error reading skeleton JSON file for SkeletonData asset: " + name + "\n" + ex.Message + "\n" + ex.StackTrace, this); @@ -118,7 +161,7 @@ public class SkeletonDataAsset : ScriptableObject { } } - public AnimationStateData GetAnimationStateData() { + public AnimationStateData GetAnimationStateData () { if (stateData != null) return stateData; GetSkeletonData(false); diff --git a/spine-unity/Assets/spine-unity/SkeletonExtensions.cs b/spine-unity/Assets/spine-unity/SkeletonExtensions.cs index e1dad6e58..03cf57536 100644 --- a/spine-unity/Assets/spine-unity/SkeletonExtensions.cs +++ b/spine-unity/Assets/spine-unity/SkeletonExtensions.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Spine Extensions created by Mitch Thompson @@ -39,70 +11,110 @@ using Spine; public static class SkeletonExtensions { - public static void SetColor(this Slot slot, Color color) { + public static void SetColor (this Skeleton skeleton, Color color) { + skeleton.A = color.a; + skeleton.R = color.r; + skeleton.G = color.g; + skeleton.B = color.b; + } + + public static void SetColor (this Skeleton skeleton, Color32 color) { + skeleton.A = color.a / 255f; + skeleton.R = color.r / 255f; + skeleton.G = color.g / 255f; + skeleton.B = color.b / 255f; + } + + public static void SetColor (this Slot slot, Color color) { slot.A = color.a; slot.R = color.r; slot.G = color.g; slot.B = color.b; } - public static void SetColor(this Slot slot, Color32 color) { + public static void SetColor (this Slot slot, Color32 color) { slot.A = color.a / 255f; slot.R = color.r / 255f; slot.G = color.g / 255f; slot.B = color.b / 255f; } - public static void SetColor(this RegionAttachment attachment, Color color) { + public static void SetColor (this RegionAttachment attachment, Color color) { attachment.A = color.a; attachment.R = color.r; attachment.G = color.g; attachment.B = color.b; } - public static void SetColor(this RegionAttachment attachment, Color32 color) { + public static void SetColor (this RegionAttachment attachment, Color32 color) { attachment.A = color.a / 255f; attachment.R = color.r / 255f; attachment.G = color.g / 255f; attachment.B = color.b / 255f; } - public static void SetColor(this MeshAttachment attachment, Color color) { + public static void SetColor (this MeshAttachment attachment, Color color) { attachment.A = color.a; attachment.R = color.r; attachment.G = color.g; attachment.B = color.b; } - public static void SetColor(this MeshAttachment attachment, Color32 color) { + public static void SetColor (this MeshAttachment attachment, Color32 color) { attachment.A = color.a / 255f; attachment.R = color.r / 255f; attachment.G = color.g / 255f; attachment.B = color.b / 255f; } - public static void SetColor(this SkinnedMeshAttachment attachment, Color color) { + public static void SetColor (this SkinnedMeshAttachment attachment, Color color) { attachment.A = color.a; attachment.R = color.r; attachment.G = color.g; attachment.B = color.b; } - public static void SetColor(this SkinnedMeshAttachment attachment, Color32 color) { + public static void SetColor (this SkinnedMeshAttachment attachment, Color32 color) { attachment.A = color.a / 255f; attachment.R = color.r / 255f; attachment.G = color.g / 255f; attachment.B = color.b / 255f; } - public static void SetPosition(this Bone bone, Vector2 position) { + public static void SetPosition (this Bone bone, Vector2 position) { bone.X = position.x; bone.Y = position.y; } - public static void SetPosition(this Bone bone, Vector3 position) { + public static void SetPosition (this Bone bone, Vector3 position) { bone.X = position.x; bone.Y = position.y; } + public static Attachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, string shaderName = "Spine/Skeleton") { + var att = sprite.ToRegionAttachment(shaderName); + skeleton.FindSlot(slotName).Attachment = att; + + return att; + } + + public static Attachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName = "", string shaderName = "Spine/Skeleton") { + var att = sprite.ToRegionAttachment(shaderName); + + var slotIndex = skeletonData.FindSlotIndex(slotName); + Skin skin = skeletonData.defaultSkin; + if (skinName != "") + skin = skeletonData.FindSkin(skinName); + + skin.AddAttachment(slotIndex, att.Name, att); + + return att; + } + + public static RegionAttachment ToRegionAttachment (this Sprite sprite, string shaderName = "Spine/Skeleton") { + var loader = new SpriteAttachmentLoader(sprite, Shader.Find(shaderName)); + var att = loader.NewRegionAttachment(null, sprite.name, ""); + loader = null; + return att; + } } \ No newline at end of file diff --git a/spine-unity/Assets/spine-unity/SkeletonExtensions.cs.meta b/spine-unity/Assets/spine-unity/SkeletonExtensions.cs.meta index 0ec145755..427cdd10a 100644 --- a/spine-unity/Assets/spine-unity/SkeletonExtensions.cs.meta +++ b/spine-unity/Assets/spine-unity/SkeletonExtensions.cs.meta @@ -6,5 +6,3 @@ MonoImporter: executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/SkeletonRenderer.cs b/spine-unity/Assets/spine-unity/SkeletonRenderer.cs index 48b2c745e..3a36eded3 100644 --- a/spine-unity/Assets/spine-unity/SkeletonRenderer.cs +++ b/spine-unity/Assets/spine-unity/SkeletonRenderer.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -29,7 +30,6 @@ *****************************************************************************/ using System; -using System.IO; using System.Collections.Generic; using UnityEngine; using Spine; @@ -59,25 +59,26 @@ public class SkeletonRenderer : MonoBehaviour { [HideInInspector] public List submeshSeparatorSlots = new List(); - + private MeshRenderer meshRenderer; private MeshFilter meshFilter; private Mesh mesh1, mesh2; private bool useMesh1; private float[] tempVertices = new float[8]; - private int lastVertexCount; private Vector3[] vertices; private Color32[] colors; private Vector2[] uvs; private Material[] sharedMaterials = new Material[0]; - private readonly List submeshMaterials = new List(); - private readonly List submeshes = new List(); - + private readonly ExposedList submeshMaterials = new ExposedList(); + private readonly ExposedList submeshes = new ExposedList(); + private SkeletonUtilitySubmeshRenderer[] submeshRenderers; + private LastState lastState = new LastState(); public virtual void Reset () { if (meshFilter != null) meshFilter.sharedMesh = null; - if (GetComponent() != null) - GetComponent().sharedMaterial = null; + + meshRenderer = GetComponent(); + if (meshRenderer != null) meshRenderer.sharedMaterial = null; if (mesh1 != null) { if (Application.isPlaying) @@ -93,9 +94,9 @@ public class SkeletonRenderer : MonoBehaviour { DestroyImmediate(mesh2); } + lastState = new LastState(); mesh1 = null; mesh2 = null; - lastVertexCount = 0; vertices = null; colors = null; uvs = null; @@ -117,6 +118,7 @@ public class SkeletonRenderer : MonoBehaviour { valid = true; meshFilter = GetComponent(); + meshRenderer = GetComponent(); mesh1 = newMesh(); mesh2 = newMesh(); vertices = new Vector3[0]; @@ -130,10 +132,18 @@ public class SkeletonRenderer : MonoBehaviour { submeshSeparatorSlots.Add(skeleton.FindSlot(submeshSeparators[i])); } + CollectSubmeshRenderers(); + + LateUpdate(); + if (OnReset != null) OnReset(this); } + public void CollectSubmeshRenderers () { + submeshRenderers = GetComponentsInChildren(); + } + public virtual void Awake () { Reset(); } @@ -168,47 +178,80 @@ public class SkeletonRenderer : MonoBehaviour { public virtual void LateUpdate () { if (!valid) return; + + // Exit early if there is nothing to render + if (!meshRenderer.enabled && submeshRenderers.Length == 0) + return; + // Count vertices and submesh triangles. int vertexCount = 0; int submeshTriangleCount = 0, submeshFirstVertex = 0, submeshStartSlotIndex = 0; Material lastMaterial = null; - submeshMaterials.Clear(); - List drawOrder = skeleton.DrawOrder; + ExposedList drawOrder = skeleton.drawOrder; int drawOrderCount = drawOrder.Count; + int submeshSeparatorSlotsCount = submeshSeparatorSlots.Count; bool renderMeshes = this.renderMeshes; + + // Clear last state of attachments and submeshes + ExposedList attachmentsTriangleCountTemp = lastState.attachmentsTriangleCountTemp; + attachmentsTriangleCountTemp.GrowIfNeeded(drawOrderCount); + attachmentsTriangleCountTemp.Count = drawOrderCount; + ExposedList attachmentsFlipStateTemp = lastState.attachmentsFlipStateTemp; + attachmentsFlipStateTemp.GrowIfNeeded(drawOrderCount); + attachmentsFlipStateTemp.Count = drawOrderCount; + + ExposedList addSubmeshArgumentsTemp = lastState.addSubmeshArgumentsTemp; + addSubmeshArgumentsTemp.Clear(false); for (int i = 0; i < drawOrderCount; i++) { - Slot slot = drawOrder[i]; + Slot slot = drawOrder.Items[i]; + Bone bone = slot.bone; Attachment attachment = slot.attachment; object rendererObject; int attachmentVertexCount, attachmentTriangleCount; + bool worldScaleXIsPositive = bone.worldScaleX >= 0f; + bool worldScaleYIsPositive = bone.worldScaleY >= 0f; + bool worldScaleIsSameSigns = (worldScaleXIsPositive && worldScaleYIsPositive) || + (!worldScaleXIsPositive && !worldScaleYIsPositive); + bool flip = frontFacing && ((bone.worldFlipX != bone.worldFlipY) == worldScaleIsSameSigns); + attachmentsFlipStateTemp.Items[i] = flip; - if (attachment is RegionAttachment) { - rendererObject = ((RegionAttachment)attachment).RendererObject; + attachmentsTriangleCountTemp.Items[i] = -1; + RegionAttachment regionAttachment = attachment as RegionAttachment; + if (regionAttachment != null) { + rendererObject = regionAttachment.RendererObject; attachmentVertexCount = 4; attachmentTriangleCount = 6; } else { if (!renderMeshes) continue; - if (attachment is MeshAttachment) { - MeshAttachment meshAttachment = (MeshAttachment)attachment; + MeshAttachment meshAttachment = attachment as MeshAttachment; + if (meshAttachment != null) { rendererObject = meshAttachment.RendererObject; attachmentVertexCount = meshAttachment.vertices.Length >> 1; attachmentTriangleCount = meshAttachment.triangles.Length; - } else if (attachment is SkinnedMeshAttachment) { - SkinnedMeshAttachment meshAttachment = (SkinnedMeshAttachment)attachment; - rendererObject = meshAttachment.RendererObject; - attachmentVertexCount = meshAttachment.uvs.Length >> 1; - attachmentTriangleCount = meshAttachment.triangles.Length; - } else - continue; + } else { + SkinnedMeshAttachment skinnedMeshAttachment = attachment as SkinnedMeshAttachment; + if (skinnedMeshAttachment != null) { + rendererObject = skinnedMeshAttachment.RendererObject; + attachmentVertexCount = skinnedMeshAttachment.uvs.Length >> 1; + attachmentTriangleCount = skinnedMeshAttachment.triangles.Length; + } else + continue; + } } // Populate submesh when material changes. +#if !SPINE_TK2D Material material = (Material)((AtlasRegion)rendererObject).page.rendererObject; - - if ((lastMaterial != material && lastMaterial != null) || submeshSeparatorSlots.Contains(slot)) { - AddSubmesh(lastMaterial, submeshStartSlotIndex, i, submeshTriangleCount, submeshFirstVertex, false); +#else + Material material = (rendererObject.GetType() == typeof(Material)) ? (Material)rendererObject : (Material)((AtlasRegion)rendererObject).page.rendererObject; +#endif + if ((lastMaterial != null && lastMaterial.GetInstanceID() != material.GetInstanceID()) || + (submeshSeparatorSlotsCount > 0 && submeshSeparatorSlots.Contains(slot))) { + addSubmeshArgumentsTemp.Add( + new LastState.AddSubmeshArguments(lastMaterial, submeshStartSlotIndex, i, submeshTriangleCount, submeshFirstVertex, false) + ); submeshTriangleCount = 0; submeshFirstVertex = vertexCount; submeshStartSlotIndex = i; @@ -217,15 +260,37 @@ public class SkeletonRenderer : MonoBehaviour { submeshTriangleCount += attachmentTriangleCount; vertexCount += attachmentVertexCount; - } - AddSubmesh(lastMaterial, submeshStartSlotIndex, drawOrderCount, submeshTriangleCount, submeshFirstVertex, true); - // Set materials. - if (submeshMaterials.Count == sharedMaterials.Length) - submeshMaterials.CopyTo(sharedMaterials); - else - sharedMaterials = submeshMaterials.ToArray(); - GetComponent().sharedMaterials = sharedMaterials; + attachmentsTriangleCountTemp.Items[i] = attachmentTriangleCount; + } + addSubmeshArgumentsTemp.Add( + new LastState.AddSubmeshArguments(lastMaterial, submeshStartSlotIndex, drawOrderCount, submeshTriangleCount, submeshFirstVertex, true) + ); + + bool mustUpdateMeshStructure = CheckIfMustUpdateMeshStructure(attachmentsTriangleCountTemp, attachmentsFlipStateTemp, addSubmeshArgumentsTemp); + if (mustUpdateMeshStructure) { + submeshMaterials.Clear(); + for (int i = 0, n = addSubmeshArgumentsTemp.Count; i < n; i++) { + LastState.AddSubmeshArguments arguments = addSubmeshArgumentsTemp.Items[i]; + AddSubmesh( + arguments.material, + arguments.startSlot, + arguments.endSlot, + arguments.triangleCount, + arguments.firstVertex, + arguments.lastSubmesh, + attachmentsFlipStateTemp + ); + } + + // Set materials. + if (submeshMaterials.Count == sharedMaterials.Length) + submeshMaterials.CopyTo(sharedMaterials); + else + sharedMaterials = submeshMaterials.ToArray(); + + meshRenderer.sharedMaterials = sharedMaterials; + } // Ensure mesh data is the right size. Vector3[] vertices = this.vertices; @@ -240,97 +305,194 @@ public class SkeletonRenderer : MonoBehaviour { } else { // Too many vertices, zero the extra. Vector3 zero = Vector3.zero; - for (int i = vertexCount, n = lastVertexCount; i < n; i++) + for (int i = vertexCount, n = lastState.vertexCount; i < n; i++) vertices[i] = zero; } - lastVertexCount = vertexCount; + lastState.vertexCount = vertexCount; // Setup mesh. + float zSpacing = this.zSpacing; float[] tempVertices = this.tempVertices; Vector2[] uvs = this.uvs; Color32[] colors = this.colors; int vertexIndex = 0; - Color32 color = new Color32(); - float zSpacing = this.zSpacing; + Color32 color; float a = skeleton.a * 255, r = skeleton.r, g = skeleton.g, b = skeleton.b; - for (int i = 0; i < drawOrderCount; i++) { - Slot slot = drawOrder[i]; - Attachment attachment = slot.attachment; - if (attachment is RegionAttachment) { - RegionAttachment regionAttachment = (RegionAttachment)attachment; - regionAttachment.ComputeWorldVertices(slot.bone, tempVertices); - float z = i * zSpacing; - vertices[vertexIndex] = new Vector3(tempVertices[RegionAttachment.X1], tempVertices[RegionAttachment.Y1], z); - vertices[vertexIndex + 1] = new Vector3(tempVertices[RegionAttachment.X4], tempVertices[RegionAttachment.Y4], z); - vertices[vertexIndex + 2] = new Vector3(tempVertices[RegionAttachment.X2], tempVertices[RegionAttachment.Y2], z); - vertices[vertexIndex + 3] = new Vector3(tempVertices[RegionAttachment.X3], tempVertices[RegionAttachment.Y3], z); - - color.a = (byte)(a * slot.a * regionAttachment.a); - color.r = (byte)(r * slot.r * regionAttachment.r * color.a); - color.g = (byte)(g * slot.g * regionAttachment.g * color.a); - color.b = (byte)(b * slot.b * regionAttachment.b * color.a); - if (slot.data.additiveBlending) - color.a = 0; - colors[vertexIndex] = color; - colors[vertexIndex + 1] = color; - colors[vertexIndex + 2] = color; - colors[vertexIndex + 3] = color; - - float[] regionUVs = regionAttachment.uvs; - uvs[vertexIndex] = new Vector2(regionUVs[RegionAttachment.X1], regionUVs[RegionAttachment.Y1]); - uvs[vertexIndex + 1] = new Vector2(regionUVs[RegionAttachment.X4], regionUVs[RegionAttachment.Y4]); - uvs[vertexIndex + 2] = new Vector2(regionUVs[RegionAttachment.X2], regionUVs[RegionAttachment.Y2]); - uvs[vertexIndex + 3] = new Vector2(regionUVs[RegionAttachment.X3], regionUVs[RegionAttachment.Y3]); - - vertexIndex += 4; + Vector3 meshBoundsMin; + Vector3 meshBoundsMax; + if (vertexCount == 0) { + meshBoundsMin = new Vector3(0, 0, 0); + meshBoundsMax = new Vector3(0, 0, 0); + } else { + meshBoundsMin.x = int.MaxValue; + meshBoundsMin.y = int.MaxValue; + meshBoundsMax.x = int.MinValue; + meshBoundsMax.y = int.MinValue; + if (zSpacing > 0f) { + meshBoundsMin.z = 0f; + meshBoundsMax.z = zSpacing * (drawOrderCount - 1); } else { - if (!renderMeshes) - continue; - if (attachment is MeshAttachment) { - MeshAttachment meshAttachment = (MeshAttachment)attachment; - int meshVertexCount = meshAttachment.vertices.Length; - if (tempVertices.Length < meshVertexCount) - this.tempVertices = tempVertices = new float[meshVertexCount]; - meshAttachment.ComputeWorldVertices(slot, tempVertices); + meshBoundsMin.z = zSpacing * (drawOrderCount - 1); + meshBoundsMax.z = 0f; + } + int i = 0; + do { + Slot slot = drawOrder.Items[i]; + Attachment attachment = slot.attachment; + RegionAttachment regionAttachment = attachment as RegionAttachment; + if (regionAttachment != null) { + regionAttachment.ComputeWorldVertices(slot.bone, tempVertices); - color.a = (byte)(a * slot.a * meshAttachment.a); - color.r = (byte)(r * slot.r * meshAttachment.r * color.a); - color.g = (byte)(g * slot.g * meshAttachment.g * color.a); - color.b = (byte)(b * slot.b * meshAttachment.b * color.a); - if (slot.data.additiveBlending) - color.a = 0; - - float[] meshUVs = meshAttachment.uvs; float z = i * zSpacing; - for (int ii = 0; ii < meshVertexCount; ii += 2, vertexIndex++) { - vertices[vertexIndex] = new Vector3(tempVertices[ii], tempVertices[ii + 1], z); - colors[vertexIndex] = color; - uvs[vertexIndex] = new Vector2(meshUVs[ii], meshUVs[ii + 1]); - } - } else if (attachment is SkinnedMeshAttachment) { - SkinnedMeshAttachment meshAttachment = (SkinnedMeshAttachment)attachment; - int meshVertexCount = meshAttachment.uvs.Length; - if (tempVertices.Length < meshVertexCount) - this.tempVertices = tempVertices = new float[meshVertexCount]; - meshAttachment.ComputeWorldVertices(slot, tempVertices); + float x1 = tempVertices[RegionAttachment.X1], y1 = tempVertices[RegionAttachment.Y1]; + float x2 = tempVertices[RegionAttachment.X2], y2 = tempVertices[RegionAttachment.Y2]; + float x3 = tempVertices[RegionAttachment.X3], y3 = tempVertices[RegionAttachment.Y3]; + float x4 = tempVertices[RegionAttachment.X4], y4 = tempVertices[RegionAttachment.Y4]; + vertices[vertexIndex].x = x1; + vertices[vertexIndex].y = y1; + vertices[vertexIndex].z = z; + vertices[vertexIndex + 1].x = x4; + vertices[vertexIndex + 1].y = y4; + vertices[vertexIndex + 1].z = z; + vertices[vertexIndex + 2].x = x2; + vertices[vertexIndex + 2].y = y2; + vertices[vertexIndex + 2].z = z; + vertices[vertexIndex + 3].x = x3; + vertices[vertexIndex + 3].y = y3; + vertices[vertexIndex + 3].z = z; - color.a = (byte)(a * slot.a * meshAttachment.a); - color.r = (byte)(r * slot.r * meshAttachment.r * color.a); - color.g = (byte)(g * slot.g * meshAttachment.g * color.a); - color.b = (byte)(b * slot.b * meshAttachment.b * color.a); - if (slot.data.additiveBlending) - color.a = 0; + color.a = (byte)(a * slot.a * regionAttachment.a); + color.r = (byte)(r * slot.r * regionAttachment.r * color.a); + color.g = (byte)(g * slot.g * regionAttachment.g * color.a); + color.b = (byte)(b * slot.b * regionAttachment.b * color.a); + if (slot.data.blendMode == BlendMode.additive) color.a = 0; + colors[vertexIndex] = color; + colors[vertexIndex + 1] = color; + colors[vertexIndex + 2] = color; + colors[vertexIndex + 3] = color; - float[] meshUVs = meshAttachment.uvs; - float z = i * zSpacing; - for (int ii = 0; ii < meshVertexCount; ii += 2, vertexIndex++) { - vertices[vertexIndex] = new Vector3(tempVertices[ii], tempVertices[ii + 1], z); - colors[vertexIndex] = color; - uvs[vertexIndex] = new Vector2(meshUVs[ii], meshUVs[ii + 1]); + float[] regionUVs = regionAttachment.uvs; + uvs[vertexIndex].x = regionUVs[RegionAttachment.X1]; + uvs[vertexIndex].y = regionUVs[RegionAttachment.Y1]; + uvs[vertexIndex + 1].x = regionUVs[RegionAttachment.X4]; + uvs[vertexIndex + 1].y = regionUVs[RegionAttachment.Y4]; + uvs[vertexIndex + 2].x = regionUVs[RegionAttachment.X2]; + uvs[vertexIndex + 2].y = regionUVs[RegionAttachment.Y2]; + uvs[vertexIndex + 3].x = regionUVs[RegionAttachment.X3]; + uvs[vertexIndex + 3].y = regionUVs[RegionAttachment.Y3]; + + // Calculate min/max X + if (x1 < meshBoundsMin.x) + meshBoundsMin.x = x1; + else if (x1 > meshBoundsMax.x) + meshBoundsMax.x = x1; + if (x2 < meshBoundsMin.x) + meshBoundsMin.x = x2; + else if (x2 > meshBoundsMax.x) + meshBoundsMax.x = x2; + if (x3 < meshBoundsMin.x) + meshBoundsMin.x = x3; + else if (x3 > meshBoundsMax.x) + meshBoundsMax.x = x3; + if (x4 < meshBoundsMin.x) + meshBoundsMin.x = x4; + else if (x4 > meshBoundsMax.x) + meshBoundsMax.x = x4; + + // Calculate min/max Y + if (y1 < meshBoundsMin.y) + meshBoundsMin.y = y1; + else if (y1 > meshBoundsMax.y) + meshBoundsMax.y = y1; + if (y2 < meshBoundsMin.y) + meshBoundsMin.y = y2; + else if (y2 > meshBoundsMax.y) + meshBoundsMax.y = y2; + if (y3 < meshBoundsMin.y) + meshBoundsMin.y = y3; + else if (y3 > meshBoundsMax.y) + meshBoundsMax.y = y3; + if (y4 < meshBoundsMin.y) + meshBoundsMin.y = y4; + else if (y4 > meshBoundsMax.y) + meshBoundsMax.y = y4; + + vertexIndex += 4; + } else { + if (!renderMeshes) + continue; + MeshAttachment meshAttachment = attachment as MeshAttachment; + if (meshAttachment != null) { + int meshVertexCount = meshAttachment.vertices.Length; + if (tempVertices.Length < meshVertexCount) + this.tempVertices = tempVertices = new float[meshVertexCount]; + meshAttachment.ComputeWorldVertices(slot, tempVertices); + + color.a = (byte)(a * slot.a * meshAttachment.a); + color.r = (byte)(r * slot.r * meshAttachment.r * color.a); + color.g = (byte)(g * slot.g * meshAttachment.g * color.a); + color.b = (byte)(b * slot.b * meshAttachment.b * color.a); + if (slot.data.blendMode == BlendMode.additive) color.a = 0; + + float[] meshUVs = meshAttachment.uvs; + float z = i * zSpacing; + for (int ii = 0; ii < meshVertexCount; ii += 2, vertexIndex++) { + float x = tempVertices[ii], y = tempVertices[ii + 1]; + vertices[vertexIndex].x = x; + vertices[vertexIndex].y = y; + vertices[vertexIndex].z = z; + colors[vertexIndex] = color; + uvs[vertexIndex].x = meshUVs[ii]; + uvs[vertexIndex].y = meshUVs[ii + 1]; + + if (x < meshBoundsMin.x) + meshBoundsMin.x = x; + else if (x > meshBoundsMax.x) + meshBoundsMax.x = x; + if (y < meshBoundsMin.y) + meshBoundsMin.y = y; + else if (y > meshBoundsMax.y) + meshBoundsMax.y = y; + } + } else { + SkinnedMeshAttachment skinnedMeshAttachment = attachment as SkinnedMeshAttachment; + if (skinnedMeshAttachment != null) { + int meshVertexCount = skinnedMeshAttachment.uvs.Length; + if (tempVertices.Length < meshVertexCount) + this.tempVertices = tempVertices = new float[meshVertexCount]; + skinnedMeshAttachment.ComputeWorldVertices(slot, tempVertices); + + color.a = (byte)(a * slot.a * skinnedMeshAttachment.a); + color.r = (byte)(r * slot.r * skinnedMeshAttachment.r * color.a); + color.g = (byte)(g * slot.g * skinnedMeshAttachment.g * color.a); + color.b = (byte)(b * slot.b * skinnedMeshAttachment.b * color.a); + if (slot.data.blendMode == BlendMode.additive) color.a = 0; + + float[] meshUVs = skinnedMeshAttachment.uvs; + float z = i * zSpacing; + for (int ii = 0; ii < meshVertexCount; ii += 2, vertexIndex++) { + float x = tempVertices[ii], y = tempVertices[ii + 1]; + vertices[vertexIndex].x = x; + vertices[vertexIndex].y = y; + vertices[vertexIndex].z = z; + colors[vertexIndex] = color; + uvs[vertexIndex].x = meshUVs[ii]; + uvs[vertexIndex].y = meshUVs[ii + 1]; + + if (x < meshBoundsMin.x) + meshBoundsMin.x = x; + else if (x > meshBoundsMax.x) + meshBoundsMax.x = x; + if (y < meshBoundsMin.y) + meshBoundsMin.y = y; + else if (y > meshBoundsMax.y) + meshBoundsMax.y = y; + } + } } } - } + } while (++i < drawOrderCount); } // Double buffer mesh. @@ -341,11 +503,16 @@ public class SkeletonRenderer : MonoBehaviour { mesh.colors32 = colors; mesh.uv = uvs; - int submeshCount = submeshMaterials.Count; - mesh.subMeshCount = submeshCount; - for (int i = 0; i < submeshCount; ++i) - mesh.SetTriangles(submeshes[i].triangles, i); - mesh.RecalculateBounds(); + if (mustUpdateMeshStructure) { + int submeshCount = submeshMaterials.Count; + mesh.subMeshCount = submeshCount; + for (int i = 0; i < submeshCount; ++i) + mesh.SetTriangles(submeshes.Items[i].triangles, i); + } + + Vector3 meshBoundsExtents = meshBoundsMax - meshBoundsMin; + Vector3 meshBoundsCenter = meshBoundsMin + meshBoundsExtents * 0.5f; + mesh.bounds = new Bounds(meshBoundsCenter, meshBoundsExtents); if (newTriangles && calculateNormals) { Vector3[] normals = new Vector3[vertexCount]; @@ -366,11 +533,105 @@ public class SkeletonRenderer : MonoBehaviour { } } + // Update previous state + ExposedList attachmentsTriangleCountCurrentMesh; + ExposedList attachmentsFlipStateCurrentMesh; + ExposedList addSubmeshArgumentsCurrentMesh; + if (useMesh1) { + attachmentsTriangleCountCurrentMesh = lastState.attachmentsTriangleCountMesh1; + addSubmeshArgumentsCurrentMesh = lastState.addSubmeshArgumentsMesh1; + attachmentsFlipStateCurrentMesh = lastState.attachmentsFlipStateMesh1; + lastState.immutableTrianglesMesh1 = immutableTriangles; + } else { + attachmentsTriangleCountCurrentMesh = lastState.attachmentsTriangleCountMesh2; + addSubmeshArgumentsCurrentMesh = lastState.addSubmeshArgumentsMesh2; + attachmentsFlipStateCurrentMesh = lastState.attachmentsFlipStateMesh2; + lastState.immutableTrianglesMesh2 = immutableTriangles; + } + + attachmentsTriangleCountCurrentMesh.GrowIfNeeded(attachmentsTriangleCountTemp.Capacity); + attachmentsTriangleCountCurrentMesh.Count = attachmentsTriangleCountTemp.Count; + attachmentsTriangleCountTemp.CopyTo(attachmentsTriangleCountCurrentMesh.Items, 0); + + attachmentsFlipStateCurrentMesh.GrowIfNeeded(attachmentsFlipStateTemp.Capacity); + attachmentsFlipStateCurrentMesh.Count = attachmentsFlipStateTemp.Count; + attachmentsFlipStateTemp.CopyTo(attachmentsFlipStateCurrentMesh.Items, 0); + + addSubmeshArgumentsCurrentMesh.GrowIfNeeded(addSubmeshArgumentsTemp.Count); + addSubmeshArgumentsCurrentMesh.Count = addSubmeshArgumentsTemp.Count; + addSubmeshArgumentsTemp.CopyTo(addSubmeshArgumentsCurrentMesh.Items); + + if (submeshRenderers.Length > 0) { + for (int i = 0; i < submeshRenderers.Length; i++) { + SkeletonUtilitySubmeshRenderer submeshRenderer = submeshRenderers[i]; + if (submeshRenderer.submeshIndex < sharedMaterials.Length) { + submeshRenderer.SetMesh(meshRenderer, useMesh1 ? mesh1 : mesh2, sharedMaterials[submeshRenderer.submeshIndex]); + } else { + submeshRenderer.GetComponent().enabled = false; + } + } + } + useMesh1 = !useMesh1; } + private bool CheckIfMustUpdateMeshStructure (ExposedList attachmentsTriangleCountTemp, ExposedList attachmentsFlipStateTemp, ExposedList addSubmeshArgumentsTemp) { + // Check if any mesh settings were changed + bool mustUpdateMeshStructure = + immutableTriangles != (useMesh1 ? lastState.immutableTrianglesMesh1 : lastState.immutableTrianglesMesh2); +#if UNITY_EDITOR + mustUpdateMeshStructure |= !Application.isPlaying; +#endif + + if (mustUpdateMeshStructure) + return true; + + // Check if any attachments were enabled/disabled + // or submesh structures has changed + ExposedList attachmentsTriangleCountCurrentMesh; + ExposedList attachmentsFlipStateCurrentMesh; + ExposedList addSubmeshArgumentsCurrentMesh; + if (useMesh1) { + attachmentsTriangleCountCurrentMesh = lastState.attachmentsTriangleCountMesh1; + addSubmeshArgumentsCurrentMesh = lastState.addSubmeshArgumentsMesh1; + attachmentsFlipStateCurrentMesh = lastState.attachmentsFlipStateMesh1; + } else { + attachmentsTriangleCountCurrentMesh = lastState.attachmentsTriangleCountMesh2; + addSubmeshArgumentsCurrentMesh = lastState.addSubmeshArgumentsMesh2; + attachmentsFlipStateCurrentMesh = lastState.attachmentsFlipStateMesh2; + } + + // Check attachments + int attachmentCount = attachmentsTriangleCountTemp.Count; + if (attachmentsTriangleCountCurrentMesh.Count != attachmentCount) + return true; + + for (int i = 0; i < attachmentCount; i++) { + if (attachmentsTriangleCountCurrentMesh.Items[i] != attachmentsTriangleCountTemp.Items[i]) + return true; + } + + // Check flip state + for (int i = 0; i < attachmentCount; i++) { + if (attachmentsFlipStateCurrentMesh.Items[i] != attachmentsFlipStateTemp.Items[i]) + return true; + } + + // Check submeshes + int submeshCount = addSubmeshArgumentsTemp.Count; + if (addSubmeshArgumentsCurrentMesh.Count != submeshCount) + return true; + + for (int i = 0; i < submeshCount; i++) { + if (!addSubmeshArgumentsCurrentMesh.Items[i].Equals(ref addSubmeshArgumentsTemp.Items[i])) + return true; + } + + return false; + } + /** Stores vertices and triangles for a single material. */ - private void AddSubmesh (Material material, int startSlot, int endSlot, int triangleCount, int firstVertex, bool lastSubmesh) { + private void AddSubmesh (Material material, int startSlot, int endSlot, int triangleCount, int firstVertex, bool lastSubmesh, ExposedList flipStates) { int submeshIndex = submeshMaterials.Count; submeshMaterials.Add(material); @@ -379,7 +640,7 @@ public class SkeletonRenderer : MonoBehaviour { else if (immutableTriangles) return; - Submesh submesh = submeshes[submeshIndex]; + Submesh submesh = submeshes.Items[submeshIndex]; int[] triangles = submesh.triangles; int trianglesCapacity = triangles.Length; @@ -413,12 +674,12 @@ public class SkeletonRenderer : MonoBehaviour { } // Store triangles. - List drawOrder = skeleton.DrawOrder; + ExposedList drawOrder = skeleton.DrawOrder; for (int i = startSlot, triangleIndex = 0; i < endSlot; i++) { - Slot slot = drawOrder[i]; + Slot slot = drawOrder.Items[i]; Attachment attachment = slot.attachment; - Bone bone = slot.bone; - bool flip = frontFacing && ((bone.WorldFlipX != bone.WorldFlipY) != (Mathf.Sign(bone.WorldScaleX) != Mathf.Sign(bone.WorldScaleY))); + + bool flip = flipStates.Items[i]; if (attachment is RegionAttachment) { if (!flip) { @@ -443,16 +704,18 @@ public class SkeletonRenderer : MonoBehaviour { } int[] attachmentTriangles; int attachmentVertexCount; - if (attachment is MeshAttachment) { - MeshAttachment meshAttachment = (MeshAttachment)attachment; + MeshAttachment meshAttachment = attachment as MeshAttachment; + if (meshAttachment != null) { attachmentVertexCount = meshAttachment.vertices.Length >> 1; attachmentTriangles = meshAttachment.triangles; - } else if (attachment is SkinnedMeshAttachment) { - SkinnedMeshAttachment meshAttachment = (SkinnedMeshAttachment)attachment; - attachmentVertexCount = meshAttachment.uvs.Length >> 1; - attachmentTriangles = meshAttachment.triangles; - } else - continue; + } else { + SkinnedMeshAttachment skinnedMeshAttachment = attachment as SkinnedMeshAttachment; + if (skinnedMeshAttachment != null) { + attachmentVertexCount = skinnedMeshAttachment.uvs.Length >> 1; + attachmentTriangles = skinnedMeshAttachment.triangles; + } else + continue; + } if (flip) { for (int ii = 0, nn = attachmentTriangles.Length; ii < nn; ii += 3, triangleIndex += 3) { @@ -473,24 +736,62 @@ public class SkeletonRenderer : MonoBehaviour { #if UNITY_EDITOR void OnDrawGizmos () { // Make selection easier by drawing a clear gizmo over the skeleton. - if (vertices == null) return; - Vector3 gizmosCenter = new Vector3(); - Vector3 gizmosSize = new Vector3(); - Vector3 min = new Vector3(float.MaxValue, float.MaxValue, 0f); - Vector3 max = new Vector3(float.MinValue, float.MinValue, 0f); - foreach (Vector3 vert in vertices) { - min = Vector3.Min(min, vert); - max = Vector3.Max(max, vert); - } - float width = max.x - min.x; - float height = max.y - min.y; - gizmosCenter = new Vector3(min.x + (width / 2f), min.y + (height / 2f), 0f); - gizmosSize = new Vector3(width, height, 1f); + meshFilter = GetComponent(); + if (meshFilter == null) return; + + Mesh mesh = meshFilter.sharedMesh; + if (mesh == null) return; + + Bounds meshBounds = mesh.bounds; Gizmos.color = Color.clear; Gizmos.matrix = transform.localToWorldMatrix; - Gizmos.DrawCube(gizmosCenter, gizmosSize); + Gizmos.DrawCube(meshBounds.center, meshBounds.size); } #endif + + private class LastState { + public bool immutableTrianglesMesh1; + public bool immutableTrianglesMesh2; + public int vertexCount; + public readonly ExposedList attachmentsFlipStateTemp = new ExposedList(); + public readonly ExposedList attachmentsFlipStateMesh1 = new ExposedList(); + public readonly ExposedList attachmentsFlipStateMesh2 = new ExposedList(); + public readonly ExposedList attachmentsTriangleCountTemp = new ExposedList(); + public readonly ExposedList attachmentsTriangleCountMesh1 = new ExposedList(); + public readonly ExposedList attachmentsTriangleCountMesh2 = new ExposedList(); + public readonly ExposedList addSubmeshArgumentsTemp = new ExposedList(); + public readonly ExposedList addSubmeshArgumentsMesh1 = new ExposedList(); + public readonly ExposedList addSubmeshArgumentsMesh2 = new ExposedList(); + + public struct AddSubmeshArguments { + public Material material; + public int startSlot; + public int endSlot; + public int triangleCount; + public int firstVertex; + public bool lastSubmesh; + + public AddSubmeshArguments (Material material, int startSlot, int endSlot, int triangleCount, int firstVertex, bool lastSubmesh) { + this.material = material; + this.startSlot = startSlot; + this.endSlot = endSlot; + this.triangleCount = triangleCount; + this.firstVertex = firstVertex; + this.lastSubmesh = lastSubmesh; + } + + public bool Equals (ref AddSubmeshArguments other) { + return + !ReferenceEquals(material, null) && + !ReferenceEquals(other.material, null) && + material.GetInstanceID() == other.material.GetInstanceID() && + startSlot == other.startSlot && + endSlot == other.endSlot && + triangleCount == other.triangleCount && + firstVertex == other.firstVertex; + } + } + } } class Submesh { diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs index f8d6d7340..6fc3ae8d1 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Skeleton Utility created by Mitch Thompson @@ -49,7 +21,10 @@ public class SkeletonUtilityBoneInspector : Editor { SkeletonUtilityBone utilityBone; SkeletonUtility skeletonUtility; bool canCreateHingeChain = false; - + + Dictionary> boundingBoxTable = new Dictionary>(); + string currentSkinName = ""; + void OnEnable () { mode = this.serializedObject.FindProperty("mode"); boneName = this.serializedObject.FindProperty("boneName"); @@ -69,6 +44,43 @@ public class SkeletonUtilityBoneInspector : Editor { } canCreateHingeChain = CanCreateHingeChain(); + + boundingBoxTable.Clear(); + + if (multiObject) + return; + + if (utilityBone.bone == null) + return; + + var skeleton = utilityBone.bone.Skeleton; + int slotCount = skeleton.Slots.Count; + Skin skin = skeleton.Skin; + if (skeleton.Skin == null) + skin = skeleton.Data.DefaultSkin; + + currentSkinName = skin.Name; + for(int i = 0; i < slotCount; i++){ + Slot slot = skeletonUtility.skeletonRenderer.skeleton.Slots.Items[i]; + if (slot.Bone == utilityBone.bone) { + List attachments = new List(); + + + skin.FindAttachmentsForSlot(skeleton.FindSlotIndex(slot.Data.Name), attachments); + + List boundingBoxes = new List(); + foreach (var att in attachments) { + if (att is BoundingBoxAttachment) { + boundingBoxes.Add((BoundingBoxAttachment)att); + } + } + + if (boundingBoxes.Count > 0) { + boundingBoxTable.Add(slot, boundingBoxes); + } + } + } + } void EvaluateFlags () { @@ -180,6 +192,37 @@ public class SkeletonUtilityBoneInspector : Editor { } GUILayout.EndHorizontal(); + EditorGUI.BeginDisabledGroup(multiObject || boundingBoxTable.Count == 0); + EditorGUILayout.LabelField(new GUIContent("Bounding Boxes", SpineEditorUtilities.Icons.boundingBox), EditorStyles.boldLabel); + + foreach(var entry in boundingBoxTable){ + EditorGUI.indentLevel++; + EditorGUILayout.LabelField(entry.Key.Data.Name); + EditorGUI.indentLevel++; + foreach (var box in entry.Value) { + GUILayout.BeginHorizontal(); + GUILayout.Space(30); + if (GUILayout.Button(box.Name, GUILayout.Width(200))) { + var child = utilityBone.transform.FindChild("[BoundingBox]" + box.Name); + if (child != null) { + var originalCollider = child.GetComponent(); + var updatedCollider = SkeletonUtility.AddBoundingBoxAsComponent(box, child.gameObject, originalCollider.isTrigger); + originalCollider.points = updatedCollider.points; + if (EditorApplication.isPlaying) + Destroy(updatedCollider); + else + DestroyImmediate(updatedCollider); + } else { + utilityBone.AddBoundingBox(currentSkinName, entry.Key.Data.Name, box.Name); + } + + } + GUILayout.EndHorizontal(); + } + } + + EditorGUI.EndDisabledGroup(); + serializedObject.ApplyModifiedProperties(); } @@ -190,14 +233,14 @@ public class SkeletonUtilityBoneInspector : Editor { } } - void BoneSelectorContextMenu (string current, List bones, string topValue, GenericMenu.MenuFunction2 callback) { + void BoneSelectorContextMenu (string current, ExposedList bones, string topValue, GenericMenu.MenuFunction2 callback) { GenericMenu menu = new GenericMenu(); if (topValue != "") menu.AddItem(new GUIContent(topValue), current == topValue, callback, null); for (int i = 0; i < bones.Count; i++) { - menu.AddItem(new GUIContent(bones[i].Data.Name), bones[i].Data.Name == current, callback, bones[i]); + menu.AddItem(new GUIContent(bones.Items[i].Data.Name), bones.Items[i].Data.Name == current, callback, bones.Items[i]); } menu.ShowAsContext(); diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityInspector.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityInspector.cs index 4c6d02d09..b2a3c657e 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityInspector.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityInspector.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Skeleton Utility created by Mitch Thompson @@ -160,7 +132,7 @@ public class SkeletonUtilityInspector : Editor { List attachments = new List(); skin.FindAttachmentsForSlot(i, attachments); - attachmentTable.Add(skeleton.Slots[i], attachments); + attachmentTable.Add(skeleton.Slots.Items[i], attachments); } } diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilitySubmeshRendererInspector.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilitySubmeshRendererInspector.cs new file mode 100644 index 000000000..bcbaca61e --- /dev/null +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilitySubmeshRendererInspector.cs @@ -0,0 +1,79 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; +using UnityEditor; +using System; +using System.Collections; +using System.Reflection; + +[CustomEditor(typeof(SkeletonUtilitySubmeshRenderer))] +public class SkeletonUtilitySubmeshRendererInspector : Editor { + + private static MethodInfo EditorGUILayoutSortingLayerField; + protected SerializedObject rendererSerializedObject; + protected SerializedProperty sortingLayerIDProperty; + + SkeletonUtilitySubmeshRenderer component; + + void OnEnable () { + component = (SkeletonUtilitySubmeshRenderer)target; + + if (EditorGUILayoutSortingLayerField == null) + EditorGUILayoutSortingLayerField = typeof(EditorGUILayout).GetMethod("SortingLayerField", BindingFlags.Static | BindingFlags.NonPublic, null, new Type[] { typeof(GUIContent), typeof(SerializedProperty), typeof(GUIStyle) }, null); + + rendererSerializedObject = new SerializedObject(((SkeletonUtilitySubmeshRenderer)target).GetComponent()); + sortingLayerIDProperty = rendererSerializedObject.FindProperty("m_SortingLayerID"); + } + + public override void OnInspectorGUI () { + // Sorting Layers + { + var renderer = component.GetComponent(); + if (renderer != null) { + EditorGUI.BeginChangeCheck(); + + if (EditorGUILayoutSortingLayerField != null && sortingLayerIDProperty != null) { + EditorGUILayoutSortingLayerField.Invoke(null, new object[] { new GUIContent("Sorting Layer"), sortingLayerIDProperty, EditorStyles.popup }); + } else { + renderer.sortingLayerID = EditorGUILayout.IntField("Sorting Layer ID", renderer.sortingLayerID); + } + + renderer.sortingOrder = EditorGUILayout.IntField("Order in Layer", renderer.sortingOrder); + + if (EditorGUI.EndChangeCheck()) { + rendererSerializedObject.ApplyModifiedProperties(); + EditorUtility.SetDirty(renderer); + } + } + } + } +} diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilitySubmeshRendererInspector.cs.meta b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilitySubmeshRendererInspector.cs.meta new file mode 100644 index 000000000..3b5bd3485 --- /dev/null +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilitySubmeshRendererInspector.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67418e462bd4dc24e8c234b92f1d4d9b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtility.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtility.cs index 519c0e313..49f775893 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtility.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtility.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Skeleton Utility created by Mitch Thompson @@ -57,6 +29,88 @@ public class SkeletonUtility : MonoBehaviour { #endif } + public static PolygonCollider2D AddBoundingBox (Skeleton skeleton, string skinName, string slotName, string attachmentName, Transform parent, bool isTrigger = true) { + // List attachments = new List(); + Skin skin; + + if (skinName == "") + skinName = skeleton.Data.DefaultSkin.Name; + + skin = skeleton.Data.FindSkin(skinName); + + if (skin == null) { + Debug.LogError("Skin " + skinName + " not found!"); + return null; + } + + var attachment = skin.GetAttachment(skeleton.FindSlotIndex(slotName), attachmentName); + if (attachment is BoundingBoxAttachment) { + GameObject go = new GameObject("[BoundingBox]" + attachmentName); + go.transform.parent = parent; + go.transform.localPosition = Vector3.zero; + go.transform.localRotation = Quaternion.identity; + go.transform.localScale = Vector3.one; + var collider = go.AddComponent(); + collider.isTrigger = isTrigger; + var boundingBox = (BoundingBoxAttachment)attachment; + float[] floats = boundingBox.Vertices; + int floatCount = floats.Length; + int vertCount = floatCount / 2; + + Vector2[] verts = new Vector2[vertCount]; + int v = 0; + for (int i = 0; i < floatCount; i += 2, v++) { + verts[v].x = floats[i]; + verts[v].y = floats[i + 1]; + } + + collider.SetPath(0, verts); + + return collider; + + } + + return null; + } + + public static PolygonCollider2D AddBoundingBoxAsComponent (BoundingBoxAttachment boundingBox, GameObject gameObject, bool isTrigger = true) { + if (boundingBox == null) + return null; + + var collider = gameObject.AddComponent(); + collider.isTrigger = isTrigger; + float[] floats = boundingBox.Vertices; + int floatCount = floats.Length; + int vertCount = floatCount / 2; + + Vector2[] verts = new Vector2[vertCount]; + int v = 0; + for (int i = 0; i < floatCount; i += 2, v++) { + verts[v].x = floats[i]; + verts[v].y = floats[i + 1]; + } + + collider.SetPath(0, verts); + + return collider; + } + + public static Bounds GetBoundingBoxBounds (BoundingBoxAttachment boundingBox, float depth = 0) { + float[] floats = boundingBox.Vertices; + int floatCount = floats.Length; + + Bounds bounds = new Bounds(); + + bounds.center = new Vector3(floats[0], floats[1], 0); + for (int i = 2; i < floatCount; i += 2) { + bounds.Encapsulate(new Vector3(floats[i], floats[i + 1], 0)); + } + Vector3 size = bounds.size; + size.z = depth; + bounds.size = size; + + return bounds; + } public delegate void SkeletonUtilityDelegate (); @@ -85,7 +139,7 @@ public class SkeletonUtility : MonoBehaviour { public List utilityBones = new List(); [System.NonSerialized] public List utilityConstraints = new List(); -// Dictionary utilityBoneTable; + // Dictionary utilityBoneTable; protected bool hasTransformBones; protected bool hasUtilityConstraints; @@ -116,7 +170,7 @@ public class SkeletonUtility : MonoBehaviour { void Start () { //recollect because order of operations failure when switching between game mode and edit mode... -// CollectBones(); + // CollectBones(); } void OnDisable () { @@ -128,7 +182,7 @@ public class SkeletonUtility : MonoBehaviour { skeletonAnimation.UpdateComplete -= UpdateComplete; } } - + void HandleRendererReset (SkeletonRenderer r) { if (OnReset != null) OnReset(); @@ -158,7 +212,7 @@ public class SkeletonUtility : MonoBehaviour { needToReprocessBones = true; } } - + public void UnregisterConstraint (SkeletonUtilityConstraint constraint) { utilityConstraints.Remove(constraint); } @@ -170,9 +224,9 @@ public class SkeletonUtility : MonoBehaviour { if (boneRoot != null) { List constraintTargetNames = new List(); - foreach (IkConstraint c in skeletonRenderer.skeleton.IkConstraints) { - constraintTargetNames.Add(c.Target.Data.Name); - } + ExposedList ikConstraints = skeletonRenderer.skeleton.IkConstraints; + for (int i = 0, n = ikConstraints.Count; i < n; i++) + constraintTargetNames.Add(ikConstraints.Items[i].Target.Data.Name); foreach (var b in utilityBones) { if (b.bone == null) { @@ -289,17 +343,19 @@ public class SkeletonUtility : MonoBehaviour { public GameObject SpawnBoneRecursively (Bone bone, Transform parent, SkeletonUtilityBone.Mode mode, bool pos, bool rot, bool sca) { GameObject go = SpawnBone(bone, parent, mode, pos, rot, sca); - foreach (Bone child in bone.Children) { + ExposedList childrenBones = bone.Children; + for (int i = 0, n = childrenBones.Count; i < n; i++) { + Bone child = childrenBones.Items[i]; SpawnBoneRecursively(child, go.transform, mode, pos, rot, sca); } return go; } - + public GameObject SpawnBone (Bone bone, Transform parent, SkeletonUtilityBone.Mode mode, bool pos, bool rot, bool sca) { GameObject go = new GameObject(bone.Data.Name); go.transform.parent = parent; - + SkeletonUtilityBone b = go.AddComponent(); b.skeletonUtility = this; b.position = pos; @@ -315,16 +371,16 @@ public class SkeletonUtility : MonoBehaviour { if (mode == SkeletonUtilityBone.Mode.Override) { if (rot) go.transform.localRotation = Quaternion.Euler(0, 0, b.bone.RotationIK); - + if (pos) go.transform.localPosition = new Vector3(b.bone.X, b.bone.Y, 0); - + go.transform.localScale = new Vector3(b.bone.scaleX, b.bone.scaleY, 0); } return go; } - + public void SpawnSubRenderers (bool disablePrimaryRenderer) { int submeshCount = GetComponent().sharedMesh.subMeshCount; @@ -336,12 +392,12 @@ public class SkeletonUtility : MonoBehaviour { go.transform.localScale = Vector3.one; SkeletonUtilitySubmeshRenderer s = go.AddComponent(); - s.sortingOrder = i * 10; + s.GetComponent().sortingOrder = i * 10; s.submeshIndex = i; - s.Initialize(GetComponent()); - s.Update(); } + skeletonRenderer.CollectSubmeshRenderers(); + if (disablePrimaryRenderer) GetComponent().enabled = false; } diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityBone.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityBone.cs index dc42d4677..0b67b91df 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityBone.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityBone.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Skeleton Utility created by Mitch Thompson @@ -62,7 +34,7 @@ public class SkeletonUtilityBone : MonoBehaviour { public bool scale; public bool flip; public bool flipX; - [Range(0f,1f)] + [Range(0f, 1f)] public float overrideAlpha = 1; /// If a bone isn't set, boneName is used to find the bone. @@ -137,10 +109,10 @@ public class SkeletonUtilityBone : MonoBehaviour { } } - + float skeletonFlipRotation = (skeleton.flipX ^ skeleton.flipY) ? -1f : 1f; - + float flipCompensation = 0; if (flip && (flipX || (flipX != bone.flipX)) && bone.parent != null) { flipCompensation = bone.parent.WorldRotation * -2; @@ -161,7 +133,7 @@ public class SkeletonUtilityBone : MonoBehaviour { if (bone.Data.InheritRotation) { if (bone.FlipX) { cachedTransform.localRotation = Quaternion.Euler(0, 180, bone.rotationIK - flipCompensation); - } else { + } else { cachedTransform.localRotation = Quaternion.Euler(0, 0, bone.rotationIK); } } else { @@ -181,90 +153,90 @@ public class SkeletonUtilityBone : MonoBehaviour { - if (transformLerpComplete) - return; - - if (parentReference == null) { - if (position) { - bone.x = Mathf.Lerp(bone.x, cachedTransform.localPosition.x, overrideAlpha); - bone.y = Mathf.Lerp(bone.y, cachedTransform.localPosition.y, overrideAlpha); - } - - if (rotation) { - float angle = Mathf.LerpAngle(bone.Rotation, cachedTransform.localRotation.eulerAngles.z, overrideAlpha) + flipCompensation; - - if (flip) { - if ((!flipX && bone.flipX)) { - angle -= flipCompensation; - } - - //TODO fix this... - if (angle >= 360) - angle -= 360; - else if (angle <= -360) - angle += 360; - } - - bone.Rotation = angle; - bone.RotationIK = angle; - } - - if (scale) { - bone.scaleX = Mathf.Lerp(bone.scaleX, cachedTransform.localScale.x, overrideAlpha); - bone.scaleY = Mathf.Lerp(bone.scaleY, cachedTransform.localScale.y, overrideAlpha); - - nonUniformScaleWarning = (bone.scaleX != bone.scaleY); - } - - if (flip) { - bone.flipX = flipX; - } - } else { - - if (transformLerpComplete) - return; - - if (position) { - Vector3 pos = parentReference.InverseTransformPoint(cachedTransform.position); - bone.x = Mathf.Lerp(bone.x, pos.x, overrideAlpha); - bone.y = Mathf.Lerp(bone.y, pos.y, overrideAlpha); - } - - if (rotation) { - float angle = Mathf.LerpAngle(bone.Rotation, Quaternion.LookRotation(flipX ? Vector3.forward * -1 : Vector3.forward, parentReference.InverseTransformDirection(cachedTransform.up)).eulerAngles.z, overrideAlpha) + flipCompensation; - - if (flip) { - if ((!flipX && bone.flipX)) { - angle -= flipCompensation; - } - - //TODO fix this... - if (angle >= 360) - angle -= 360; - else if (angle <= -360) - angle += 360; - } - - bone.Rotation = angle; - bone.RotationIK = angle; - } - - //TODO: Something about this - if (scale) { - bone.scaleX = Mathf.Lerp(bone.scaleX, cachedTransform.localScale.x, overrideAlpha); - bone.scaleY = Mathf.Lerp(bone.scaleY, cachedTransform.localScale.y, overrideAlpha); - - nonUniformScaleWarning = (bone.scaleX != bone.scaleY); - } - - if (flip) { - bone.flipX = flipX; - } + if (transformLerpComplete) + return; + if (parentReference == null) { + if (position) { + bone.x = Mathf.Lerp(bone.x, cachedTransform.localPosition.x, overrideAlpha); + bone.y = Mathf.Lerp(bone.y, cachedTransform.localPosition.y, overrideAlpha); } - transformLerpComplete = true; - } + if (rotation) { + float angle = Mathf.LerpAngle(bone.Rotation, cachedTransform.localRotation.eulerAngles.z, overrideAlpha) + flipCompensation; + + if (flip) { + if ((!flipX && bone.flipX)) { + angle -= flipCompensation; + } + + //TODO fix this... + if (angle >= 360) + angle -= 360; + else if (angle <= -360) + angle += 360; + } + + bone.Rotation = angle; + bone.RotationIK = angle; + } + + if (scale) { + bone.scaleX = Mathf.Lerp(bone.scaleX, cachedTransform.localScale.x, overrideAlpha); + bone.scaleY = Mathf.Lerp(bone.scaleY, cachedTransform.localScale.y, overrideAlpha); + + nonUniformScaleWarning = (bone.scaleX != bone.scaleY); + } + + if (flip) { + bone.flipX = flipX; + } + } else { + + if (transformLerpComplete) + return; + + if (position) { + Vector3 pos = parentReference.InverseTransformPoint(cachedTransform.position); + bone.x = Mathf.Lerp(bone.x, pos.x, overrideAlpha); + bone.y = Mathf.Lerp(bone.y, pos.y, overrideAlpha); + } + + if (rotation) { + float angle = Mathf.LerpAngle(bone.Rotation, Quaternion.LookRotation(flipX ? Vector3.forward * -1 : Vector3.forward, parentReference.InverseTransformDirection(cachedTransform.up)).eulerAngles.z, overrideAlpha) + flipCompensation; + + if (flip) { + if ((!flipX && bone.flipX)) { + angle -= flipCompensation; + } + + //TODO fix this... + if (angle >= 360) + angle -= 360; + else if (angle <= -360) + angle += 360; + } + + bone.Rotation = angle; + bone.RotationIK = angle; + } + + //TODO: Something about this + if (scale) { + bone.scaleX = Mathf.Lerp(bone.scaleX, cachedTransform.localScale.x, overrideAlpha); + bone.scaleY = Mathf.Lerp(bone.scaleY, cachedTransform.localScale.y, overrideAlpha); + + nonUniformScaleWarning = (bone.scaleX != bone.scaleY); + } + + if (flip) { + bone.flipX = flipX; + } + + } + + transformLerpComplete = true; + } } public void FlipX (bool state) { @@ -274,9 +246,9 @@ public class SkeletonUtilityBone : MonoBehaviour { skeletonUtility.skeletonAnimation.LateUpdate(); return; } else if (!flipX && Mathf.Abs(transform.localRotation.eulerAngles.y) < 90) { - skeletonUtility.skeletonAnimation.LateUpdate(); - return; - } + skeletonUtility.skeletonAnimation.LateUpdate(); + return; + } } bone.FlipX = state; @@ -287,6 +259,10 @@ public class SkeletonUtilityBone : MonoBehaviour { transform.localRotation = Quaternion.Euler(euler); } + public void AddBoundingBox (string skinName, string slotName, string attachmentName) { + SkeletonUtility.AddBoundingBox(bone.skeleton, skinName, slotName, attachmentName, transform); + } + void OnDrawGizmos () { if (NonUniformScaleWarning) { Gizmos.DrawIcon(transform.position + new Vector3(0, 0.128f, 0), "icon-warning"); diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityConstraint.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityConstraint.cs index 3be62228c..4f2b1cd9b 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityConstraint.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityConstraint.cs @@ -1,4 +1,35 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; [RequireComponent(typeof(SkeletonUtilityBone)), ExecuteInEditMode] diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityEyeConstraint.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityEyeConstraint.cs index 6aefded5a..7b0e81430 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityEyeConstraint.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityEyeConstraint.cs @@ -1,4 +1,35 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; public class SkeletonUtilityEyeConstraint : SkeletonUtilityConstraint { @@ -10,7 +41,7 @@ public class SkeletonUtilityEyeConstraint : SkeletonUtilityConstraint { public float speed = 10; Vector3[] origins; Vector3 centerPoint; - + protected override void OnEnable () { if (!Application.isPlaying) return; @@ -26,14 +57,14 @@ public class SkeletonUtilityEyeConstraint : SkeletonUtilityConstraint { centerPoint = centerBounds.center; } - + protected override void OnDisable () { if (!Application.isPlaying) return; base.OnDisable(); } - + public override void DoUpdate () { if (target != null) @@ -44,13 +75,13 @@ public class SkeletonUtilityEyeConstraint : SkeletonUtilityConstraint { Vector3 center = transform.TransformPoint(centerPoint); Vector3 dir = goal - center; - if (dir.magnitude > 1) + if (dir.magnitude > 1) dir.Normalize(); for (int i = 0; i < eyes.Length; i++) { center = transform.TransformPoint(origins[i]); eyes[i].position = Vector3.MoveTowards(eyes[i].position, center + (dir * radius), speed * Time.deltaTime); } - - } -} \ No newline at end of file + + } +} diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityGroundConstraint.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityGroundConstraint.cs index b9608e9bc..371b5f170 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityGroundConstraint.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityGroundConstraint.cs @@ -1,4 +1,35 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; [RequireComponent(typeof(SkeletonUtilityBone)), ExecuteInEditMode] @@ -97,7 +128,7 @@ public class SkeletonUtilityGroundConstraint : SkeletonUtilityConstraint { Vector3 v = transform.position; v.y = Mathf.Clamp(v.y, Mathf.Min(lastHitY, hitY), float.MaxValue); transform.position = v; - + utilBone.bone.X = transform.localPosition.x; utilBone.bone.Y = transform.localPosition.y; diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityKinematicShadow.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityKinematicShadow.cs index a636792be..8f88297be 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityKinematicShadow.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilityKinematicShadow.cs @@ -1,4 +1,35 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; using System.Collections.Generic; @@ -13,7 +44,7 @@ public class SkeletonUtilityKinematicShadow : MonoBehaviour { if (hideShadow) shadowRoot.hideFlags = HideFlags.HideInHierarchy; - if(parent == null) + if (parent == null) shadowRoot.transform.parent = transform.root; else shadowRoot.transform.parent = parent; @@ -80,4 +111,4 @@ public class SkeletonUtilityKinematicShadow : MonoBehaviour { pair.Value.localRotation = pair.Key.localRotation; } } -} \ No newline at end of file +} diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs index 40e3ffbc5..a756314ba 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtilitySubmeshRenderer.cs @@ -1,96 +1,70 @@ -using UnityEngine; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; using System.Collections; [ExecuteInEditMode] public class SkeletonUtilitySubmeshRenderer : MonoBehaviour { - public Renderer parentRenderer; [System.NonSerialized] public Mesh mesh; public int submeshIndex = 0; - public int sortingOrder = 0; - public int sortingLayerID = 0; public Material hiddenPassMaterial; Renderer cachedRenderer; MeshFilter filter; Material[] sharedMaterials; - MeshFilter parentFilter; void Awake () { cachedRenderer = GetComponent(); - sharedMaterials = cachedRenderer.sharedMaterials; filter = GetComponent(); - - if (parentRenderer != null) - Initialize(parentRenderer); + sharedMaterials = new Material[0]; } - void OnEnable () { - parentRenderer = transform.parent.GetComponent(); - parentRenderer.GetComponent().OnReset += HandleSkeletonReset; - } - - void OnDisable () { - parentRenderer.GetComponent().OnReset -= HandleSkeletonReset; - } - - void HandleSkeletonReset (SkeletonRenderer r) { - if (parentRenderer != null) - Initialize(parentRenderer); - } - - public void Initialize (Renderer parentRenderer) { - this.parentRenderer = parentRenderer; - parentFilter = parentRenderer.GetComponent(); - mesh = parentFilter.sharedMesh; - filter.sharedMesh = mesh; - Debug.Log("Mesh: " + mesh); - } - - public void Update () { - if (mesh == null || mesh != parentFilter.sharedMesh) { - mesh = parentFilter.sharedMesh; - filter.sharedMesh = mesh; - } - + public void SetMesh (Renderer parentRenderer, Mesh mesh, Material mat) { if (cachedRenderer == null) - cachedRenderer = GetComponent(); - - if (mesh == null || submeshIndex > mesh.subMeshCount - 1) { - cachedRenderer.enabled = false; return; - } else { - GetComponent().enabled = true; - } - bool changed = false; - - if (sharedMaterials.Length != parentRenderer.sharedMaterials.Length) { + cachedRenderer.enabled = true; + filter.sharedMesh = mesh; + if (cachedRenderer.sharedMaterials.Length != parentRenderer.sharedMaterials.Length) { sharedMaterials = parentRenderer.sharedMaterials; - changed = true; } - - - for (int i = 0; i < GetComponent().sharedMaterials.Length; i++) { + for (int i = 0; i < sharedMaterials.Length; i++) { if (i == submeshIndex) - continue; - - if (sharedMaterials[i] != hiddenPassMaterial) { + sharedMaterials[i] = mat; + else sharedMaterials[i] = hiddenPassMaterial; - changed = true; - } } - if (sharedMaterials[submeshIndex] != parentRenderer.sharedMaterials[submeshIndex]) { - sharedMaterials[submeshIndex] = parentRenderer.sharedMaterials[submeshIndex]; - changed = true; - } - - if (changed) { - cachedRenderer.sharedMaterials = sharedMaterials; - } - - cachedRenderer.sortingLayerID = sortingLayerID; - cachedRenderer.sortingOrder = sortingOrder; + cachedRenderer.sharedMaterials = sharedMaterials; } } diff --git a/spine-unity/Assets/spine-unity/SpineAttributes.cs b/spine-unity/Assets/spine-unity/SpineAttributes.cs index 1bf15bca2..c102bdae4 100644 --- a/spine-unity/Assets/spine-unity/SpineAttributes.cs +++ b/spine-unity/Assets/spine-unity/SpineAttributes.cs @@ -1,32 +1,4 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * 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 (typically granted by licensing Spine), 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. - *****************************************************************************/ + /***************************************************************************** * Spine Attributes created by Mitch Thompson @@ -38,6 +10,7 @@ using System.Collections; public class SpineSlot : PropertyAttribute { public string startsWith = ""; public string dataField = ""; + public bool containsBoundingBoxes = false; /// /// Smart popup menu for Spine Slots @@ -47,9 +20,11 @@ public class SpineSlot : PropertyAttribute { /// Valid types are SkeletonDataAsset and SkeletonRenderer (and derivatives). /// If left empty and the script the attribute is applied to is derived from Component, GetComponent() will be called as a fallback. /// - public SpineSlot(string startsWith = "", string dataField = "") { + /// Disables popup results that don't contain bounding box attachments when true. + public SpineSlot (string startsWith = "", string dataField = "", bool containsBoundingBoxes = false) { this.startsWith = startsWith; this.dataField = dataField; + this.containsBoundingBoxes = containsBoundingBoxes; } } @@ -65,7 +40,7 @@ public class SpineSkin : PropertyAttribute { /// Valid types are SkeletonDataAsset and SkeletonRenderer (and derivatives) /// If left empty and the script the attribute is applied to is derived from Component, GetComponent() will be called as a fallback. /// - public SpineSkin(string startsWith = "", string dataField = "") { + public SpineSkin (string startsWith = "", string dataField = "") { this.startsWith = startsWith; this.dataField = dataField; } @@ -82,7 +57,7 @@ public class SpineAnimation : PropertyAttribute { /// Valid types are SkeletonDataAsset and SkeletonRenderer (and derivatives) /// If left empty and the script the attribute is applied to is derived from Component, GetComponent() will be called as a fallback. /// - public SpineAnimation(string startsWith = "", string dataField = "") { + public SpineAnimation (string startsWith = "", string dataField = "") { this.startsWith = startsWith; this.dataField = dataField; } @@ -96,7 +71,7 @@ public class SpineAttachment : PropertyAttribute { public string slotField = ""; - public SpineAttachment() { + public SpineAttachment () { } @@ -111,19 +86,19 @@ public class SpineAttachment : PropertyAttribute { /// Valid types are SkeletonDataAsset and SkeletonRenderer (and derivatives) /// If left empty and the script the attribute is applied to is derived from Component, GetComponent() will be called as a fallback. /// - public SpineAttachment(bool currentSkinOnly = true, bool returnAttachmentPath = false, bool placeholdersOnly = false, string slotField = "", string dataField = "") { + public SpineAttachment (bool currentSkinOnly = true, bool returnAttachmentPath = false, bool placeholdersOnly = false, string slotField = "", string dataField = "") { this.currentSkinOnly = currentSkinOnly; this.returnAttachmentPath = returnAttachmentPath; this.placeholdersOnly = placeholdersOnly; this.slotField = slotField; - this.dataField = dataField; + this.dataField = dataField; } - public static Hierarchy GetHierarchy(string fullPath) { + public static Hierarchy GetHierarchy (string fullPath) { return new Hierarchy(fullPath); } - public static Spine.Attachment GetAttachment(string attachmentPath, Spine.SkeletonData skeletonData) { + public static Spine.Attachment GetAttachment (string attachmentPath, Spine.SkeletonData skeletonData) { var hierarchy = SpineAttachment.GetHierarchy(attachmentPath); if (hierarchy.name == "") return null; @@ -131,7 +106,7 @@ public class SpineAttachment : PropertyAttribute { return skeletonData.FindSkin(hierarchy.skin).GetAttachment(skeletonData.FindSlotIndex(hierarchy.slot), hierarchy.name); } - public static Spine.Attachment GetAttachment(string attachmentPath, SkeletonDataAsset skeletonDataAsset) { + public static Spine.Attachment GetAttachment (string attachmentPath, SkeletonDataAsset skeletonDataAsset) { return GetAttachment(attachmentPath, skeletonDataAsset.GetSkeletonData(true)); } @@ -140,15 +115,14 @@ public class SpineAttachment : PropertyAttribute { public string slot; public string name; - public Hierarchy(string fullPath) { - string[] chunks = fullPath.Split(new char[]{'/'}, System.StringSplitOptions.RemoveEmptyEntries); + public Hierarchy (string fullPath) { + string[] chunks = fullPath.Split(new char[] { '/' }, System.StringSplitOptions.RemoveEmptyEntries); if (chunks.Length == 0) { skin = ""; slot = ""; name = ""; return; - } - else if (chunks.Length < 2) { + } else if (chunks.Length < 2) { throw new System.Exception("Cannot generate Attachment Hierarchy from string! Not enough components! [" + fullPath + "]"); } skin = chunks[0]; @@ -173,19 +147,19 @@ public class SpineBone : PropertyAttribute { /// Valid types are SkeletonDataAsset and SkeletonRenderer (and derivatives) /// If left empty and the script the attribute is applied to is derived from Component, GetComponent() will be called as a fallback. /// - public SpineBone(string startsWith = "", string dataField = "") { + public SpineBone (string startsWith = "", string dataField = "") { this.startsWith = startsWith; this.dataField = dataField; } - public static Spine.Bone GetBone(string boneName, SkeletonRenderer renderer) { + public static Spine.Bone GetBone (string boneName, SkeletonRenderer renderer) { if (renderer.skeleton == null) return null; return renderer.skeleton.FindBone(boneName); } - public static Spine.BoneData GetBoneData(string boneName, SkeletonDataAsset skeletonDataAsset) { + public static Spine.BoneData GetBoneData (string boneName, SkeletonDataAsset skeletonDataAsset) { var data = skeletonDataAsset.GetSkeletonData(true); return data.FindBone(boneName); diff --git a/spine-unity/Assets/spine-unity/SpriteAttacher.cs b/spine-unity/Assets/spine-unity/SpriteAttacher.cs new file mode 100644 index 000000000..e6018b410 --- /dev/null +++ b/spine-unity/Assets/spine-unity/SpriteAttacher.cs @@ -0,0 +1,199 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. + *****************************************************************************/ + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Spine; + +public class SpriteAttacher : MonoBehaviour { + + + public bool attachOnStart = true; + public bool keepLoaderInMemory = true; + + public Sprite sprite; + + [SpineSlot] + public string slot; + + private SpriteAttachmentLoader loader; + private RegionAttachment attachment; + + void Start () { + if (attachOnStart) + Attach(); + } + + public void Attach () { + var skeletonRenderer = GetComponent(); + + if (loader == null) + //create loader instance, tell it what sprite and shader to use + loader = new SpriteAttachmentLoader(sprite, Shader.Find("Spine/Skeleton")); + + if (attachment == null) + attachment = loader.NewRegionAttachment(null, sprite.name, ""); + + skeletonRenderer.skeleton.FindSlot(slot).Attachment = attachment; + + if (!keepLoaderInMemory) + loader = null; + } +} + +public class SpriteAttachmentLoader : AttachmentLoader { + + //TODO: Memory cleanup functions + + //IMPORTANT: Make sure you clear this when you don't need it anymore. Goodluck. + public static Dictionary atlasTable = new Dictionary(); + + //Shouldn't need to clear this, should just prevent redoing premultiply alpha pass on packed atlases + public static List premultipliedAtlasIds = new List(); + + Sprite sprite; + Shader shader; + + public SpriteAttachmentLoader (Sprite sprite, Shader shader) { + + if (sprite.packed && sprite.packingMode == SpritePackingMode.Tight) { + Debug.LogError("Tight Packer Policy not supported yet!"); + return; + } + + this.sprite = sprite; + this.shader = shader; + + Texture2D tex = sprite.texture; + //premultiply texture if it hasn't been yet + int instanceId = tex.GetInstanceID(); + if (!premultipliedAtlasIds.Contains(instanceId)) { + try { + var colors = tex.GetPixels(); + Color c; + float a; + for (int i = 0; i < colors.Length; i++) { + c = colors[i]; + a = c.a; + c.r *= a; + c.g *= a; + c.b *= a; + colors[i] = c; + } + + tex.SetPixels(colors); + tex.Apply(); + + premultipliedAtlasIds.Add(instanceId); + } catch { + //texture is not readable! Can't pre-multiply it, you're on your own. + } + } + } + + public RegionAttachment NewRegionAttachment (Skin skin, string name, string path) { + RegionAttachment attachment = new RegionAttachment(name); + + Texture2D tex = sprite.texture; + int instanceId = tex.GetInstanceID(); + AtlasRegion atlasRegion; + + //check cache first + if (atlasTable.ContainsKey(instanceId)) { + atlasRegion = atlasTable[instanceId]; + } else { + //Setup new material + Material mat = new Material(shader); + if (sprite.packed) + mat.name = "Unity Packed Sprite Material"; + else + mat.name = sprite.name + " Sprite Material"; + mat.mainTexture = tex; + + //create faux-region to play nice with SkeletonRenderer + atlasRegion = new AtlasRegion(); + AtlasPage page = new AtlasPage(); + page.rendererObject = mat; + atlasRegion.page = page; + + //cache it + atlasTable[instanceId] = atlasRegion; + } + + Rect texRect = sprite.textureRect; + + //normalize rect to UV space of packed atlas + texRect.x = Mathf.InverseLerp(0, tex.width, texRect.x); + texRect.y = Mathf.InverseLerp(0, tex.height, texRect.y); + texRect.width = Mathf.InverseLerp(0, tex.width, texRect.width); + texRect.height = Mathf.InverseLerp(0, tex.height, texRect.height); + + Bounds bounds = sprite.bounds; + Vector3 size = bounds.size; + + //TODO: make sure this rotation thing actually works + bool rotated = false; + if (sprite.packed) + rotated = sprite.packingRotation == SpritePackingRotation.Any; + + //do some math and assign UVs and sizes + attachment.SetUVs(texRect.xMin, texRect.yMax, texRect.xMax, texRect.yMin, rotated); + attachment.RendererObject = atlasRegion; + attachment.SetColor(Color.white); + attachment.ScaleX = 1; + attachment.ScaleY = 1; + attachment.RegionOffsetX = sprite.rect.width * (0.5f - Mathf.InverseLerp(bounds.min.x, bounds.max.x, 0)) / sprite.pixelsPerUnit; + attachment.RegionOffsetY = sprite.rect.height * (0.5f - Mathf.InverseLerp(bounds.min.y, bounds.max.y, 0)) / sprite.pixelsPerUnit; + attachment.Width = size.x; + attachment.Height = size.y; + attachment.RegionWidth = size.x; + attachment.RegionHeight = size.y; + attachment.RegionOriginalWidth = size.x; + attachment.RegionOriginalHeight = size.y; + attachment.UpdateOffset(); + + return attachment; + } + + public MeshAttachment NewMeshAttachment (Skin skin, string name, string path) { + //TODO: Unity 5 only + throw new System.NotImplementedException(); + } + + public SkinnedMeshAttachment NewSkinnedMeshAttachment (Skin skin, string name, string path) { + throw new System.NotImplementedException(); + } + + public BoundingBoxAttachment NewBoundingBoxAttachment (Skin skin, string name) { + throw new System.NotImplementedException(); + } +} diff --git a/spine-unity/Assets/spine-unity/SpriteAttacher.cs.meta b/spine-unity/Assets/spine-unity/SpriteAttacher.cs.meta new file mode 100644 index 000000000..6f79b89c2 --- /dev/null +++ b/spine-unity/Assets/spine-unity/SpriteAttacher.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2ee7b5e36685e2445a0097de42940987 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/spine-tk2d/Assets/spine-tk2d/SpriteCollectionAttachmentLoader.cs b/spine-unity/Assets/spine-unity/SpriteCollectionAttachmentLoader.cs similarity index 85% rename from spine-tk2d/Assets/spine-tk2d/SpriteCollectionAttachmentLoader.cs rename to spine-unity/Assets/spine-unity/SpriteCollectionAttachmentLoader.cs index e4099552f..3b6235532 100644 --- a/spine-tk2d/Assets/spine-tk2d/SpriteCollectionAttachmentLoader.cs +++ b/spine-unity/Assets/spine-unity/SpriteCollectionAttachmentLoader.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -28,6 +29,7 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ +#if SPINE_TK2D using System; using UnityEngine; using Spine; @@ -160,3 +162,4 @@ public class SpriteCollectionAttachmentLoader : AttachmentLoader { return new BoundingBoxAttachment(name); } } +#endif diff --git a/spine-tk2d/Assets/spine-tk2d/SpriteCollectionAttachmentLoader.cs.meta b/spine-unity/Assets/spine-unity/SpriteCollectionAttachmentLoader.cs.meta similarity index 78% rename from spine-tk2d/Assets/spine-tk2d/SpriteCollectionAttachmentLoader.cs.meta rename to spine-unity/Assets/spine-unity/SpriteCollectionAttachmentLoader.cs.meta index 6cc8612ae..671d5c768 100644 --- a/spine-tk2d/Assets/spine-tk2d/SpriteCollectionAttachmentLoader.cs.meta +++ b/spine-unity/Assets/spine-unity/SpriteCollectionAttachmentLoader.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2ad5a031e905ab0469fe2e19ff1b94ee +guid: 03238e4a73953c045a6cb289162532f3 MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/spine-unity/LICENSE b/spine-unity/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-unity/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-unity/README.md b/spine-unity/README.md index 3ce9aa1aa..f68b5a015 100644 --- a/spine-unity/README.md +++ b/spine-unity/README.md @@ -1,12 +1,22 @@ # spine-unity -The spine-unity runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [Unity](http://unity3d.com/) directly, without any other plugins. spine-unity is based on [spine-csharp](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-csharp) and is very similar to [spine-tk2d](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-tk2d). +The spine-unity runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [Unity](http://unity3d.com/). spine-unity is based on [spine-csharp](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-csharp). -A Spine skeleton is a GameObject and can be used throughout Unity like any other GameObject. It depends only on Unity's `MeshRenderer`, so it is close to the metal. `SkeletonUtility` allows other GameObjects to interact with the Spine skeleton, to control bones in the skeleton, be controlled by the skeleton, attach colliders, etc. +While spine-unity can render directly with Unity, without the need for any other plugins, it also works with [2D Toolkit](http://www.unikronsoftware.com/2dtoolkit/) and can render skeletons from a TK2D texture atlas. + +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. ## Documentation -The [Spine Unity Examples](http://esotericsoftware.com/forum/viewtopic.php?f=3&t=3318) forum thread has many videos on how to use both spine-unity and spine-tk2d features. +A Spine skeleton is a GameObject and can be used throughout Unity like any other GameObject. It depends only on Unity's `MeshRenderer`, so it is close to the metal. `SkeletonUtility` allows other GameObjects to interact with the Spine skeleton, to control bones in the skeleton, be controlled by the skeleton, attach colliders, etc. + +Spine skeletons can be "baked" into native Unity animations for use with Mecanim. Baking is an advanced feature with a number of limitations, so in most cases baking should not be used. + +The [Spine Unity Features Tutorial](http://esotericsoftware.com/forum/Unity-Feature-Tutorials-4839) forum thread has many videos on how to use spine-unity. ## Quick installation diff --git a/spine-xna/LICENSE b/spine-xna/LICENSE new file mode 100644 index 000000000..815ec1ca1 --- /dev/null +++ b/spine-xna/LICENSE @@ -0,0 +1,28 @@ +Spine Runtimes Software License +Version 2.3 + +Copyright (c) 2013-2015, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal +or internal use. Without the written permission of Esoteric Software (see +Section 2 of the Spine Software License Agreement), 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 SOFTWARE 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. \ No newline at end of file diff --git a/spine-xna/README.md b/spine-xna/README.md index 4c9ec920c..8796b0a03 100644 --- a/spine-xna/README.md +++ b/spine-xna/README.md @@ -2,6 +2,12 @@ The spine-xna runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [XNA](http://msdn.microsoft.com/xna/). spine-xna is based on [spine-csharp](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-csharp). +## Licensing + +This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information. + +The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes. + ## Setup 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). diff --git a/spine-xna/example/data/raptor.skel b/spine-xna/example/data/raptor.skel new file mode 100644 index 000000000..507d86e2e Binary files /dev/null and b/spine-xna/example/data/raptor.skel differ diff --git a/spine-xna/example/src/ExampleGame.cs b/spine-xna/example/src/ExampleGame.cs index e07434f56..419badd54 100644 --- a/spine-xna/example/src/ExampleGame.cs +++ b/spine-xna/example/src/ExampleGame.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -76,12 +77,25 @@ namespace Spine { // String name = "spineboy"; // String name = "goblins-mesh"; String name = "raptor"; + bool binaryData = true; Atlas atlas = new Atlas(assetsFolder + name + ".atlas", new XnaTextureLoader(GraphicsDevice)); - SkeletonJson json = new SkeletonJson(atlas); - if (name == "spineboy") json.Scale = 0.6f; - if (name == "raptor") json.Scale = 0.5f; - skeleton = new Skeleton(json.ReadSkeletonData(assetsFolder + name + ".json")); + + float scale = 1; + if (name == "spineboy") scale = 0.6f; + if (name == "raptor") scale = 0.5f; + + SkeletonData skeletonData; + if (binaryData) { + SkeletonBinary binary = new SkeletonBinary(atlas); + binary.Scale = scale; + skeletonData = binary.ReadSkeletonData(assetsFolder + name + ".skel"); + } else { + SkeletonJson json = new SkeletonJson(atlas); + json.Scale = scale; + skeletonData = json.ReadSkeletonData(assetsFolder + name + ".json"); + } + skeleton = new Skeleton(skeletonData); if (name == "goblins-mesh") skeleton.SetSkin("goblin"); // Define mixing between animations. diff --git a/spine-xna/src/MeshBatcher.cs b/spine-xna/src/MeshBatcher.cs index 751d19a7a..f2d4cd592 100644 --- a/spine-xna/src/MeshBatcher.cs +++ b/spine-xna/src/MeshBatcher.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software + * Version 2.3 + * + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. - * + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-xna/src/RegionBatcher.cs b/spine-xna/src/RegionBatcher.cs index edb326fd4..d05973d71 100644 --- a/spine-xna/src/RegionBatcher.cs +++ b/spine-xna/src/RegionBatcher.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software + * Version 2.3 + * + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. - * + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, diff --git a/spine-xna/src/SkeletonMeshRenderer.cs b/spine-xna/src/SkeletonMeshRenderer.cs index 48697ba4e..bf60c2e0b 100644 --- a/spine-xna/src/SkeletonMeshRenderer.cs +++ b/spine-xna/src/SkeletonMeshRenderer.cs @@ -1,25 +1,26 @@ -/****************************************************************************** +/****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -96,7 +97,7 @@ namespace Spine { Attachment attachment = slot.Attachment; if (attachment is RegionAttachment) { RegionAttachment regionAttachment = (RegionAttachment)attachment; - BlendState blend = slot.Data.AdditiveBlending ? BlendState.Additive : defaultBlendState; + BlendState blend = slot.Data.BlendMode == BlendMode.additive ? BlendState.Additive : defaultBlendState; if (device.BlendState != blend) { End(); device.BlendState = blend; diff --git a/spine-xna/src/SkeletonRegionRenderer.cs b/spine-xna/src/SkeletonRegionRenderer.cs index d9d7448ec..2189b01a3 100644 --- a/spine-xna/src/SkeletonRegionRenderer.cs +++ b/spine-xna/src/SkeletonRegionRenderer.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -88,7 +89,7 @@ namespace Spine { Slot slot = drawOrder[i]; RegionAttachment regionAttachment = slot.Attachment as RegionAttachment; if (regionAttachment != null) { - BlendState blend = slot.Data.AdditiveBlending ? BlendState.Additive : defaultBlendState; + BlendState blend = slot.Data.BlendMode == BlendMode.additive ? BlendState.Additive : defaultBlendState; if (device.BlendState != blend) { End(); device.BlendState = blend; diff --git a/spine-xna/src/Util.cs b/spine-xna/src/Util.cs index a871c7083..1df35a44d 100644 --- a/spine-xna/src/Util.cs +++ b/spine-xna/src/Util.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -28,7 +29,7 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -using System; +using System; using System.IO; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; diff --git a/spine-xna/src/XnaTextureLoader.cs b/spine-xna/src/XnaTextureLoader.cs index 15e33f3a4..30359bc93 100644 --- a/spine-xna/src/XnaTextureLoader.cs +++ b/spine-xna/src/XnaTextureLoader.cs @@ -1,25 +1,26 @@ /****************************************************************************** * Spine Runtimes Software License - * Version 2.1 + * Version 2.3 * - * Copyright (c) 2013, Esoteric Software + * Copyright (c) 2013-2015, 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 (typically granted by licensing Spine), 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. + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), 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, + * EVENT SHALL ESOTERIC SOFTWARE 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, @@ -28,7 +29,7 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -using System; +using System; using System.IO; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics;