From 698c4a1661509325be44acba4849b336011391d7 Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Fri, 12 Aug 2016 09:28:50 +0200 Subject: [PATCH] [ts] Added spine-ts runtime for TypeScript and JavaScript --- LICENSE | 28 +- .../.settings/com.powerflasher.fdt.classpath | 2 +- spine-ts/README.md | 69 + spine-ts/build/spine-all.d.ts | 2502 ++++++ spine-ts/build/spine-all.js | 6877 +++++++++++++++++ spine-ts/build/spine-all.js.map | 1 + spine-ts/build/spine-core.d.ts | 2502 ++++++ spine-ts/build/spine-core.js | 6877 +++++++++++++++++ spine-ts/build/spine-core.js.map | 1 + spine-ts/build/spine-webgl.d.ts | 2502 ++++++ spine-ts/build/spine-webgl.js | 6877 +++++++++++++++++ spine-ts/build/spine-webgl.js.map | 1 + spine-ts/build/spine-widget.d.ts | 2502 ++++++ spine-ts/build/spine-widget.js | 6877 +++++++++++++++++ spine-ts/build/spine-widget.js.map | 1 + spine-ts/core/src/Animation.ts | 816 ++ spine-ts/core/src/AnimationState.ts | 321 + spine-ts/core/src/AnimationStateData.ts | 64 + spine-ts/core/src/BlendMode.ts | 39 + spine-ts/core/src/Bone.ts | 293 + spine-ts/core/src/BoneData.ts | 49 + spine-ts/core/src/Event.ts | 46 + spine-ts/core/src/EventData.ts | 43 + spine-ts/core/src/IkConstraint.ts | 223 + spine-ts/core/src/IkConstraintData.ts | 44 + spine-ts/core/src/PathConstraint.ts | 388 + spine-ts/core/src/PathConstraintData.ts | 59 + spine-ts/core/src/Skeleton.ts | 469 ++ spine-ts/core/src/SkeletonBounds.ts | 193 + spine-ts/core/src/SkeletonData.ts | 151 + spine-ts/core/src/SkeletonJson.ts | 715 ++ spine-ts/core/src/Skin.ts | 77 + spine-ts/core/src/Slot.ts | 83 + spine-ts/core/src/SlotData.ts | 50 + spine-ts/core/src/TransformConstraint.ts | 117 + spine-ts/core/src/TransformConstraintData.ts | 45 + spine-ts/core/src/Updatable.ts | 36 + spine-ts/core/src/Utils.ts | 198 + spine-ts/core/src/attachments/Attachment.ts | 124 + .../core/src/attachments/AttachmentLoader.ts | 46 + .../core/src/attachments/AttachmentType.ts | 36 + .../src/attachments/BoundingBoxAttachment.ts | 38 + .../core/src/attachments/MeshAttachment.ts | 173 + .../core/src/attachments/PathAttachment.ts | 41 + .../core/src/attachments/RegionAttachment.ts | 206 + .../core/src/attachments/TextureRegion.ts | 42 + spine-ts/tsconfig.core.json | 19 + spine-ts/tsconfig.json | 22 + spine-ts/tsconfig.webgl.json | 21 + spine-ts/tsconfig.widget.json | 22 + .../webgl/example/assets/goblins-mesh.atlas | 293 + .../webgl/example/assets/goblins-mesh.json | 1082 +++ .../webgl/example/assets/goblins-mesh.png | Bin 0 -> 160909 bytes spine-ts/webgl/example/assets/raptor.atlas | 279 + spine-ts/webgl/example/assets/raptor.json | 2621 +++++++ spine-ts/webgl/example/assets/raptor.png | Bin 0 -> 506867 bytes spine-ts/webgl/example/assets/spineboy.atlas | 195 + spine-ts/webgl/example/assets/spineboy.json | 2412 ++++++ spine-ts/webgl/example/assets/spineboy.png | Bin 0 -> 607647 bytes spine-ts/webgl/example/assets/tank.atlas | 125 + spine-ts/webgl/example/assets/tank.json | 1899 +++++ spine-ts/webgl/example/assets/tank.png | Bin 0 -> 1143484 bytes spine-ts/webgl/example/assets/vine.atlas | 13 + spine-ts/webgl/example/assets/vine.json | 300 + spine-ts/webgl/example/assets/vine.png | Bin 0 -> 160151 bytes spine-ts/webgl/example/index.html | 219 + spine-ts/webgl/src/AssetManager.ts | 133 + spine-ts/webgl/src/Matrix4.ts | 303 + spine-ts/webgl/src/Mesh.ts | 184 + spine-ts/webgl/src/PolygonBatcher.ts | 121 + spine-ts/webgl/src/Shader.ts | 240 + spine-ts/webgl/src/SkeletonRenderer.ts | 78 + spine-ts/webgl/src/Texture.ts | 131 + spine-ts/webgl/src/TextureAtlas.ts | 213 + .../webgl/src/TextureAtlasAttachmentLoader.ts | 71 + spine-ts/webgl/src/Vector3.ts | 110 + spine-ts/webgl/src/WebGL.ts | 52 + spine-ts/widget/example/assets/raptor.atlas | 279 + spine-ts/widget/example/assets/raptor.json | 2621 +++++++ spine-ts/widget/example/assets/raptor.png | Bin 0 -> 506867 bytes spine-ts/widget/example/index.html | 30 + spine-ts/widget/src/Widget.ts | 261 + 82 files changed, 57178 insertions(+), 15 deletions(-) create mode 100644 spine-ts/README.md create mode 100644 spine-ts/build/spine-all.d.ts create mode 100644 spine-ts/build/spine-all.js create mode 100644 spine-ts/build/spine-all.js.map create mode 100644 spine-ts/build/spine-core.d.ts create mode 100644 spine-ts/build/spine-core.js create mode 100644 spine-ts/build/spine-core.js.map create mode 100644 spine-ts/build/spine-webgl.d.ts create mode 100644 spine-ts/build/spine-webgl.js create mode 100644 spine-ts/build/spine-webgl.js.map create mode 100644 spine-ts/build/spine-widget.d.ts create mode 100644 spine-ts/build/spine-widget.js create mode 100644 spine-ts/build/spine-widget.js.map create mode 100644 spine-ts/core/src/Animation.ts create mode 100644 spine-ts/core/src/AnimationState.ts create mode 100644 spine-ts/core/src/AnimationStateData.ts create mode 100644 spine-ts/core/src/BlendMode.ts create mode 100644 spine-ts/core/src/Bone.ts create mode 100644 spine-ts/core/src/BoneData.ts create mode 100644 spine-ts/core/src/Event.ts create mode 100644 spine-ts/core/src/EventData.ts create mode 100644 spine-ts/core/src/IkConstraint.ts create mode 100644 spine-ts/core/src/IkConstraintData.ts create mode 100644 spine-ts/core/src/PathConstraint.ts create mode 100644 spine-ts/core/src/PathConstraintData.ts create mode 100644 spine-ts/core/src/Skeleton.ts create mode 100644 spine-ts/core/src/SkeletonBounds.ts create mode 100644 spine-ts/core/src/SkeletonData.ts create mode 100644 spine-ts/core/src/SkeletonJson.ts create mode 100644 spine-ts/core/src/Skin.ts create mode 100644 spine-ts/core/src/Slot.ts create mode 100644 spine-ts/core/src/SlotData.ts create mode 100644 spine-ts/core/src/TransformConstraint.ts create mode 100644 spine-ts/core/src/TransformConstraintData.ts create mode 100644 spine-ts/core/src/Updatable.ts create mode 100644 spine-ts/core/src/Utils.ts create mode 100644 spine-ts/core/src/attachments/Attachment.ts create mode 100644 spine-ts/core/src/attachments/AttachmentLoader.ts create mode 100644 spine-ts/core/src/attachments/AttachmentType.ts create mode 100644 spine-ts/core/src/attachments/BoundingBoxAttachment.ts create mode 100644 spine-ts/core/src/attachments/MeshAttachment.ts create mode 100644 spine-ts/core/src/attachments/PathAttachment.ts create mode 100644 spine-ts/core/src/attachments/RegionAttachment.ts create mode 100644 spine-ts/core/src/attachments/TextureRegion.ts create mode 100644 spine-ts/tsconfig.core.json create mode 100644 spine-ts/tsconfig.json create mode 100644 spine-ts/tsconfig.webgl.json create mode 100644 spine-ts/tsconfig.widget.json create mode 100644 spine-ts/webgl/example/assets/goblins-mesh.atlas create mode 100644 spine-ts/webgl/example/assets/goblins-mesh.json create mode 100644 spine-ts/webgl/example/assets/goblins-mesh.png create mode 100644 spine-ts/webgl/example/assets/raptor.atlas create mode 100644 spine-ts/webgl/example/assets/raptor.json create mode 100644 spine-ts/webgl/example/assets/raptor.png create mode 100644 spine-ts/webgl/example/assets/spineboy.atlas create mode 100644 spine-ts/webgl/example/assets/spineboy.json create mode 100644 spine-ts/webgl/example/assets/spineboy.png create mode 100644 spine-ts/webgl/example/assets/tank.atlas create mode 100644 spine-ts/webgl/example/assets/tank.json create mode 100644 spine-ts/webgl/example/assets/tank.png create mode 100644 spine-ts/webgl/example/assets/vine.atlas create mode 100644 spine-ts/webgl/example/assets/vine.json create mode 100644 spine-ts/webgl/example/assets/vine.png create mode 100644 spine-ts/webgl/example/index.html create mode 100644 spine-ts/webgl/src/AssetManager.ts create mode 100644 spine-ts/webgl/src/Matrix4.ts create mode 100644 spine-ts/webgl/src/Mesh.ts create mode 100644 spine-ts/webgl/src/PolygonBatcher.ts create mode 100644 spine-ts/webgl/src/Shader.ts create mode 100644 spine-ts/webgl/src/SkeletonRenderer.ts create mode 100644 spine-ts/webgl/src/Texture.ts create mode 100644 spine-ts/webgl/src/TextureAtlas.ts create mode 100644 spine-ts/webgl/src/TextureAtlasAttachmentLoader.ts create mode 100644 spine-ts/webgl/src/Vector3.ts create mode 100644 spine-ts/webgl/src/WebGL.ts create mode 100644 spine-ts/widget/example/assets/raptor.atlas create mode 100644 spine-ts/widget/example/assets/raptor.json create mode 100644 spine-ts/widget/example/assets/raptor.png create mode 100644 spine-ts/widget/example/index.html create mode 100644 spine-ts/widget/src/Widget.ts diff --git a/LICENSE b/LICENSE index e14aae4a0..1acf35e29 100644 --- a/LICENSE +++ b/LICENSE @@ -1,17 +1,17 @@ Spine Runtimes Software License -Version 2.4 +Version 2.5 Copyright (c) 2013-2016, 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 +You are granted a perpetual, non-exclusive, non-sublicensable, and +non-transferable license to use, install, execute, and perform the Spine +Runtimes software and derivative works solely for personal or internal +use. Without the written permission of Esoteric Software (see Section 2 of +the Spine Software License Agreement), you may not (a) modify, translate, +adapt, or develop new applications using the Spine Runtimes or otherwise +create derivative works or improvements of the Spine Runtimes or (b) remove, +delete, alter, or obscure any trademarks or any copyright, trademark, patent, or other intellectual property or proprietary rights notices on or in the Software, including any copy thereof. Redistributions in binary or source form must include this license and terms. @@ -21,8 +21,8 @@ IMPLIED 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 +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF +USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/spine-starling/spine-starling-example/.settings/com.powerflasher.fdt.classpath b/spine-starling/spine-starling-example/.settings/com.powerflasher.fdt.classpath index c35f9e0ac..44fa916d4 100644 --- a/spine-starling/spine-starling-example/.settings/com.powerflasher.fdt.classpath +++ b/spine-starling/spine-starling-example/.settings/com.powerflasher.fdt.classpath @@ -3,7 +3,7 @@ lib frameworks/libs/player/{playerVersion}/playerglobal.swc src - lib/starling-2.0.1.swc lib/spine-as3.swc lib/spine-starling.swc + lib/starling-2.0.1.swc diff --git a/spine-ts/README.md b/spine-ts/README.md new file mode 100644 index 000000000..35c05319f --- /dev/null +++ b/spine-ts/README.md @@ -0,0 +1,69 @@ +# spine-ts + +The spine-ts runtime provides functionality to load and manipulate [Spine](http://esotericsoftware.com) skeletal animation data using TypeScript and JavaScript. spine-ts is split +up into multiple modules: + +1. **Core**: `core/`, the core classes to load and process Spine models +1. **WebGL**: `webgl/`, a self-contained WebGL backend, build on the core classes +1. **Widget**: `widget/`, a self-contained widget to easily display Spine animations on your website, build on core classes & WebGL backend. + +While the source code for the core library and backends is written in TypeScript, all code is compiled to easily consumable JavaScript. + +## 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. + +## Spine version + +spine-ts works with data exported from the latest Spine version. + +spine-ts supports all Spine features. + +spine-ts does not yet support loading the binary format. + +## Usage +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). +2. To use only the core library without rendering support, include the `build/spine-core.js` file in your project. +3. To use the WebGL backend, include the `spine-webgl.js` file in your project. +4. To use the Widget, include `spine-widget.js` file in your project. + +All `*.js` files are self-contained and include both the core and respective backend classes. + +If you write your app with TypeScript, additionally copy the corresponding `build/spine-*.d.ts` file to your project. + +## Example +To run the examples, spawn a light-weight web server in the root of spine-ts, then navigate to the respective +`index.html` file. E.g.: + +``` +cd spine-ts +python -m SimpleHTTPServer +```` + +Then open `http://localhost:8000/webgl/example` or `http://localhost:8000/widget/example` in your browser. + +## Development Setup +The spine-ts runtime and the various backends are implemented in TypeScript for greater maintainability and better tooling support. To +setup a development environment, follow these steps. + +1. Install [NPM](https://nodejs.org/en/download/) and make sure it's available on the command line +2. On the command line, Install the TypeScript compiler via `npm install -g typescript` +3. Install [Visual Studio Code](https://code.visualstudio.com/) +4. On the command line, change into the `spine-ts` directory +5. Start the TypeScript compiler in watcher mode for the backend you want to work on: + 1. **Core**: `tsc -w -p tsconfig.core.json`, builds `core/src`, outputs `build/spine-core.js|d.ts|js.map` + 2. **WebGL**: `tsc -w -p tsconfig.webgl.json`, builds `core/src` and `webgl/src`, outputs `build/spine-webgl.js|d.ts|js.map` + 3. **Widget**: `tsc -w -p tsconfig.widget.json`, builds `core/src` and `widget/src`, outputs `build/spine-widget.js|d.ts|js.map` +6. Open the `spine-ts` folder in Visual Studio Code. VS Code will use the `tsconfig.json` file all source files from core and all +backends for your development pleasure. The actual JavaScript output is still created by the command line TypeScript compiler process from the previous step. + +Each backend contains an `example/` folder with an `index.html` file that demonstrates the respective backend. For development, we +suggest to run a HTTP server in the root of `spine-ts`, e.g. + +``` +cd spine-ts +python -m SimpleHTTPServer +``` + +Then navigate to `http://localhost:8000/webgl/example` or `http://localhost:8000/widget/example` \ No newline at end of file diff --git a/spine-ts/build/spine-all.d.ts b/spine-ts/build/spine-all.d.ts new file mode 100644 index 000000000..bab571348 --- /dev/null +++ b/spine-ts/build/spine-all.d.ts @@ -0,0 +1,2502 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Animation { + name: string; + timelines: Array; + duration: number; + constructor(name: string, timelines: Array, duration: number); + apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array): void; + mix(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number): void; + static binarySearch(values: ArrayLike, target: number, step?: number): number; + static linearSearch(values: ArrayLike, target: number, step: number): number; + } + interface Timeline { + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + abstract class CurveTimeline implements Timeline { + static LINEAR: number; + static STEPPED: number; + static BEZIER: number; + static BEZIER_SIZE: number; + private curves; + constructor(frameCount: number); + getFrameCount(): number; + setLinear(frameIndex: number): void; + setStepped(frameIndex: number): void; + getCurveType(frameIndex: number): number; + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + getCurvePercent(frameIndex: number, percent: number): number; + abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class RotateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATION: number; + static ROTATION: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and angle of the specified keyframe. */ + setFrame(frameIndex: number, time: number, degrees: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class TranslateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_X: number; + static PREV_Y: number; + static X: number; + static Y: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ScaleTimeline extends TranslateTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ShearTimeline extends TranslateTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static R: number; + static G: number; + static B: number; + static A: number; + slotIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class AttachmentTimeline implements Timeline { + slotIndex: number; + frames: ArrayLike; + attachmentNames: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class EventTimeline implements Timeline { + frames: ArrayLike; + events: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time of the specified keyframe. */ + setFrame(frameIndex: number, event: Event): void; + /** Fires events for frames > lastTime and <= time. */ + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class DrawOrderTimeline implements Timeline { + frames: ArrayLike; + drawOrders: Array>; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + setFrame(frameIndex: number, time: number, drawOrder: Array): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class DeformTimeline extends CurveTimeline { + frames: ArrayLike; + frameVertices: Array>; + slotIndex: number; + attachment: VertexAttachment; + constructor(frameCount: number); + /** Sets the time of the specified keyframe. */ + setFrame(frameIndex: number, time: number, vertices: ArrayLike): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class IkConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_MIX: number; + static PREV_BEND_DIRECTION: number; + static MIX: number; + static BEND_DIRECTION: number; + ikConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time, mix and bend direction of the specified keyframe. */ + setFrame(frameIndex: number, time: number, mix: number, bendDirection: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class TransformConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static PREV_SCALE: number; + static PREV_SHEAR: number; + static ROTATE: number; + static TRANSLATE: number; + static SCALE: number; + static SHEAR: number; + transformConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and mixes of the specified keyframe. */ + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintPositionTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_VALUE: number; + static VALUE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, value: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintMixTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static ROTATE: number; + static TRANSLATE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and mixes of the specified keyframe. */ + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class AnimationState { + data: AnimationStateData; + tracks: TrackEntry[]; + events: Event[]; + listeners: AnimationStateListener[]; + timeScale: number; + constructor(data?: AnimationStateData); + update(delta: number): void; + apply(skeleton: Skeleton): void; + clearTracks(): void; + clearTrack(trackIndex: number): void; + freeAll(entry: TrackEntry): void; + expandToIndex(index: number): TrackEntry; + setCurrent(index: number, entry: TrackEntry): void; + /** @see #setAnimation(int, Animation, boolean) */ + setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; + /** Set the current animation. Any queued animations are cleared. */ + setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; + /** {@link #addAnimation(int, Animation, boolean, float)} */ + addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; + /** @return May be null. */ + getCurrent(trackIndex: number): TrackEntry; + /** Adds a listener to receive events for all animations. */ + addListener(listener: AnimationStateListener): void; + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + removeListener(listener: AnimationStateListener): void; + clearListeners(): void; + } + class TrackEntry { + next: TrackEntry; + previous: TrackEntry; + animation: Animation; + loop: boolean; + delay: number; + time: number; + lastTime: number; + endTime: number; + timeScale: number; + mixTime: number; + mixDuration: number; + listener: AnimationStateListener; + mix: number; + reset(): void; + /** Returns true if the current time is greater than the end time, regardless of looping. */ + isComplete(): boolean; + } + abstract class AnimationStateAdapter implements AnimationStateListener { + event(trackIndex: number, event: Event): void; + complete(trackIndex: number, loopCount: number): void; + start(trackIndex: number): void; + end(trackIndex: number): void; + } + interface AnimationStateListener { + /** Invoked when the current animation triggers an event. */ + event(trackIndex: number, event: Event): void; + /** Invoked when the current animation has completed. + * @param loopCount The number of times the animation reached the end. */ + complete(trackIndex: number, loopCount: number): void; + /** Invoked just after the current animation is set. */ + start(trackIndex: number): void; + /** Invoked just before the current animation is replaced. */ + end(trackIndex: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class AnimationStateData { + skeletonData: SkeletonData; + animationToMixTime: Map; + defaultMix: number; + constructor(skeletonData: SkeletonData); + setMix(fromName: string, toName: string, duration: number): void; + setMixWith(from: Animation, to: Animation, duration: number): void; + getMix(from: Animation, to: Animation): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + enum BlendMode { + Normal = 0, + Additive = 1, + Multiply = 2, + Screen = 3, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Bone implements Updatable { + data: BoneData; + skeleton: Skeleton; + parent: Bone; + children: Bone[]; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + appliedRotation: number; + a: number; + b: number; + worldX: number; + c: number; + d: number; + worldY: number; + worldSignX: number; + worldSignY: number; + sorted: boolean; + /** @param parent May be null. */ + constructor(data: BoneData, skeleton: Skeleton, parent: Bone); + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + update(): void; + /** Computes the world transform using the parent bone and this bone's local transform. */ + updateWorldTransform(): void; + /** Computes the world transform using the parent bone and the specified local transform. */ + updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; + setToSetupPose(): void; + getWorldRotationX(): number; + getWorldRotationY(): number; + getWorldScaleX(): number; + getWorldScaleY(): number; + worldToLocalRotationX(): number; + worldToLocalRotationY(): number; + rotateWorld(degrees: number): void; + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + updateLocalTransform(): void; + worldToLocal(world: Vector2): Vector2; + localToWorld(local: Vector2): Vector2; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class BoneData { + index: number; + name: string; + parent: BoneData; + length: number; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + inheritRotation: boolean; + inheritScale: boolean; + constructor(index: number, name: string, parent: BoneData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + constructor(time: number, data: EventData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class IkConstraint implements Updatable { + data: IkConstraintData; + bones: Array; + target: Bone; + mix: number; + bendDirection: number; + level: number; + constructor(data: IkConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + apply1(bone: Bone, targetX: number, targetY: number, alpha: number): void; + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class IkConstraintData { + name: string; + bones: BoneData[]; + target: BoneData; + bendDirection: number; + mix: number; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathConstraint implements Updatable { + static NONE: number; + static BEFORE: number; + static AFTER: number; + data: PathConstraintData; + bones: Array; + target: Slot; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + spaces: number[]; + positions: number[]; + world: number[]; + curves: number[]; + lengths: number[]; + segments: number[]; + constructor(data: PathConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; + addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathConstraintData { + name: string; + bones: BoneData[]; + target: SlotData; + positionMode: PositionMode; + spacingMode: SpacingMode; + rotateMode: RotateMode; + offsetRotation: number; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + constructor(name: string); + } + enum PositionMode { + Fixed = 0, + Percent = 1, + } + enum SpacingMode { + Length = 0, + Fixed = 1, + Percent = 2, + } + enum RotateMode { + Tangent = 0, + Chain = 1, + ChainScale = 2, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Skeleton { + data: SkeletonData; + bones: Array; + slots: Array; + drawOrder: Array; + ikConstraints: Array; + ikConstraintsSorted: Array; + transformConstraints: Array; + pathConstraints: Array; + _updateCache: Updatable[]; + skin: Skin; + color: Color; + time: number; + flipX: boolean; + flipY: boolean; + x: number; + y: number; + constructor(data: SkeletonData); + updateCache(): void; + sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; + sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; + sortBone(bone: Bone): void; + sortReset(bones: Array): void; + /** Updates the world transform for each bone and applies constraints. */ + updateWorldTransform(): void; + /** Sets the bones, constraints, and slots to their setup pose values. */ + setToSetupPose(): void; + /** Sets the bones and constraints to their setup pose values. */ + setBonesToSetupPose(): void; + setSlotsToSetupPose(): void; + /** @return May return null. */ + getRootBone(): Bone; + /** @return May be null. */ + findBone(boneName: string): Bone; + /** @return -1 if the bone was not found. */ + findBoneIndex(boneName: string): number; + /** @return May be null. */ + findSlot(slotName: string): Slot; + /** @return -1 if the bone was not found. */ + findSlotIndex(slotName: string): number; + /** Sets a skin by name. + * @see #setSkin(Skin) */ + setSkinByName(skinName: string): void; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + setSkin(newSkin: Skin): void; + /** @return May be null. */ + getAttachmentByName(slotName: string, attachmentName: string): Attachment; + /** @return May be null. */ + getAttachment(slotIndex: number, attachmentName: string): Attachment; + /** @param attachmentName May be null. */ + setAttachment(slotName: string, attachmentName: string): void; + /** @return May be null. */ + findIkConstraint(constraintName: string): IkConstraint; + /** @return May be null. */ + findTransformConstraint(constraintName: string): TransformConstraint; + /** @return May be null. */ + findPathConstraint(constraintName: string): PathConstraint; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + getBounds(offset: Vector2, size: Vector2): void; + update(delta: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonBounds { + minX: number; + minY: number; + maxX: number; + maxY: number; + boundingBoxes: BoundingBoxAttachment[]; + polygons: ArrayLike[]; + private _polygonPool; + update(skeleton: Skeleton, updateAabb: boolean): void; + aabbCompute(): void; + /** Returns true if the axis aligned bounding box contains the point. */ + aabbContainsPoint(x: number, y: number): boolean; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; + /** 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. */ + containsPoint(x: number, y: number): BoundingBoxAttachment; + /** Returns true if the polygon contains the point. */ + containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; + /** Returns the first bounding box attachment that contains any part of 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. */ + intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; + /** Returns true if the polygon contains any part of the line segment. */ + intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns the polygon for the specified bounding box, or null. */ + getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonData { + name: string; + bones: BoneData[]; + slots: SlotData[]; + skins: Skin[]; + defaultSkin: Skin; + events: EventData[]; + animations: Animation[]; + ikConstraints: IkConstraintData[]; + transformConstraints: TransformConstraintData[]; + pathConstraints: PathConstraintData[]; + width: number; + height: number; + version: string; + hash: string; + imagesPath: string; + findBone(boneName: string): BoneData; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): SlotData; + findSlotIndex(slotName: string): number; + findSkin(skinName: string): Skin; + findEvent(eventDataName: string): EventData; + findAnimation(animationName: string): Animation; + findIkConstraint(constraintName: string): IkConstraintData; + findTransformConstraint(constraintName: string): TransformConstraintData; + findPathConstraint(constraintName: string): PathConstraintData; + findPathConstraintIndex(pathConstraintName: string): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonJson { + attachmentLoader: AttachmentLoader; + scale: number; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(json: string): SkeletonData; + readAttachment(map: any, skin: Skin, slotIndex: number, name: string): Attachment; + readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; + readAnimation(map: any, name: string, skeletonData: SkeletonData): void; + readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; + getValue(map: any, prop: string, defaultValue: any): any; + static blendModeFromString(str: string): BlendMode; + static positionModeFromString(str: string): PositionMode; + static spacingModeFromString(str: string): SpacingMode; + static rotateModeFromString(str: string): RotateMode; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Skin { + name: string; + attachments: Map[]; + constructor(name: string); + addAttachment(slotIndex: number, name: string, attachment: Attachment): void; + /** @return May be null. */ + getAttachment(slotIndex: number, name: string): Attachment; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + attachAll(skeleton: Skeleton, oldSkin: Skin): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Slot { + data: SlotData; + bone: Bone; + color: Color; + private attachment; + private attachmentTime; + attachmentVertices: number[]; + constructor(data: SlotData, bone: Bone); + /** @return May be null. */ + getAttachment(): Attachment; + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + setAttachment(attachment: Attachment): void; + setAttachmentTime(time: number): void; + /** Returns the time since the attachment was set. */ + getAttachmentTime(): number; + setToSetupPose(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SlotData { + index: number; + name: string; + boneData: BoneData; + color: Color; + attachmentName: string; + blendMode: BlendMode; + constructor(index: number, name: string, boneData: BoneData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TransformConstraint implements Updatable { + data: TransformConstraintData; + bones: Array; + target: Bone; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + temp: Vector2; + constructor(data: TransformConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TransformConstraintData { + name: string; + bones: BoneData[]; + target: BoneData; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + offsetRotation: number; + offsetX: number; + offsetY: number; + offsetScaleX: number; + offsetScaleY: number; + offsetShearY: number; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface Updatable { + update(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface Map { + [key: string]: T; + } + interface Disposable { + dispose(): void; + } + class Color { + r: number; + g: number; + b: number; + a: number; + constructor(r?: number, g?: number, b?: number, a?: number); + set(r: number, g: number, b: number, a: number): void; + setFromColor(c: Color): void; + setFromString(hex: string): void; + add(r: number, g: number, b: number, a: number): void; + clamp(): this; + } + class MathUtils { + static PI: number; + static PI2: number; + static radiansToDegrees: number; + static radDeg: number; + static degreesToRadians: number; + static degRad: number; + static clamp(value: number, min: number, max: number): number; + static cosDeg(degrees: number): number; + static sinDeg(degrees: number): number; + static signum(value: number): number; + static toInt(x: number): number; + } + class Utils { + static SUPPORTS_TYPED_ARRAYS: boolean; + static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; + static setArraySize(array: Array, size: number, value?: any): Array; + static newArray(size: number, defaultValue: T): Array; + static newFloatArray(size: number): ArrayLike; + static toFloatArray(array: Array): Float32Array | number[]; + } + class Pool { + private _items; + private _instantiator; + constructor(instantiator: () => T); + obtain(): T; + free(item: T): void; + freeAll(items: ArrayLike): void; + clear(): void; + } + class Vector2 { + x: number; + y: number; + constructor(x?: number, y?: number); + set(x: number, y: number): Vector2; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + abstract class Attachment { + name: string; + constructor(name: string); + } + abstract class VertexAttachment extends Attachment { + bones: Array; + vertices: ArrayLike; + worldVerticesLength: number; + constructor(name: string); + computeWorldVertices(slot: Slot, worldVertices: ArrayLike): void; + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + computeWorldVerticesWith(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number): void; + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + applyDeform(sourceAttachment: VertexAttachment): boolean; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface AttachmentLoader { + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + enum AttachmentType { + Region = 0, + BoundingBox = 1, + Mesh = 2, + LinkedMesh = 3, + Path = 4, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class BoundingBoxAttachment extends VertexAttachment { + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class MeshAttachment extends VertexAttachment { + region: TextureRegion; + path: string; + regionUVs: ArrayLike; + worldVertices: ArrayLike; + triangles: Array; + color: Color; + hullLength: number; + private _parentMesh; + inheritDeform: boolean; + tempColor: Color; + constructor(name: string); + updateUVs(): void; + /** @return The updated world vertices. */ + updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike; + applyDeform(sourceAttachment: VertexAttachment): boolean; + getParentMesh(): MeshAttachment; + /** @param parentMesh May be null. */ + setParentMesh(parentMesh: MeshAttachment): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathAttachment extends VertexAttachment { + lengths: Array; + closed: boolean; + constantSpeed: boolean; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class RegionAttachment extends Attachment { + static OX1: number; + static OY1: number; + static OX2: number; + static OY2: number; + static OX3: number; + static OY3: number; + static OX4: number; + static OY4: number; + static X1: number; + static Y1: number; + static C1R: number; + static C1G: number; + static C1B: number; + static C1A: number; + static U1: number; + static V1: number; + static X2: number; + static Y2: number; + static C2R: number; + static C2G: number; + static C2B: number; + static C2A: number; + static U2: number; + static V2: number; + static X3: number; + static Y3: number; + static C3R: number; + static C3G: number; + static C3B: number; + static C3A: number; + static U3: number; + static V3: number; + static X4: number; + static Y4: number; + static C4R: number; + static C4G: number; + static C4B: number; + static C4A: number; + static U4: number; + static V4: number; + x: number; + y: number; + scaleX: number; + scaleY: number; + rotation: number; + width: number; + height: number; + color: Color; + path: string; + rendererObject: any; + region: TextureRegion; + offset: ArrayLike; + vertices: ArrayLike; + tempColor: Color; + constructor(name: string); + setRegion(region: TextureRegion): void; + updateOffset(): void; + updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TextureRegion { + renderObject: any; + u: number; + v: number; + u2: number; + v2: number; + width: number; + height: number; + rotate: boolean; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class AssetManager implements Disposable { + private _gl; + private _assets; + private _errors; + private _toLoad; + private _loaded; + constructor(gl: WebGLRenderingContext); + loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; + loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + get(path: string): string | Texture; + remove(path: string): void; + removeAll(): void; + isLoadingComplete(): boolean; + toLoad(): number; + loaded(): number; + dispose(): void; + hasErrors(): boolean; + errors(): Map; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + const M00: number; + const M01: number; + const M02: number; + const M03: number; + const M10: number; + const M11: number; + const M12: number; + const M13: number; + const M20: number; + const M21: number; + const M22: number; + const M23: number; + const M30: number; + const M31: number; + const M32: number; + const M33: number; + class Matrix4 { + temp: Float32Array; + values: Float32Array; + constructor(); + set(values: ArrayLike): Matrix4; + transpose(): Matrix4; + identity(): Matrix4; + invert(): Matrix4; + determinant(): number; + translate(x: number, y: number, z: number): Matrix4; + copy(): Matrix4; + projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; + ortho2d(x: number, y: number, width: number, height: number): Matrix4; + ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; + multiply(matrix: Matrix4): Matrix4; + multiplyLeft(matrix: Matrix4): Matrix4; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Mesh implements Disposable { + private _attributes; + private _gl; + private _vertices; + private _verticesBuffer; + private _verticesLength; + private _dirtyVertices; + private _indices; + private _indicesBuffer; + private _indicesLength; + private _dirtyIndices; + private _elementsPerVertex; + attributes(): VertexAttribute[]; + maxVertices(): number; + numVertices(): number; + setVerticesLength(length: number): void; + vertices(): Float32Array; + maxIndices(): number; + numIndices(): number; + setIndicesLength(length: number): void; + indices(): Uint16Array; + constructor(gl: WebGLRenderingContext, _attributes: VertexAttribute[], maxVertices: number, maxIndices: number); + setVertices(vertices: Array): void; + setIndices(indices: Array): void; + draw(shader: Shader, primitiveType: number): void; + drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; + bind(shader: Shader): void; + unbind(shader: Shader): void; + private update(); + dispose(): void; + } + class VertexAttribute { + name: string; + type: VertexAttributeType; + numElements: number; + constructor(name: string, type: VertexAttributeType, numElements: number); + } + class Position2Attribute extends VertexAttribute { + constructor(); + } + class Position3Attribute extends VertexAttribute { + constructor(); + } + class TexCoordAttribute extends VertexAttribute { + constructor(unit?: number); + } + class ColorAttribute extends VertexAttribute { + constructor(); + } + enum VertexAttributeType { + Float = 0, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class PolygonBatcher { + private _gl; + private _drawCalls; + private _drawing; + private _mesh; + private _shader; + private _lastTexture; + private _verticesLength; + private _indicesLength; + private _srcBlend; + private _dstBlend; + constructor(gl: WebGLRenderingContext, maxVertices?: number); + begin(shader: Shader): void; + setBlendMode(srcBlend: number, dstBlend: number): void; + draw(texture: Texture, vertices: ArrayLike, indices: Array): void; + private flush(); + end(): void; + drawCalls(): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Shader implements Disposable { + private _vertexShader; + private _fragmentShader; + static MVP_MATRIX: string; + static POSITION: string; + static COLOR: string; + static TEXCOORDS: string; + static SAMPLER: string; + private _gl; + private _vs; + private _fs; + private _program; + private _tmp2x2; + private _tmp3x3; + private _tmp4x4; + program(): WebGLProgram; + vertexShader(): string; + fragmentShader(): string; + constructor(gl: WebGLRenderingContext, _vertexShader: string, _fragmentShader: string); + private compile(); + private compileShader(type, source); + private compileProgram(vs, fs); + bind(): void; + unbind(): void; + setUniformi(uniform: string, value: number): void; + setUniformf(uniform: string, value: number): void; + setUniform2f(uniform: string, value: number, value2: number): void; + setUniform3f(uniform: string, value: number, value2: number, value3: number): void; + setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; + setUniform2x2f(uniform: string, value: ArrayLike): void; + setUniform3x3f(uniform: string, value: ArrayLike): void; + setUniform4x4f(uniform: string, value: ArrayLike): void; + getUniformLocation(uniform: string): WebGLUniformLocation; + getAttributeLocation(attribute: string): number; + dispose(): void; + static newColoredTextured(gl: WebGLRenderingContext): Shader; + static newColored(gl: WebGLRenderingContext): Shader; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class SkeletonRenderer { + static QUAD_TRIANGLES: number[]; + premultipliedAlpha: boolean; + private _gl; + constructor(gl: WebGLRenderingContext); + draw(batcher: PolygonBatcher, skeleton: Skeleton): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Texture implements Disposable { + private _gl; + private _texture; + private _image; + private _boundUnit; + constructor(gl: WebGLRenderingContext, image: HTMLImageElement, useMipMaps?: boolean); + getImage(): HTMLImageElement; + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + update(useMipMaps: boolean): void; + bind(unit?: number): void; + unbind(): void; + dispose(): void; + static filterFromString(text: string): TextureFilter; + static wrapFromString(text: string): TextureWrap; + } + enum TextureFilter { + Nearest, + Linear, + MipMap, + MipMapNearestNearest, + MipMapLinearNearest, + MipMapNearestLinear, + MipMapLinearLinear, + } + enum TextureWrap { + MirroredRepeat, + ClampToEdge, + Repeat, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class TextureAtlas implements Disposable { + pages: TextureAtlasPage[]; + regions: TextureAtlasRegion[]; + constructor(atlasText: string, textureLoader: (path: string) => Texture); + private load(atlasText, textureLoader); + findRegion(name: string): TextureAtlasRegion; + dispose(): void; + } + class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + } + class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + index: number; + rotate: boolean; + texture: Texture; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class TextureAtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + constructor(atlas: TextureAtlas); + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Vector3 { + x: number; + y: number; + z: number; + set(x: number, y: number, z: number): Vector3; + add(v: Vector3): Vector3; + sub(v: Vector3): Vector3; + scale(s: number): Vector3; + normalize(): Vector3; + cross(v: Vector3): Vector3; + multiply(matrix: Matrix4): Vector3; + project(matrix: Matrix4): Vector3; + dot(v: Vector3): number; + length(): number; + distance(v: Vector3): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + function getSourceGLBlendMode(gl: WebGLRenderingContext, blendMode: BlendMode, premultipliedAlpha?: boolean): number; + function getDestGLBlendMode(gl: WebGLRenderingContext, blendMode: BlendMode): number; +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SpineWidget { + skeleton: Skeleton; + state: AnimationState; + gl: WebGLRenderingContext; + canvas: HTMLCanvasElement; + private _config; + private _assetManager; + private _shader; + private _batcher; + private _mvp; + private _skeletonRenderer; + private _paused; + private _lastFrameTime; + private _backgroundColor; + private _loaded; + constructor(element: Element | string, config: SpineWidgetConfig); + private validateConfig(config); + private load(); + private render(); + pause(): void; + play(): void; + isPlaying(): boolean; + setAnimation(animationName: string): void; + static loadWidgets(): void; + static loadWidget(widget: Element): void; + static pageLoaded: boolean; + private static ready(); + static setupDOMListener(): void; + } + class SpineWidgetConfig { + json: string; + atlas: string; + animation: string; + imagesPath: string; + skin: string; + loop: boolean; + scale: number; + x: number; + y: number; + width: number; + height: number; + backgroundColor: string; + premultipliedAlpha: boolean; + success: (widget: SpineWidget) => void; + error: (widget: SpineWidget, msg: string) => void; + } +} diff --git a/spine-ts/build/spine-all.js b/spine-ts/build/spine-all.js new file mode 100644 index 000000000..5ccb40c8d --- /dev/null +++ b/spine-ts/build/spine-all.js @@ -0,0 +1,6877 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var spine; +(function (spine) { + var Animation = (function () { + function Animation(name, timelines, duration) { + if (name == null) + throw new Error("name cannot be null."); + if (timelines == null) + throw new Error("timelines cannot be null."); + this.name = name; + this.timelines = timelines; + this.duration = duration; + } + Animation.prototype.apply = function (skeleton, lastTime, time, loop, events) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, 1); + }; + Animation.prototype.mix = function (skeleton, lastTime, time, loop, events, alpha) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha); + }; + Animation.binarySearch = function (values, target, step) { + if (step === void 0) { step = 1; } + var low = 0; + var high = values.length / step - 2; + if (high == 0) + return step; + var current = high >>> 1; + while (true) { + if (values[(current + 1) * step] <= target) + low = current + 1; + else + high = current; + if (low == high) + return (low + 1) * step; + current = (low + high) >>> 1; + } + }; + Animation.linearSearch = function (values, target, step) { + for (var i = 0, last = values.length - step; i <= last; i += step) + if (values[i] > target) + return i; + return -1; + }; + return Animation; + }()); + spine.Animation = Animation; + var CurveTimeline = (function () { + function CurveTimeline(frameCount) { + if (frameCount <= 0) + throw new Error("frameCount must be > 0: " + frameCount); + this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); + } + CurveTimeline.prototype.getFrameCount = function () { + return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; + }; + CurveTimeline.prototype.setLinear = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; + }; + CurveTimeline.prototype.setStepped = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; + }; + CurveTimeline.prototype.getCurveType = function (frameIndex) { + var index = frameIndex * CurveTimeline.BEZIER_SIZE; + if (index == this.curves.length) + return CurveTimeline.LINEAR; + var type = this.curves[index]; + if (type == CurveTimeline.LINEAR) + return CurveTimeline.LINEAR; + if (type == CurveTimeline.STEPPED) + return CurveTimeline.STEPPED; + return CurveTimeline.BEZIER; + }; + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + CurveTimeline.prototype.setCurve = function (frameIndex, cx1, cy1, cx2, cy2) { + var tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; + var dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; + var ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; + var dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var curves = this.curves; + curves[i++] = CurveTimeline.BEZIER; + var x = dfx, y = dfy; + for (var n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } + }; + CurveTimeline.prototype.getCurvePercent = function (frameIndex, percent) { + percent = spine.MathUtils.clamp(percent, 0, 1); + var curves = this.curves; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var type = curves[i]; + if (type == CurveTimeline.LINEAR) + return percent; + if (type == CurveTimeline.STEPPED) + return 0; + i++; + var x = 0; + for (var start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + x = curves[i]; + if (x >= percent) { + var prevX = void 0, prevY = void 0; + if (i == start) { + prevX = 0; + prevY = 0; + } + else { + prevX = curves[i - 2]; + prevY = curves[i - 1]; + } + return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + var y = curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1. + }; + CurveTimeline.LINEAR = 0; + CurveTimeline.STEPPED = 1; + CurveTimeline.BEZIER = 2; + CurveTimeline.BEZIER_SIZE = 10 * 2 - 1; + return CurveTimeline; + }()); + spine.CurveTimeline = CurveTimeline; + var RotateTimeline = (function (_super) { + __extends(RotateTimeline, _super); + function RotateTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount << 1); + } + /** Sets the time and angle of the specified keyframe. */ + RotateTimeline.prototype.setFrame = function (frameIndex, time, degrees) { + frameIndex <<= 1; + this.frames[frameIndex] = time; + this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; + }; + RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { + var amount_1 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation; + while (amount_1 > 180) + amount_1 -= 360; + while (amount_1 < -180) + amount_1 += 360; + bone.rotation += amount_1 * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); + var prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); + var amount = frames[frame + RotateTimeline.ROTATION] - prevRotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + amount = bone.data.rotation + (prevRotation + amount * percent) - bone.rotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + bone.rotation += amount * alpha; + }; + RotateTimeline.ENTRIES = 2; + RotateTimeline.PREV_TIME = -2; + RotateTimeline.PREV_ROTATION = -1; + RotateTimeline.ROTATION = 1; + return RotateTimeline; + }(CurveTimeline)); + spine.RotateTimeline = RotateTimeline; + var TranslateTimeline = (function (_super) { + __extends(TranslateTimeline, _super); + function TranslateTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + TranslateTimeline.prototype.setFrame = function (frameIndex, time, x, y) { + frameIndex *= TranslateTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TranslateTimeline.X] = x; + this.frames[frameIndex + TranslateTimeline.Y] = y; + }; + TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { + bone.x += (bone.data.x + frames[frames.length + TranslateTimeline.PREV_X] - bone.x) * alpha; + bone.y += (bone.data.y + frames[frames.length + TranslateTimeline.PREV_Y] - bone.y) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); + var prevX = frames[frame + TranslateTimeline.PREV_X]; + var prevY = frames[frame + TranslateTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); + bone.x += (bone.data.x + prevX + (frames[frame + TranslateTimeline.X] - prevX) * percent - bone.x) * alpha; + bone.y += (bone.data.y + prevY + (frames[frame + TranslateTimeline.Y] - prevY) * percent - bone.y) * alpha; + }; + TranslateTimeline.ENTRIES = 3; + TranslateTimeline.PREV_TIME = -3; + TranslateTimeline.PREV_X = -2; + TranslateTimeline.PREV_Y = -1; + TranslateTimeline.X = 1; + TranslateTimeline.Y = 2; + return TranslateTimeline; + }(CurveTimeline)); + spine.TranslateTimeline = TranslateTimeline; + var ScaleTimeline = (function (_super) { + __extends(ScaleTimeline, _super); + function ScaleTimeline(frameCount) { + _super.call(this, frameCount); + } + ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { + bone.scaleX += (bone.data.scaleX * frames[frames.length + ScaleTimeline.PREV_X] - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * frames[frames.length + ScaleTimeline.PREV_Y] - bone.scaleY) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); + var prevX = frames[frame + ScaleTimeline.PREV_X]; + var prevY = frames[frame + ScaleTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); + bone.scaleX += (bone.data.scaleX * (prevX + (frames[frame + ScaleTimeline.X] - prevX) * percent) - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * (prevY + (frames[frame + ScaleTimeline.Y] - prevY) * percent) - bone.scaleY) * alpha; + }; + return ScaleTimeline; + }(TranslateTimeline)); + spine.ScaleTimeline = ScaleTimeline; + var ShearTimeline = (function (_super) { + __extends(ShearTimeline, _super); + function ShearTimeline(frameCount) { + _super.call(this, frameCount); + } + ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { + bone.shearX += (bone.data.shearX + frames[frames.length + ShearTimeline.PREV_X] - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + frames[frames.length + ShearTimeline.PREV_Y] - bone.shearY) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); + var prevX = frames[frame + ShearTimeline.PREV_X]; + var prevY = frames[frame + ShearTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); + bone.shearX += (bone.data.shearX + (prevX + (frames[frame + ShearTimeline.X] - prevX) * percent) - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + (prevY + (frames[frame + ShearTimeline.Y] - prevY) * percent) - bone.shearY) * alpha; + }; + return ShearTimeline; + }(TranslateTimeline)); + spine.ShearTimeline = ShearTimeline; + var ColorTimeline = (function (_super) { + __extends(ColorTimeline, _super); + function ColorTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + ColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a) { + frameIndex *= ColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + ColorTimeline.R] = r; + this.frames[frameIndex + ColorTimeline.G] = g; + this.frames[frameIndex + ColorTimeline.B] = b; + this.frames[frameIndex + ColorTimeline.A] = a; + }; + ColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var r = 0, g = 0, b = 0, a = 0; + if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { + var i = frames.length; + r = frames[i + ColorTimeline.PREV_R]; + g = frames[i + ColorTimeline.PREV_G]; + b = frames[i + ColorTimeline.PREV_B]; + a = frames[i + ColorTimeline.PREV_A]; + } + else { + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); + r = frames[frame + ColorTimeline.PREV_R]; + g = frames[frame + ColorTimeline.PREV_G]; + b = frames[frame + ColorTimeline.PREV_B]; + a = frames[frame + ColorTimeline.PREV_A]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + ColorTimeline.R] - r) * percent; + g += (frames[frame + ColorTimeline.G] - g) * percent; + b += (frames[frame + ColorTimeline.B] - b) * percent; + a += (frames[frame + ColorTimeline.A] - a) * percent; + } + var color = skeleton.slots[this.slotIndex].color; + if (alpha < 1) + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + else + color.set(r, g, b, a); + }; + ColorTimeline.ENTRIES = 5; + ColorTimeline.PREV_TIME = -5; + ColorTimeline.PREV_R = -4; + ColorTimeline.PREV_G = -3; + ColorTimeline.PREV_B = -2; + ColorTimeline.PREV_A = -1; + ColorTimeline.R = 1; + ColorTimeline.G = 2; + ColorTimeline.B = 3; + ColorTimeline.A = 4; + return ColorTimeline; + }(CurveTimeline)); + spine.ColorTimeline = ColorTimeline; + var AttachmentTimeline = (function () { + function AttachmentTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.attachmentNames = new Array(frameCount); + } + AttachmentTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time and value of the specified keyframe. */ + AttachmentTimeline.prototype.setFrame = function (frameIndex, time, attachmentName) { + this.frames[frameIndex] = time; + this.attachmentNames[frameIndex] = attachmentName; + }; + AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frameIndex = 0; + if (time >= frames[frames.length - 1]) + frameIndex = frames.length - 1; + else + frameIndex = Animation.binarySearch(frames, time, 1) - 1; + var attachmentName = this.attachmentNames[frameIndex]; + skeleton.slots[this.slotIndex] + .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + }; + return AttachmentTimeline; + }()); + spine.AttachmentTimeline = AttachmentTimeline; + var EventTimeline = (function () { + function EventTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.events = new Array(frameCount); + } + EventTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time of the specified keyframe. */ + EventTimeline.prototype.setFrame = function (frameIndex, event) { + this.frames[frameIndex] = event.time; + this.events[frameIndex] = event; + }; + /** Fires events for frames > lastTime and <= time. */ + EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + if (firedEvents == null) + return; + var frames = this.frames; + var frameCount = this.frames.length; + if (lastTime > time) { + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha); + lastTime = -1; + } + else if (lastTime >= frames[frameCount - 1]) + return; + if (time < frames[0]) + return; // Time is before first frame. + var frame = 0; + if (lastTime < frames[0]) + frame = 0; + else { + frame = Animation.binarySearch(frames, lastTime); + var frameTime = frames[frame]; + while (frame > 0) { + if (frames[frame - 1] != frameTime) + break; + frame--; + } + } + for (; frame < frameCount && time >= frames[frame]; frame++) + firedEvents.push(this.events[frame]); + }; + return EventTimeline; + }()); + spine.EventTimeline = EventTimeline; + var DrawOrderTimeline = (function () { + function DrawOrderTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.drawOrders = new Array(frameCount); + } + DrawOrderTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + DrawOrderTimeline.prototype.setFrame = function (frameIndex, time, drawOrder) { + this.frames[frameIndex] = time; + this.drawOrders[frameIndex] = drawOrder; + }; + DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frame = 0; + if (time >= frames[frames.length - 1]) + frame = frames.length - 1; + else + frame = Animation.binarySearch(frames, time) - 1; + var drawOrder = skeleton.drawOrder; + var slots = skeleton.slots; + var drawOrderToSetupIndex = this.drawOrders[frame]; + if (drawOrderToSetupIndex == null) + spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); + else { + for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) + drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + } + }; + return DrawOrderTimeline; + }()); + spine.DrawOrderTimeline = DrawOrderTimeline; + var DeformTimeline = (function (_super) { + __extends(DeformTimeline, _super); + function DeformTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount); + this.frameVertices = new Array(frameCount); + } + /** Sets the time of the specified keyframe. */ + DeformTimeline.prototype.setFrame = function (frameIndex, time, vertices) { + this.frames[frameIndex] = time; + this.frameVertices[frameIndex] = vertices; + }; + DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var slot = skeleton.slots[this.slotIndex]; + var slotAttachment = slot.getAttachment(); + if (!(slotAttachment instanceof spine.VertexAttachment) || !slotAttachment.applyDeform(this.attachment)) + return; + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frameVertices = this.frameVertices; + var vertexCount = frameVertices[0].length; + var verticesArray = slot.attachmentVertices; + if (verticesArray.length != vertexCount) + alpha = 1; // Don't mix from uninitialized slot vertices. + var vertices = spine.Utils.setArraySize(verticesArray, vertexCount); + if (time >= frames[frames.length - 1]) { + var lastVertices = frameVertices[frames.length - 1]; + if (alpha < 1) { + for (var i = 0; i < vertexCount; i++) + vertices[i] += (lastVertices[i] - vertices[i]) * alpha; + } + else + spine.Utils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount); + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time); + var prevVertices = frameVertices[frame - 1]; + var nextVertices = frameVertices[frame]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); + if (alpha < 1) { + for (var i = 0; i < vertexCount; i++) { + var prev = prevVertices[i]; + vertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha; + } + } + else { + for (var i = 0; i < vertexCount; i++) { + var prev = prevVertices[i]; + vertices[i] = prev + (nextVertices[i] - prev) * percent; + } + } + }; + return DeformTimeline; + }(CurveTimeline)); + spine.DeformTimeline = DeformTimeline; + var IkConstraintTimeline = (function (_super) { + __extends(IkConstraintTimeline, _super); + function IkConstraintTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); + } + /** Sets the time, mix and bend direction of the specified keyframe. */ + IkConstraintTimeline.prototype.setFrame = function (frameIndex, time, mix, bendDirection) { + frameIndex *= IkConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; + this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; + }; + IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; + if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { + constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]); + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); + var mix = frames[frame + IkConstraintTimeline.PREV_MIX]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); + constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]); + }; + IkConstraintTimeline.ENTRIES = 3; + IkConstraintTimeline.PREV_TIME = -3; + IkConstraintTimeline.PREV_MIX = -2; + IkConstraintTimeline.PREV_BEND_DIRECTION = -1; + IkConstraintTimeline.MIX = 1; + IkConstraintTimeline.BEND_DIRECTION = 2; + return IkConstraintTimeline; + }(CurveTimeline)); + spine.IkConstraintTimeline = IkConstraintTimeline; + var TransformConstraintTimeline = (function (_super) { + __extends(TransformConstraintTimeline, _super); + function TransformConstraintTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); + } + /** Sets the time and mixes of the specified keyframe. */ + TransformConstraintTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { + frameIndex *= TransformConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; + this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; + this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; + }; + TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; + if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { + var i = frames.length; + constraint.rotateMix += (frames[i + TransformConstraintTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + TransformConstraintTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + constraint.scaleMix += (frames[i + TransformConstraintTimeline.PREV_SCALE] - constraint.scaleMix) * alpha; + constraint.shearMix += (frames[i + TransformConstraintTimeline.PREV_SHEAR] - constraint.shearMix) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); + var rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; + var translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; + var scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; + var shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; + constraint.rotateMix += (rotate + (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + constraint.scaleMix += (scale + (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent - constraint.scaleMix) * alpha; + constraint.shearMix += (shear + (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent - constraint.shearMix) * alpha; + }; + TransformConstraintTimeline.ENTRIES = 5; + TransformConstraintTimeline.PREV_TIME = -5; + TransformConstraintTimeline.PREV_ROTATE = -4; + TransformConstraintTimeline.PREV_TRANSLATE = -3; + TransformConstraintTimeline.PREV_SCALE = -2; + TransformConstraintTimeline.PREV_SHEAR = -1; + TransformConstraintTimeline.ROTATE = 1; + TransformConstraintTimeline.TRANSLATE = 2; + TransformConstraintTimeline.SCALE = 3; + TransformConstraintTimeline.SHEAR = 4; + return TransformConstraintTimeline; + }(CurveTimeline)); + spine.TransformConstraintTimeline = TransformConstraintTimeline; + var PathConstraintPositionTimeline = (function (_super) { + __extends(PathConstraintPositionTimeline, _super); + function PathConstraintPositionTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + PathConstraintPositionTimeline.prototype.setFrame = function (frameIndex, time, value) { + frameIndex *= PathConstraintPositionTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; + }; + PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) { + var i = frames.length; + constraint.position += (frames[i + PathConstraintPositionTimeline.PREV_VALUE] - constraint.position) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); + var position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); + constraint.position += (position + (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent - constraint.position) * alpha; + }; + PathConstraintPositionTimeline.ENTRIES = 2; + PathConstraintPositionTimeline.PREV_TIME = -2; + PathConstraintPositionTimeline.PREV_VALUE = -1; + PathConstraintPositionTimeline.VALUE = 1; + return PathConstraintPositionTimeline; + }(CurveTimeline)); + spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; + var PathConstraintSpacingTimeline = (function (_super) { + __extends(PathConstraintSpacingTimeline, _super); + function PathConstraintSpacingTimeline(frameCount) { + _super.call(this, frameCount); + } + PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) { + var i = frames.length; + constraint.spacing += (frames[i + PathConstraintSpacingTimeline.PREV_VALUE] - constraint.spacing) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); + var spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); + constraint.spacing += (spacing + (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent - constraint.spacing) * alpha; + }; + return PathConstraintSpacingTimeline; + }(PathConstraintPositionTimeline)); + spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; + var PathConstraintMixTimeline = (function (_super) { + __extends(PathConstraintMixTimeline, _super); + function PathConstraintMixTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); + } + /** Sets the time and mixes of the specified keyframe. */ + PathConstraintMixTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix) { + frameIndex *= PathConstraintMixTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; + }; + PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { + var i = frames.length; + constraint.rotateMix += (frames[i + PathConstraintMixTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + PathConstraintMixTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); + var rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; + var translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); + constraint.rotateMix += (rotate + (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + }; + PathConstraintMixTimeline.ENTRIES = 3; + PathConstraintMixTimeline.PREV_TIME = -3; + PathConstraintMixTimeline.PREV_ROTATE = -2; + PathConstraintMixTimeline.PREV_TRANSLATE = -1; + PathConstraintMixTimeline.ROTATE = 1; + PathConstraintMixTimeline.TRANSLATE = 2; + return PathConstraintMixTimeline; + }(CurveTimeline)); + spine.PathConstraintMixTimeline = PathConstraintMixTimeline; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var AnimationState = (function () { + function AnimationState(data) { + if (data === void 0) { data = null; } + this.tracks = new Array(); + this.events = new Array(); + this.listeners = new Array(); + this.timeScale = 1; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + } + AnimationState.prototype.update = function (delta) { + delta *= this.timeScale; + for (var i = 0; i < this.tracks.length; i++) { + var current = this.tracks[i]; + if (current == null) + continue; + var next = current.next; + if (next != null) { + var nextTime = current.lastTime - next.delay; + if (nextTime >= 0) { + var nextDelta = delta * next.timeScale; + next.time = nextTime + nextDelta; // For start event to see correct time. + current.time += delta * current.timeScale; // For end event to see correct time. + this.setCurrent(i, next); + next.time -= nextDelta; // Prevent increasing time twice, below. + current = next; + } + } + else if (!current.loop && current.lastTime >= current.endTime) { + // End non-looping animation when it reaches its end time and there is no next entry. + this.clearTrack(i); + continue; + } + current.time += delta * current.timeScale; + if (current.previous != null) { + var previousDelta = delta * current.previous.timeScale; + current.previous.time += previousDelta; + current.mixTime += previousDelta; + } + } + }; + AnimationState.prototype.apply = function (skeleton) { + var events = this.events; + var listenerCount = this.listeners.length; + for (var i = 0; i < this.tracks.length; i++) { + var current = this.tracks[i]; + if (current == null) + continue; + events.length = 0; + var time = current.time; + var lastTime = current.lastTime; + var endTime = current.endTime; + var loop = current.loop; + if (!loop && time > endTime) + time = endTime; + var previous = current.previous; + if (previous == null) + current.animation.mix(skeleton, lastTime, time, loop, events, current.mix); + else { + var previousTime = previous.time; + if (!previous.loop && previousTime > previous.endTime) + previousTime = previous.endTime; + previous.animation.apply(skeleton, previousTime, previousTime, previous.loop, null); + var alpha = current.mixTime / current.mixDuration * current.mix; + if (alpha >= 1) { + alpha = 1; + current.previous = null; + } + current.animation.mix(skeleton, lastTime, time, loop, events, alpha); + } + for (var ii = 0, nn = events.length; ii < nn; ii++) { + var event_1 = events[ii]; + if (current.listener != null) + current.listener.event(i, event_1); + for (var iii = 0; iii < listenerCount; iii++) + this.listeners[iii].event(i, event_1); + } + // Check if completed the animation or a loop iteration. + if (loop ? (lastTime % endTime > time % endTime) : (lastTime < endTime && time >= endTime)) { + var count = spine.MathUtils.toInt(time / endTime); + if (current.listener != null) + current.listener.complete(i, count); + for (var ii = 0, nn = this.listeners.length; ii < nn; ii++) + this.listeners[ii].complete(i, count); + } + current.lastTime = current.time; + } + }; + AnimationState.prototype.clearTracks = function () { + for (var i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + }; + AnimationState.prototype.clearTrack = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return; + var current = this.tracks[trackIndex]; + if (current == null) + return; + if (current.listener != null) + current.listener.end(trackIndex); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(trackIndex); + this.tracks[trackIndex] = null; + this.freeAll(current); + }; + AnimationState.prototype.freeAll = function (entry) { + while (entry != null) { + var next = entry.next; + entry = next; + } + }; + AnimationState.prototype.expandToIndex = function (index) { + if (index < this.tracks.length) + return this.tracks[index]; + spine.Utils.setArraySize(this.tracks, index - this.tracks.length + 1, null); + this.tracks.length = index + 1; + return null; + }; + AnimationState.prototype.setCurrent = function (index, entry) { + var current = this.expandToIndex(index); + if (current != null) { + var previous = current.previous; + current.previous = null; + if (current.listener != null) + current.listener.end(index); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(index); + entry.mixDuration = this.data.getMix(current.animation, entry.animation); + if (entry.mixDuration > 0) { + entry.mixTime = 0; + // If a mix is in progress, mix from the closest animation. + if (previous != null && current.mixTime / current.mixDuration < 0.5) { + entry.previous = previous; + previous = current; + } + else + entry.previous = current; + } + } + this.tracks[index] = entry; + if (entry.listener != null) + entry.listener.start(index); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].start(index); + }; + /** @see #setAnimation(int, Animation, boolean) */ + AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + }; + /** Set the current animation. Any queued animations are cleared. */ + AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { + var current = this.expandToIndex(trackIndex); + if (current != null) + this.freeAll(current.next); + var entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + this.setCurrent(trackIndex, entry); + return entry; + }; + /** {@link #addAnimation(int, Animation, boolean, float)} */ + AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + }; + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { + var entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + var last = this.expandToIndex(trackIndex); + if (last != null) { + while (last.next != null) + last = last.next; + last.next = entry; + } + else + this.tracks[trackIndex] = entry; + if (delay <= 0) { + if (last != null) + delay += last.endTime - this.data.getMix(last.animation, animation); + else + delay = 0; + } + entry.delay = delay; + return entry; + }; + /** @return May be null. */ + AnimationState.prototype.getCurrent = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return null; + return this.tracks[trackIndex]; + }; + /** Adds a listener to receive events for all animations. */ + AnimationState.prototype.addListener = function (listener) { + if (listener == null) + throw new Error("listener cannot be null."); + this.listeners.push(listener); + }; + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + AnimationState.prototype.removeListener = function (listener) { + var index = this.listeners.indexOf(listener); + if (index >= 0) + this.listeners.splice(index, 1); + }; + AnimationState.prototype.clearListeners = function () { + this.listeners.length = 0; + }; + return AnimationState; + }()); + spine.AnimationState = AnimationState; + var TrackEntry = (function () { + function TrackEntry() { + this.loop = false; + this.delay = 0; + this.time = 0; + this.lastTime = -1; + this.endTime = 0; + this.timeScale = 1; + this.mixTime = 0; + this.mixDuration = 0; + this.mix = 1; + } + TrackEntry.prototype.reset = function () { + this.next = null; + this.previous = null; + this.animation = null; + this.listener = null; + this.timeScale = 1; + this.lastTime = -1; // Trigger events on frame zero. + this.time = 0; + }; + /** Returns true if the current time is greater than the end time, regardless of looping. */ + TrackEntry.prototype.isComplete = function () { + return this.time >= this.endTime; + }; + return TrackEntry; + }()); + spine.TrackEntry = TrackEntry; + var AnimationStateAdapter = (function () { + function AnimationStateAdapter() { + } + AnimationStateAdapter.prototype.event = function (trackIndex, event) { + }; + AnimationStateAdapter.prototype.complete = function (trackIndex, loopCount) { + }; + AnimationStateAdapter.prototype.start = function (trackIndex) { + }; + AnimationStateAdapter.prototype.end = function (trackIndex) { + }; + return AnimationStateAdapter; + }()); + spine.AnimationStateAdapter = AnimationStateAdapter; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var AnimationStateData = (function () { + function AnimationStateData(skeletonData) { + this.animationToMixTime = {}; + this.defaultMix = 0; + if (skeletonData == null) + throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + AnimationStateData.prototype.setMix = function (fromName, toName, duration) { + var from = this.skeletonData.findAnimation(fromName); + if (from == null) + throw new Error("Animation not found: " + fromName); + var to = this.skeletonData.findAnimation(toName); + if (to == null) + throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + }; + AnimationStateData.prototype.setMixWith = function (from, to, duration) { + if (from == null) + throw new Error("from cannot be null."); + if (to == null) + throw new Error("to cannot be null."); + var key = from.name + to.name; + this.animationToMixTime[key] = duration; + }; + AnimationStateData.prototype.getMix = function (from, to) { + var key = from.name + to.name; + var value = this.animationToMixTime[key]; + return value === undefined ? this.defaultMix : value; + }; + return AnimationStateData; + }()); + spine.AnimationStateData = AnimationStateData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(spine.BlendMode || (spine.BlendMode = {})); + var BlendMode = spine.BlendMode; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Bone = (function () { + /** @param parent May be null. */ + function Bone(data, skeleton, parent) { + this.children = new Array(); + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 0; + this.scaleY = 0; + this.shearX = 0; + this.shearY = 0; + this.appliedRotation = 0; + this.a = 0; + this.b = 0; + this.worldX = 0; + this.c = 0; + this.d = 0; + this.worldY = 0; + this.worldSignX = 0; + this.worldSignY = 0; + this.sorted = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + Bone.prototype.update = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and this bone's local transform. */ + Bone.prototype.updateWorldTransform = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and the specified local transform. */ + Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { + this.appliedRotation = rotation; + var rotationY = rotation + 90 + shearY; + var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX, lb = spine.MathUtils.cosDeg(rotationY) * scaleY; + var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX, ld = spine.MathUtils.sinDeg(rotationY) * scaleY; + var parent = this.parent; + if (parent == null) { + var skeleton = this.skeleton; + if (skeleton.flipX) { + x = -x; + la = -la; + lb = -lb; + } + if (skeleton.flipY) { + y = -y; + lc = -lc; + ld = -ld; + } + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + this.worldX = x; + this.worldY = y; + this.worldSignX = spine.MathUtils.signum(scaleX); + this.worldSignY = spine.MathUtils.signum(scaleY); + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + this.worldSignX = parent.worldSignX * spine.MathUtils.signum(scaleX); + this.worldSignY = parent.worldSignY * spine.MathUtils.signum(scaleY); + if (this.data.inheritRotation && this.data.inheritScale) { + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else { + if (this.data.inheritRotation) { + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + var cos = spine.MathUtils.cosDeg(parent.appliedRotation), sin = spine.MathUtils.sinDeg(parent.appliedRotation); + var temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + if (!parent.data.inheritRotation) + break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else if (this.data.inheritScale) { + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + var cos = spine.MathUtils.cosDeg(parent.appliedRotation), sin = spine.MathUtils.sinDeg(parent.appliedRotation); + var psx = parent.scaleX, psy = parent.scaleY; + var za = cos * psx, zb = sin * psy, zc = sin * psx, zd = cos * psy; + var temp = pa * za + pb * zc; + pb = pb * zd - pa * zb; + pa = temp; + temp = pc * za + pd * zc; + pd = pd * zd - pc * zb; + pc = temp; + if (psx >= 0) + sin = -sin; + temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + if (!parent.data.inheritScale) + break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else { + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + } + if (this.skeleton.flipX) { + this.a = -this.a; + this.b = -this.b; + } + if (this.skeleton.flipY) { + this.c = -this.c; + this.d = -this.d; + } + } + }; + Bone.prototype.setToSetupPose = function () { + var data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + }; + Bone.prototype.getWorldRotationX = function () { + return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldRotationY = function () { + return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldScaleX = function () { + return Math.sqrt(this.a * this.a + this.b * this.b) * this.worldSignX; + }; + Bone.prototype.getWorldScaleY = function () { + return Math.sqrt(this.c * this.c + this.d * this.d) * this.worldSignY; + }; + Bone.prototype.worldToLocalRotationX = function () { + var parent = this.parent; + if (parent == null) + return this.rotation; + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, a = this.a, c = this.c; + return Math.atan2(pa * c - pc * a, pd * a - pb * c) * spine.MathUtils.radDeg; + }; + Bone.prototype.worldToLocalRotationY = function () { + var parent = this.parent; + if (parent == null) + return this.rotation; + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, b = this.b, d = this.d; + return Math.atan2(pa * d - pc * b, pd * b - pb * d) * spine.MathUtils.radDeg; + }; + Bone.prototype.rotateWorld = function (degrees) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + }; + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + Bone.prototype.updateLocalTransform = function () { + var parent = this.parent; + if (parent == null) { + this.x = this.worldX; + this.y = this.worldY; + this.rotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + this.scaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.scaleY = Math.sqrt(this.b * this.b + this.d * this.d); + var det = this.a * this.d - this.b * this.c; + this.shearX = 0; + this.shearY = Math.atan2(this.a * this.b + this.c * this.d, det) * spine.MathUtils.radDeg; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + var pid = 1 / (pa * pd - pb * pc); + var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.x = (dx * pd * pid - dy * pb * pid); + this.y = (dy * pa * pid - dx * pc * pid); + var ia = pid * pd; + var id = pid * pa; + var ib = pid * pb; + var ic = pid * pc; + var ra = ia * this.a - ib * this.c; + var rb = ia * this.b - ib * this.d; + var rc = id * this.c - ic * this.a; + var rd = id * this.d - ic * this.b; + this.shearX = 0; + this.scaleX = Math.sqrt(ra * ra + rc * rc); + if (this.scaleX > 0.0001) { + var det = ra * rd - rb * rc; + this.scaleY = det / this.scaleX; + this.shearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; + this.rotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; + } + else { + this.scaleX = 0; + this.scaleY = Math.sqrt(rb * rb + rd * rd); + this.shearY = 0; + this.rotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; + } + this.appliedRotation = this.rotation; + }; + Bone.prototype.worldToLocal = function (world) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var invDet = 1 / (a * d - b * c); + var x = world.x - this.worldX, y = world.y - this.worldY; + world.x = (x * d * invDet - y * b * invDet); + world.y = (y * a * invDet - x * c * invDet); + return world; + }; + Bone.prototype.localToWorld = function (local) { + var x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + }; + return Bone; + }()); + spine.Bone = Bone; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var BoneData = (function () { + function BoneData(index, name, parent) { + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 1; + this.scaleY = 1; + this.shearX = 0; + this.shearY = 0; + this.inheritRotation = true; + this.inheritScale = true; + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + return BoneData; + }()); + spine.BoneData = BoneData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Event = (function () { + function Event(time, data) { + if (data == null) + throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + return Event; + }()); + spine.Event = Event; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var EventData = (function () { + function EventData(name) { + this.name = name; + } + return EventData; + }()); + spine.EventData = EventData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var IkConstraint = (function () { + function IkConstraint(data, skeleton) { + this.mix = 1; + this.bendDirection = 0; + this.level = 0; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.bendDirection = data.bendDirection; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + IkConstraint.prototype.apply = function () { + this.update(); + }; + IkConstraint.prototype.update = function () { + var target = this.target; + var bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.mix); + break; + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix); + break; + } + }; + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + IkConstraint.prototype.apply1 = function (bone, targetX, targetY, alpha) { + var pp = bone.parent; + var id = 1 / (pp.a * pp.d - pp.b * pp.c); + var x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * pp.d - y * pp.b) * id - bone.x, ty = (y * pp.a - x * pp.c) * id - bone.y; + var rotationIK = Math.atan2(ty, tx) * spine.MathUtils.radDeg - bone.shearX - bone.rotation; + if (bone.scaleX < 0) + rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK < -180) + rotationIK += 360; + bone.updateWorldTransformWith(bone.x, bone.y, bone.rotation + rotationIK * alpha, bone.scaleX, bone.scaleY, bone.shearX, bone.shearY); + }; + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, alpha) { + if (alpha == 0) { + child.updateWorldTransform(); + return; + } + var px = parent.x, py = parent.y, psx = parent.scaleX, psy = parent.scaleY, csx = child.scaleX; + var os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } + else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } + else + os2 = 0; + var cx = child.x, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + var u = Math.abs(psx - psy) <= 0.0001; + if (!u) { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } + else { + cy = child.y; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } + var pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + var id = 1 / (a * d - b * c), x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + x = cwx - pp.worldX; + y = cwy - pp.worldY; + var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0; + outer: if (u) { + l2 *= psx; + var cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) + cos = -1; + else if (cos > 1) + cos = 1; + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } + else { + a = psx * l2; + b = psy * l2; + var aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + var c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + var q = Math.sqrt(d); + if (c1 < 0) + q = -q; + q = -(c1 + q) / 2; + var r0 = q / c2, r1 = c / q; + var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; + var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; + x = l1 + a; + d = x * x; + if (d > maxDist) { + maxAngle = 0; + maxDist = d; + maxX = x; + } + x = l1 - a; + d = x * x; + if (d < minDist) { + minAngle = spine.MathUtils.PI; + minDist = d; + minX = x; + } + var angle = Math.acos(-a * l1 / (aa - bb)); + x = a * Math.cos(angle) + l1; + y = b * Math.sin(angle); + d = x * x + y * y; + if (d < minDist) { + minAngle = angle; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = angle; + maxDist = d; + maxX = x; + maxY = y; + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } + else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + var os = Math.atan2(cy, cx) * s2; + var rotation = parent.rotation; + a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 < -180) + a1 += 360; + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.scaleX, parent.scaleY, 0, 0); + rotation = child.rotation; + a2 = ((a2 + os) * spine.MathUtils.radDeg - child.shearX) * s2 + os2 - rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 < -180) + a2 += 360; + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.scaleX, child.scaleY, child.shearX, child.shearY); + }; + return IkConstraint; + }()); + spine.IkConstraint = IkConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var IkConstraintData = (function () { + function IkConstraintData(name) { + this.bones = new Array(); + this.bendDirection = 1; + this.mix = 1; + this.name = name; + } + return IkConstraintData; + }()); + spine.IkConstraintData = IkConstraintData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathConstraint = (function () { + function PathConstraint(data, skeleton) { + this.position = 0; + this.spacing = 0; + this.rotateMix = 0; + this.translateMix = 0; + this.spaces = new Array(); + this.positions = new Array(); + this.world = new Array(); + this.curves = new Array(); + this.lengths = new Array(); + this.segments = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0, n = data.bones.length; i < n; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + } + PathConstraint.prototype.apply = function () { + this.update(); + }; + PathConstraint.prototype.update = function () { + var attachment = this.target.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) + return; + var rotateMix = this.rotateMix, translateMix = this.translateMix; + var translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) + return; + var data = this.data; + var spacingMode = data.spacingMode; + var lengthSpacing = spacingMode == spine.SpacingMode.Length; + var rotateMode = data.rotateMode; + var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; + var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + var bones = this.bones; + var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; + var spacing = this.spacing; + if (scale || lengthSpacing) { + if (scale) + lengths = spine.Utils.setArraySize(this.lengths, boneCount); + for (var i = 0, n = spacesCount - 1; i < n;) { + var bone = bones[i]; + var length_1 = bone.data.length, x = length_1 * bone.a, y = length_1 * bone.c; + length_1 = Math.sqrt(x * x + y * y); + if (scale) + lengths[i] = length_1; + spaces[++i] = lengthSpacing ? Math.max(0, length_1 + spacing) : spacing; + } + } + else { + for (var i = 1; i < spacesCount; i++) + spaces[i] = spacing; + } + var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent); + var skeleton = this.target.bone.skeleton; + var skeletonX = skeleton.x, skeletonY = skeleton.y; + var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + var tip = rotateMode == spine.RotateMode.Chain && offsetRotation == 0; + for (var i = 0, p = 3; i < boneCount; i++, p += 3) { + var bone = bones[i]; + bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; + bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; + var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + var length_2 = lengths[i]; + if (length_2 != 0) { + var s = (Math.sqrt(dx * dx + dy * dy) / length_2 - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a) - offsetRotation * spine.MathUtils.degRad; + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + var length_3 = bone.data.length; + boneX += (length_3 * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length_3 * (sin * a + cos * c) - dy) * rotateMix; + } + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + } + }; + PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents, percentPosition, percentSpacing) { + var target = this.target; + var position = this.position; + var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; + var closed = path.closed; + var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + if (!path.constantSpeed) { + var lengths = path.lengths; + curveCount -= closed ? 1 : 2; + var pathLength_1 = lengths[curveCount]; + if (percentPosition) + position *= pathLength_1; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength_1; + } + world = spine.Utils.setArraySize(this.world, 8); + for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength_1; + if (p < 0) + p += pathLength_1; + curve = 0; + } + else if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVerticesWith(target, 2, 4, world, 0); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength_1) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVerticesWith(target, verticesLength - 6, 4, world, 0); + } + this.addAfterPosition(p - pathLength_1, world, 0, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_4 = lengths[curve]; + if (p > length_4) + continue; + if (curve == 0) + p /= length_4; + else { + var prev = lengths[curve - 1]; + p = (p - prev) / (length_4 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVerticesWith(target, verticesLength - 4, 4, world, 0); + path.computeWorldVerticesWith(target, 0, 4, world, 4); + } + else + path.computeWorldVerticesWith(target, curve * 6 + 2, 8, world, 0); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + // World vertices. + if (closed) { + verticesLength += 2; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength - 4, world, 0); + path.computeWorldVerticesWith(target, 0, 2, world, verticesLength - 4); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } + else { + curveCount--; + verticesLength -= 4; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength, world, 0); + } + // Curve lengths. + var curves = spine.Utils.setArraySize(this.curves, curveCount); + var pathLength = 0; + var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (var i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) + position *= pathLength; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + var segments = this.segments; + var curveLength = 0; + for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength; + if (p < 0) + p += pathLength; + curve = 0; + } + else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_5 = curves[curve]; + if (p > length_5) + continue; + if (curve == 0) + p /= length_5; + else { + var prev = curves[curve - 1]; + p = (p - prev) / (length_5 - prev); + } + break; + } + // Curve segment lengths. + if (curve != prevCurve) { + prevCurve = curve; + var ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + // Weight by segment length. + p *= curveLength; + for (;; segment++) { + var length_6 = segments[segment]; + if (p > length_6) + continue; + if (segment == 0) + p /= length_6; + else { + var prev = segments[segment - 1]; + p = segment + (p - prev) / (length_6 - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + }; + PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { + var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { + var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (p == 0) + p = 0.0001; + var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) + out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + }; + PathConstraint.NONE = -1; + PathConstraint.BEFORE = -2; + PathConstraint.AFTER = -3; + return PathConstraint; + }()); + spine.PathConstraint = PathConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathConstraintData = (function () { + function PathConstraintData(name) { + this.bones = new Array(); + this.name = name; + } + return PathConstraintData; + }()); + spine.PathConstraintData = PathConstraintData; + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(spine.PositionMode || (spine.PositionMode = {})); + var PositionMode = spine.PositionMode; + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + })(spine.SpacingMode || (spine.SpacingMode = {})); + var SpacingMode = spine.SpacingMode; + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(spine.RotateMode || (spine.RotateMode = {})); + var RotateMode = spine.RotateMode; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Skeleton = (function () { + function Skeleton(data) { + this._updateCache = new Array(); + this.time = 0; + this.flipX = false; + this.flipY = false; + this.x = 0; + this.y = 0; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) { + var boneData = data.bones[i]; + var bone = void 0; + if (boneData.parent == null) + bone = new spine.Bone(boneData, this, null); + else { + var parent_1 = this.bones[boneData.parent.index]; + bone = new spine.Bone(boneData, this, parent_1); + parent_1.children.push(bone); + } + this.bones.push(bone); + } + this.slots = new Array(); + this.drawOrder = new Array(); + for (var i = 0; i < data.slots.length; i++) { + var slotData = data.slots[i]; + var bone = this.bones[slotData.boneData.index]; + var slot = new spine.Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + this.ikConstraints = new Array(); + this.ikConstraintsSorted = new Array(); + for (var i = 0; i < data.ikConstraints.length; i++) { + var ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); + } + this.transformConstraints = new Array(); + for (var i = 0; i < data.transformConstraints.length; i++) { + var transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); + } + this.pathConstraints = new Array(); + for (var i = 0; i < data.pathConstraints.length; i++) { + var pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); + } + this.color = new spine.Color(1, 1, 1, 1); + this.updateCache(); + } + Skeleton.prototype.updateCache = function () { + var updateCache = this._updateCache; + updateCache.length = 0; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].sorted = false; + // IK first, lowest hierarchy depth first. + var ikConstraints = this.ikConstraintsSorted; + ikConstraints.length = 0; + for (var i = 0; i < this.ikConstraints.length; i++) + ikConstraints.push(this.ikConstraints[i]); + var ikCount = ikConstraints.length; + for (var i = 0, level = 0, n = ikCount; i < n; i++) { + var ik = ikConstraints[i]; + var bone = ik.bones[0].parent; + for (level = 0; bone != null; level++) + bone = bone.parent; + ik.level = level; + } + for (var i = 1, ii = 0; i < ikCount; i++) { + var ik = ikConstraints[i]; + var level = ik.level; + for (ii = i - 1; ii >= 0; ii--) { + var other = ikConstraints[ii]; + if (other.level < level) + break; + ikConstraints[ii + 1] = other; + } + ikConstraints[ii + 1] = ik; + } + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + var target = constraint.target; + this.sortBone(target); + var constrained = constraint.bones; + var parent_2 = constrained[0]; + this.sortBone(parent_2); + updateCache.push(constraint); + this.sortReset(parent_2.children); + constrained[constrained.length - 1].sorted = true; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var slot = constraint.target; + var slotIndex = slot.data.index; + var slotBone = slot.bone; + if (this.skin != null) + this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) + this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (var ii = 0, nn = this.data.skins.length; ii < nn; ii++) + this.sortPathConstraintAttachment(this.data.skins[ii], slotIndex, slotBone); + var attachment = slot.getAttachment(); + if (attachment instanceof spine.PathAttachment) + this.sortPathConstraintAttachmentWith(attachment, slotBone); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + this.sortBone(constraint.target); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + for (var i = 0, n = bones.length; i < n; i++) + this.sortBone(bones[i]); + }; + Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { + var attachments = skin.attachments[slotIndex]; + if (!attachments) + return; + for (var key in attachments) { + this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + } + }; + Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { + if (!(attachment instanceof spine.PathAttachment)) + return; + var pathBones = attachment.bones; + if (pathBones == null) + this.sortBone(slotBone); + else { + var bones = this.bones; + for (var i = 0; i < pathBones.length; i++) { + var boneIndex = pathBones[i]; + this.sortBone(bones[boneIndex]); + } + } + }; + Skeleton.prototype.sortBone = function (bone) { + if (bone.sorted) + return; + var parent = bone.parent; + if (parent != null) + this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + }; + Skeleton.prototype.sortReset = function (bones) { + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.sorted) + this.sortReset(bone.children); + bone.sorted = false; + } + }; + /** Updates the world transform for each bone and applies constraints. */ + Skeleton.prototype.updateWorldTransform = function () { + var updateCache = this._updateCache; + for (var i = 0, n = updateCache.length; i < n; i++) + updateCache[i].update(); + }; + /** Sets the bones, constraints, and slots to their setup pose values. */ + Skeleton.prototype.setToSetupPose = function () { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + }; + /** Sets the bones and constraints to their setup pose values. */ + Skeleton.prototype.setBonesToSetupPose = function () { + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].setToSetupPose(); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + constraint.bendDirection = constraint.data.bendDirection; + constraint.mix = constraint.data.mix; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + var data = constraint.data; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + } + }; + Skeleton.prototype.setSlotsToSetupPose = function () { + var slots = this.slots; + spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (var i = 0, n = slots.length; i < n; i++) + slots[i].setToSetupPose(); + }; + /** @return May return null. */ + Skeleton.prototype.getRootBone = function () { + if (this.bones.length == 0) + return null; + return this.bones[0]; + }; + /** @return May be null. */ + Skeleton.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.data.name == boneName) + return bone; + } + return null; + }; + /** @return -1 if the bone was not found. */ + Skeleton.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name == boneName) + return i; + return -1; + }; + /** @return May be null. */ + Skeleton.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) + return slot; + } + return null; + }; + /** @return -1 if the bone was not found. */ + Skeleton.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name == slotName) + return i; + return -1; + }; + /** Sets a skin by name. + * @see #setSkin(Skin) */ + Skeleton.prototype.setSkinByName = function (skinName) { + var skin = this.data.findSkin(skinName); + if (skin == null) + throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + }; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + Skeleton.prototype.setSkin = function (newSkin) { + if (newSkin != null) { + if (this.skin != null) + newSkin.attachAll(this, this.skin); + else { + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var name_1 = slot.data.attachmentName; + if (name_1 != null) { + var attachment = newSkin.getAttachment(i, name_1); + if (attachment != null) + slot.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + }; + /** @return May be null. */ + Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + }; + /** @return May be null. */ + Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { + if (attachmentName == null) + throw new Error("attachmentName cannot be null."); + if (this.skin != null) { + var attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (attachment != null) + return attachment; + } + if (this.data.defaultSkin != null) + return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + }; + /** @param attachmentName May be null. */ + Skeleton.prototype.setAttachment = function (slotName, attachmentName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) { + var attachment = null; + if (attachmentName != null) { + attachment = this.getAttachment(i, attachmentName); + if (attachment == null) + throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + }; + /** @return May be null. */ + Skeleton.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) + return ikConstraint; + } + return null; + }; + /** @return May be null. */ + Skeleton.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** @return May be null. */ + Skeleton.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + Skeleton.prototype.getBounds = function (offset, size) { + if (offset == null) + throw new Error("offset cannot be null."); + if (size == null) + throw new Error("size cannot be null."); + var drawOrder = this.drawOrder; + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var vertices = null; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) + vertices = attachment.updateWorldVertices(slot, false); + else if (attachment instanceof spine.MeshAttachment) + vertices = attachment.updateWorldVertices(slot, true); + if (vertices != null) { + for (var ii = 0, nn = vertices.length; ii < nn; ii += 5) { + var x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + }; + Skeleton.prototype.update = function (delta) { + this.time += delta; + }; + return Skeleton; + }()); + spine.Skeleton = Skeleton; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonBounds = (function () { + function SkeletonBounds() { + this.minX = 0; + this.minY = 0; + this.maxX = 0; + this.maxY = 0; + this.boundingBoxes = new Array(); + this.polygons = new Array(); + this._polygonPool = new spine.Pool(function () { + return spine.Utils.newFloatArray(16); + }); + } + SkeletonBounds.prototype.update = function (skeleton, updateAabb) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + var boundingBoxes = this.boundingBoxes; + var polygons = this.polygons; + var polygonPool = this._polygonPool; + var slots = skeleton.slots; + var slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (var i = 0; i < slotCount; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.BoundingBoxAttachment) { + var boundingBox = attachment; + boundingBoxes.push(boundingBox); + var polygon = polygonPool.obtain(); + if (polygon.length != boundingBox.worldVerticesLength) { + polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); + } + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, polygon); + } + } + if (updateAabb) + this.aabbCompute(); + }; + SkeletonBounds.prototype.aabbCompute = function () { + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) { + var polygon = polygons[i]; + var vertices = polygon; + for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { + var x = vertices[ii]; + var y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + }; + /** Returns true if the axis aligned bounding box contains the point. */ + SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + }; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { + var minX = this.minX; + var minY = this.minY; + var maxX = this.maxX; + var maxY = this.maxY; + if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) + return false; + var m = (y2 - y1) / (x2 - x1); + var y = m * (minX - x1) + y1; + if (y > minY && y < maxY) + return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) + return true; + var x = (minY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + return false; + }; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + }; + /** 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. */ + SkeletonBounds.prototype.containsPoint = function (x, y) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains the point. */ + SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { + var vertices = polygon; + var nn = polygon.length; + var prevIndex = nn - 2; + var inside = false; + for (var ii = 0; ii < nn; ii += 2) { + var vertexY = vertices[ii + 1]; + var prevY = vertices[prevIndex + 1]; + if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { + var vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) + inside = !inside; + } + prevIndex = ii; + } + return inside; + }; + /** Returns the first bounding box attachment that contains any part of 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. */ + SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains any part of the line segment. */ + SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { + var vertices = polygon; + var nn = polygon.length; + var width12 = x1 - x2, height12 = y1 - y2; + var det1 = x1 * y2 - y1 * x2; + var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (var ii = 0; ii < nn; ii += 2) { + var x4 = vertices[ii], y4 = vertices[ii + 1]; + var det2 = x3 * y4 - y3 * x4; + var width34 = x3 - x4, height34 = y3 - y4; + var det3 = width12 * height34 - height12 * width34; + var x = (det1 * width34 - width12 * det2) / det3; + if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { + var y = (det1 * height34 - height12 * det2) / det3; + if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) + return true; + } + x3 = x4; + y3 = y4; + } + return false; + }; + /** Returns the polygon for the specified bounding box, or null. */ + SkeletonBounds.prototype.getPolygon = function (boundingBox) { + if (boundingBox == null) + throw new Error("boundingBox cannot be null."); + var index = this.boundingBoxes.indexOf(boundingBox); + return index == -1 ? null : this.polygons[index]; + }; + return SkeletonBounds; + }()); + spine.SkeletonBounds = SkeletonBounds; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonData = (function () { + function SkeletonData() { + this.bones = new Array(); // Ordered parents first. + this.slots = new Array(); // Setup pose draw order. + this.skins = new Array(); + this.events = new Array(); + this.animations = new Array(); + this.ikConstraints = new Array(); + this.transformConstraints = new Array(); + this.pathConstraints = new Array(); + } + SkeletonData.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.name == boneName) + return bone; + } + return null; + }; + SkeletonData.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].name == boneName) + return i; + return -1; + }; + SkeletonData.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.name == slotName) + return slot; + } + return null; + }; + SkeletonData.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].name == slotName) + return i; + return -1; + }; + SkeletonData.prototype.findSkin = function (skinName) { + if (skinName == null) + throw new Error("skinName cannot be null."); + var skins = this.skins; + for (var i = 0, n = skins.length; i < n; i++) { + var skin = skins[i]; + if (skin.name == skinName) + return skin; + } + return null; + }; + SkeletonData.prototype.findEvent = function (eventDataName) { + if (eventDataName == null) + throw new Error("eventDataName cannot be null."); + var events = this.events; + for (var i = 0, n = events.length; i < n; i++) { + var event_2 = events[i]; + if (event_2.name == eventDataName) + return event_2; + } + return null; + }; + SkeletonData.prototype.findAnimation = function (animationName) { + if (animationName == null) + throw new Error("animationName cannot be null."); + var animations = this.animations; + for (var i = 0, n = animations.length; i < n; i++) { + var animation = animations[i]; + if (animation.name == animationName) + return animation; + } + return null; + }; + SkeletonData.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraintIndex = function (pathConstraintName) { + if (pathConstraintName == null) + throw new Error("pathConstraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) + if (pathConstraints[i].name == pathConstraintName) + return i; + return -1; + }; + return SkeletonData; + }()); + spine.SkeletonData = SkeletonData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonJson = (function () { + function SkeletonJson(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonJson.prototype.readSkeletonData = function (json) { + var scale = this.scale; + var skeletonData = new spine.SkeletonData(); + var root = JSON.parse(json); + // Skeleton + var skeletonMap = root.skeleton; + if (skeletonMap != null) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.imagesPath = skeletonMap.images; + } + // Bones + if (root.bones) { + for (var i = 0; i < root.bones.length; i++) { + var boneMap = root.bones[i]; + var parent_3 = null; + var parentName = this.getValue(boneMap, "parent", null); + if (parentName != null) { + parent_3 = skeletonData.findBone(parentName); + if (parent_3 == null) + throw new Error("Parent bone not found: " + parentName); + } + var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_3); + data.length = this.getValue(boneMap, "length", 0) * scale; + data.x = this.getValue(boneMap, "x", 0) * scale; + data.y = this.getValue(boneMap, "y", 0) * scale; + data.rotation = this.getValue(boneMap, "rotation", 0); + data.scaleX = this.getValue(boneMap, "scaleX", 1); + data.scaleY = this.getValue(boneMap, "scaleY", 1); + data.shearX = this.getValue(boneMap, "shearX", 0); + data.shearY = this.getValue(boneMap, "shearY", 0); + data.inheritRotation = this.getValue(boneMap, "inheritRotation", true); + data.inheritScale = this.getValue(boneMap, "inheritScale", true); + skeletonData.bones.push(data); + } + } + // Slots. + if (root.slots) { + for (var i = 0; i < root.slots.length; i++) { + var slotMap = root.slots[i]; + var slotName = slotMap.name; + var boneName = slotMap.bone; + var boneData = skeletonData.findBone(boneName); + if (boneData == null) + throw new Error("Slot bone not found: " + boneName); + var data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); + var color = slotMap.color ? slotMap.color : null; + if (color != null) + data.color.setFromString(color); + data.attachmentName = this.getValue(slotMap, "attachment", null); + data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + } + // IK constraints + if (root.ik) { + for (var i = 0; i < root.ik.length; i++) { + var constraintMap = root.ik[i]; + var data = new spine.IkConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("IK bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("IK target bone not found: " + targetName); + data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.mix = constraintMap.mix ? constraintMap.mix : 1; + skeletonData.ikConstraints.push(data); + } + } + // Transform constraints. + if (root.transform) { + for (var i = 0; i < root.transform.length; i++) { + var constraintMap = root.transform[i]; + var data = new spine.TransformConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("Transform constraint target bone not found: " + targetName); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.offsetX = this.getValue(constraintMap, "x", 0) * scale; + data.offsetY = this.getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); + data.offsetShearY = this.getValue(constraintMap, "shearY", 0); + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); + data.shearMix = this.getValue(constraintMap, "shearMix", 1); + skeletonData.transformConstraints.push(data); + } + } + // Path constraints. + if (root.path) { + for (var i = 0; i < root.path.length; i++) { + var constraintMap = root.path[i]; + var data = new spine.PathConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + if (data.target == null) + throw new Error("Path target slot not found: " + targetName); + data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); + data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); + data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.position = this.getValue(constraintMap, "position", 0); + if (data.positionMode == spine.PositionMode.Fixed) + data.position *= scale; + data.spacing = this.getValue(constraintMap, "spacing", 0); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + data.spacing *= scale; + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + skeletonData.pathConstraints.push(data); + } + } + // Skins. + if (root.skins) { + for (var skinName in root.skins) { + var skinMap = root.skins[skinName]; + var skin = new spine.Skin(skinName); + for (var slotName in skinMap) { + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + var slotMap = skinMap[slotName]; + for (var entryName in slotMap) { + var attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName); + if (attachment != null) + skin.addAttachment(slotIndex, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name == "default") + skeletonData.defaultSkin = skin; + } + } + // Linked meshes. + for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (skin == null) + throw new Error("Skin not found: " + linkedMesh.skin); + var parent_4 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (parent_4 == null) + throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.setParentMesh(parent_4); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + // Events. + if (root.events) { + for (var eventName in root.events) { + var eventMap = root.events[eventName]; + var data = new spine.EventData(eventName); + data.intValue = this.getValue(eventMap, "int", 0); + data.floatValue = this.getValue(eventMap, "float", 0); + data.stringValue = this.getValue(eventMap, "string", null); + skeletonData.events.push(data); + } + } + // Animations. + if (root.animations) { + for (var animationName in root.animations) { + var animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + return skeletonData; + }; + SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name) { + var scale = this.scale; + name = this.getValue(map, "name", name); + var type = this.getValue(map, "type", "region"); + switch (type) { + case "region": { + var path = this.getValue(map, "path", name); + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (region == null) + return null; + region.path = path; + region.x = this.getValue(map, "x", 0) * scale; + region.y = this.getValue(map, "y", 0) * scale; + region.scaleX = this.getValue(map, "scaleX", 1); + region.scaleY = this.getValue(map, "scaleY", 1); + region.rotation = this.getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + var color = this.getValue(map, "color", null); + if (color != null) + region.color.setFromString(color); + region.updateOffset(); + return region; + } + case "boundingbox": { + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (box == null) + return null; + this.readVertices(map, box, map.vertexCount << 1); + return box; + } + case "mesh": + case "linkedmesh": { + var path = this.getValue(map, "path", name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) + return null; + mesh.path = path; + var color = this.getValue(map, "color", null); + if (color != null) + mesh.color.setFromString(color); + var parent_5 = this.getValue(map, "parent", null); + if (parent_5 != null) { + mesh.inheritDeform = this.getValue(map, "deform", true); + this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent_5)); + return mesh; + } + var uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.hullLength = this.getValue(map, "hull", 0) * 2; + return mesh; + } + case "path": { + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (path == null) + return null; + path.closed = this.getValue(map, "closed", false); + path.constantSpeed = this.getValue(map, "constantSpeed", true); + var vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + var lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (var i = 0; i < map.lengths.length; i++) + lengths[i++] = map.lengths[i] * scale; + path.lengths = lengths; + return path; + } + } + return null; + }; + SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { + var scale = this.scale; + attachment.worldVerticesLength = verticesLength; + var vertices = map.vertices; + if (verticesLength == vertices.length) { + if (scale != 1) { + for (var i = 0, n = vertices.length; i < n; i++) + vertices[i] *= scale; + } + attachment.vertices = spine.Utils.toFloatArray(vertices); + return; + } + var weights = new Array(); + var bones = new Array(); + for (var i = 0, n = vertices.length; i < n;) { + var boneCount = vertices[i++]; + bones.push(boneCount); + for (var nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = spine.Utils.toFloatArray(weights); + }; + SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { + var scale = this.scale; + var timelines = new Array(); + var duration = 0; + // Slot timelines. + if (map.slots) { + for (var slotName in map.slots) { + var slotMap = map.slots[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + if (timelineName == "color") { + var timeline = new spine.ColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var color = new spine.Color(); + color.setFromString(valueMap.color); + timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); + } + else if (timelineName = "attachment") { + var timeline = new spine.AttachmentTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex++, valueMap.time, valueMap.name); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + else + throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); + } + } + } + // Bone timelines. + if (map.bones) { + for (var boneName in map.bones) { + var boneMap = map.bones[boneName]; + var boneIndex = skeletonData.findBoneIndex(boneName); + if (boneIndex == -1) + throw new Error("Bone not found: " + boneName); + for (var timelineName in boneMap) { + var timelineMap = boneMap[timelineName]; + if (timelineName === "rotate") { + var timeline = new spine.RotateTimeline(timelineMap.length); + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, valueMap.angle); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); + } + else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "scale") + timeline = new spine.ScaleTimeline(timelineMap.length); + else if (timelineName === "shear") + timeline = new spine.ShearTimeline(timelineMap.length); + else { + timeline = new spine.TranslateTimeline(timelineMap.length); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var x = this.getValue(valueMap, "x", 0), y = this.getValue(valueMap, "y", 0); + timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); + } + else + throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); + } + } + } + // IK constraint timelines. + if (map.ik) { + for (var constraintName in map.ik) { + var constraintMap = map.ik[constraintName]; + var constraint = skeletonData.findIkConstraint(constraintName); + var timeline = new spine.IkConstraintTimeline(constraintMap.length); + timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "bendPositive", true) ? 1 : -1); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + } + // Transform constraint timelines. + if (map.transform) { + for (var constraintName in map.transform) { + var constraintMap = map.transform[constraintName]; + var constraint = skeletonData.findTransformConstraint(constraintName); + var timeline = new spine.TransformConstraintTimeline(constraintMap.length); + timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + } + // Path constraint timelines. + if (map.paths) { + for (var constraintName in map.paths) { + var constraintMap = map.paths[constraintName]; + var index = skeletonData.findPathConstraintIndex(constraintName); + if (index == -1) + throw new Error("Path constraint not found: " + constraintName); + var data = skeletonData.pathConstraints[index]; + for (var timelineName in constraintMap) { + var timelineMap = constraintMap[timelineName]; + if (timelineName === "position" || timelineName === "spacing") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "spacing") { + timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + timelineScale = scale; + } + else { + timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); + if (data.positionMode == spine.PositionMode.Fixed) + timelineScale = scale; + } + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + } + else if (timelineName === "mix") { + var timeline = new spine.PathConstraintMixTimeline(timelineMap.length); + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + } + } + } + } + // Deform timelines. + if (map.deform) { + for (var deformName in map.deform) { + var deformMap = map.deform[deformName]; + var skin = skeletonData.findSkin(deformName); + if (skin == null) + throw new Error("Skin not found: " + deformName); + for (var slotName in deformMap) { + var slotMap = deformMap[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotMap.name); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + var attachment = skin.getAttachment(slotIndex, timelineName); + if (attachment == null) + throw new Error("Deform attachment not found: " + timelineMap.name); + var weighted = attachment.bones != null; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var timeline = new spine.DeformTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + var frameIndex = 0; + for (var j = 0; j < timelineMap.length; j++) { + var valueMap = timelineMap[j]; + var deform = void 0; + var verticesValue = this.getValue(valueMap, "vertices", null); + if (verticesValue == null) + deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; + else { + deform = spine.Utils.newFloatArray(deformLength); + var start = this.getValue(valueMap, "offset", 0); + spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale != 1) { + for (var i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (var i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + timeline.setFrame(frameIndex, valueMap.time, deform); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + } + } + } + // Draw order timeline. + var drawOrderNode = map.drawOrder; + if (drawOrderNode == null) + drawOrderNode = map.draworder; + if (drawOrderNode != null) { + var timeline = new spine.DrawOrderTimeline(drawOrderNode.length); + var slotCount = skeletonData.slots.length; + var frameIndex = 0; + for (var j = 0; j < drawOrderNode.length; j++) { + var drawOrderMap = drawOrderNode[j]; + var drawOrder = null; + var offsets = this.getValue(drawOrderMap, "offsets", null); + if (offsets != null) { + drawOrder = spine.Utils.newArray(slotCount, -1); + var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var i = 0; i < offsets.length; i++) { + var offsetMap = offsets[i]; + var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + if (slotIndex == -1) + throw new Error("Slot not found: " + offsetMap.slot); + // Collect unchanged items. + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + // Collect remaining unchanged items. + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. + for (var i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] == -1) + drawOrder[i] = unchanged[--unchangedIndex]; + } + timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + // Event timeline. + if (map.events) { + var timeline = new spine.EventTimeline(map.events.length); + var frameIndex = 0; + for (var i = 0; i < map.events.length; i++) { + var eventMap = map.events[i]; + var eventData = skeletonData.findEvent(eventMap.name); + if (eventData == null) + throw new Error("Event not found: " + eventMap.name); + var event_3 = new spine.Event(eventMap.time, eventData); + event_3.intValue = this.getValue(eventMap, "int", eventData.intValue); + event_3.floatValue = this.getValue(eventMap, "float", eventData.floatValue); + event_3.stringValue = this.getValue(eventMap, "string", eventData.stringValue); + timeline.setFrame(frameIndex++, event_3); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (isNaN(duration)) { + throw new Error("Error while parsing animation, duration is NaN"); + } + skeletonData.animations.push(new spine.Animation(name, timelines, duration)); + }; + SkeletonJson.prototype.readCurve = function (map, timeline, frameIndex) { + if (!map.curve) + return; + if (map.curve === "stepped") + timeline.setStepped(frameIndex); + else if (Object.prototype.toString.call(map.curve) === '[object Array]') { + var curve = map.curve; + timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]); + } + }; + SkeletonJson.prototype.getValue = function (map, prop, defaultValue) { + return map[prop] !== undefined ? map[prop] : defaultValue; + }; + SkeletonJson.blendModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "normal") + return spine.BlendMode.Normal; + if (str == "additive") + return spine.BlendMode.Additive; + if (str == "multiply") + return spine.BlendMode.Multiply; + if (str == "screen") + return spine.BlendMode.Screen; + throw new Error("Unknown blend mode: " + str); + }; + SkeletonJson.positionModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "fixed") + return spine.PositionMode.Fixed; + if (str == "percent") + return spine.PositionMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.spacingModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "length") + return spine.SpacingMode.Length; + if (str == "fixed") + return spine.SpacingMode.Fixed; + if (str == "percent") + return spine.SpacingMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.rotateModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "tangent") + return spine.RotateMode.Tangent; + if (str == "chain") + return spine.RotateMode.Chain; + if (str == "chainscale") + return spine.RotateMode.ChainScale; + throw new Error("Unknown rotate mode: " + str); + }; + return SkeletonJson; + }()); + spine.SkeletonJson = SkeletonJson; + var LinkedMesh = (function () { + function LinkedMesh(mesh, skin, slotIndex, parent) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + } + return LinkedMesh; + }()); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Skin = (function () { + function Skin(name) { + this.attachments = new Array(); + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + Skin.prototype.addAttachment = function (slotIndex, name, attachment) { + if (attachment == null) + throw new Error("attachment cannot be null."); + var attachments = this.attachments; + if (slotIndex >= attachments.length) + attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) + attachments[slotIndex] = {}; + attachments[slotIndex][name] = attachment; + }; + /** @return May be null. */ + Skin.prototype.getAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + }; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + Skin.prototype.attachAll = function (skeleton, oldSkin) { + var slotIndex = 0; + for (var i = 0; i < skeleton.slots.length; i++) { + var slot = skeleton.slots[i]; + var slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + var dictionary = oldSkin.attachments[slotIndex]; + for (var key in dictionary) { + var skinAttachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + var attachment = this.getAttachment(slotIndex, name); + if (attachment != null) + slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + }; + return Skin; + }()); + spine.Skin = Skin; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Slot = (function () { + function Slot(data, bone) { + this.attachmentVertices = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (bone == null) + throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new spine.Color(); + this.setToSetupPose(); + } + /** @return May be null. */ + Slot.prototype.getAttachment = function () { + return this.attachment; + }; + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + Slot.prototype.setAttachment = function (attachment) { + if (this.attachment == attachment) + return; + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + this.attachmentVertices.length = 0; + }; + Slot.prototype.setAttachmentTime = function (time) { + this.attachmentTime = this.bone.skeleton.time - time; + }; + /** Returns the time since the attachment was set. */ + Slot.prototype.getAttachmentTime = function () { + return this.bone.skeleton.time - this.attachmentTime; + }; + Slot.prototype.setToSetupPose = function () { + this.color.setFromColor(this.data.color); + if (this.data.attachmentName == null) + this.attachment = null; + else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + }; + return Slot; + }()); + spine.Slot = Slot; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SlotData = (function () { + function SlotData(index, name, boneData) { + this.color = new spine.Color(1, 1, 1, 1); + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + if (boneData == null) + throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + return SlotData; + }()); + spine.SlotData = SlotData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TransformConstraint = (function () { + function TransformConstraint(data, skeleton) { + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.temp = new spine.Vector2(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this.scaleMix = data.scaleMix; + this.shearMix = data.shearMix; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + TransformConstraint.prototype.apply = function () { + this.update(); + }; + TransformConstraint.prototype.update = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (rotateMix > 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) - Math.atan2(c, a) + this.data.offsetRotation * spine.MathUtils.degRad; + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + if (translateMix > 0) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + } + if (scaleMix > 0) { + var bs = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + var ts = Math.sqrt(ta * ta + tc * tc); + var s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleX) * scaleMix) / bs : 0; + bone.a *= s; + bone.c *= s; + bs = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = Math.sqrt(tb * tb + td * td); + s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleY) * scaleMix) / bs : 0; + bone.b *= s; + bone.d *= s; + } + if (shearMix > 0) { + var b = bone.b, d = bone.d; + var by = Math.atan2(d, b); + var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r = by + (r + this.data.offsetShearY * spine.MathUtils.degRad) * shearMix; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + } + } + }; + return TransformConstraint; + }()); + spine.TransformConstraint = TransformConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TransformConstraintData = (function () { + function TransformConstraintData(name) { + this.bones = new Array(); + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.offsetRotation = 0; + this.offsetX = 0; + this.offsetY = 0; + this.offsetScaleX = 0; + this.offsetScaleY = 0; + this.offsetShearY = 0; + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return TransformConstraintData; + }()); + spine.TransformConstraintData = TransformConstraintData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Color = (function () { + function Color(r, g, b, a) { + if (r === void 0) { r = 0; } + if (g === void 0) { g = 0; } + if (b === void 0) { b = 0; } + if (a === void 0) { a = 0; } + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + Color.prototype.set = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.clamp(); + }; + Color.prototype.setFromColor = function (c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + }; + Color.prototype.setFromString = function (hex) { + hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255.0; + this.g = parseInt(hex.substr(2, 2), 16) / 255.0; + this.b = parseInt(hex.substr(4, 2), 16) / 255.0; + this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; + }; + Color.prototype.add = function (r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + this.clamp(); + }; + Color.prototype.clamp = function () { + if (this.r < 0) + this.r = 0; + else if (this.r > 1) + this.r = 1; + if (this.g < 0) + this.g = 0; + else if (this.g > 1) + this.g = 1; + if (this.b < 0) + this.b = 0; + else if (this.b > 1) + this.b = 1; + if (this.a < 0) + this.a = 0; + else if (this.a > 1) + this.a = 1; + return this; + }; + return Color; + }()); + spine.Color = Color; + var MathUtils = (function () { + function MathUtils() { + } + MathUtils.clamp = function (value, min, max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + }; + MathUtils.cosDeg = function (degrees) { + return Math.cos(degrees * MathUtils.degRad); + }; + MathUtils.sinDeg = function (degrees) { + return Math.sin(degrees * MathUtils.degRad); + }; + MathUtils.signum = function (value) { + return value >= 0 ? 1 : -1; + }; + MathUtils.toInt = function (x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + }; + MathUtils.PI = 3.1415927; + MathUtils.PI2 = MathUtils.PI * 2; + MathUtils.radiansToDegrees = 180 / MathUtils.PI; + MathUtils.radDeg = MathUtils.radiansToDegrees; + MathUtils.degreesToRadians = MathUtils.PI / 180; + MathUtils.degRad = MathUtils.degreesToRadians; + return MathUtils; + }()); + spine.MathUtils = MathUtils; + var Utils = (function () { + function Utils() { + } + Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { + for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + }; + Utils.setArraySize = function (array, size, value) { + if (value === void 0) { value = 0; } + var oldSize = array.length; + if (oldSize == size) + return array; + array.length = size; + if (oldSize < size) { + for (var i = oldSize; i < size; i++) + array[i] = value; + } + return array; + }; + Utils.newArray = function (size, defaultValue) { + var array = new Array(size); + for (var i = 0; i < size; i++) + array[i] = defaultValue; + return array; + }; + Utils.newFloatArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Float32Array(size); + } + else { + var array = new Array(size); + for (var i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + }; + Utils.toFloatArray = function (array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + }; + Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; + return Utils; + }()); + spine.Utils = Utils; + var Pool = (function () { + function Pool(instantiator) { + this._items = new Array(16); + this._instantiator = instantiator; + } + Pool.prototype.obtain = function () { + return this._items.length > 0 ? this._items.pop() : this._instantiator(); + }; + Pool.prototype.free = function (item) { + this._items.push(item); + }; + Pool.prototype.freeAll = function (items) { + for (var i = 0; i < items.length; i++) + this._items[i] = items[i]; + }; + Pool.prototype.clear = function () { + this._items.length = 0; + }; + return Pool; + }()); + spine.Pool = Pool; + var Vector2 = (function () { + function Vector2(x, y) { + if (x === void 0) { x = 0; } + if (y === void 0) { y = 0; } + this.x = x; + this.y = y; + } + Vector2.prototype.set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + return Vector2; + }()); + spine.Vector2 = Vector2; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Attachment = (function () { + function Attachment(name) { + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return Attachment; + }()); + spine.Attachment = Attachment; + var VertexAttachment = (function (_super) { + __extends(VertexAttachment, _super); + function VertexAttachment(name) { + _super.call(this, name); + this.worldVerticesLength = 0; + } + VertexAttachment.prototype.computeWorldVertices = function (slot, worldVertices) { + this.computeWorldVerticesWith(slot, 0, this.worldVerticesLength, worldVertices, 0); + }; + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + VertexAttachment.prototype.computeWorldVerticesWith = function (slot, start, count, worldVertices, offset) { + count += offset; + var skeleton = slot.bone.skeleton; + var x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices; + var bones = this.bones; + if (bones == null) { + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v_1 = start, w = offset; w < count; v_1 += 2, w += 2) { + var vx = vertices[v_1], vy = vertices[v_1 + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + var v = 0, skip = 0; + for (var i = 0; i < start; i += 2) { + var n = bones[v]; + v += n + 1; + skip += n; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = offset, b = skip * 3; w < count; w += 2) { + var wx = x, wy = y; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + else { + var deform = deformArray; + for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) { + var wx = x, wy = y; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + }; + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + VertexAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment; + }; + return VertexAttachment; + }(Attachment)); + spine.VertexAttachment = VertexAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + })(spine.AttachmentType || (spine.AttachmentType = {})); + var AttachmentType = spine.AttachmentType; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var BoundingBoxAttachment = (function (_super) { + __extends(BoundingBoxAttachment, _super); + function BoundingBoxAttachment(name) { + _super.call(this, name); + } + return BoundingBoxAttachment; + }(spine.VertexAttachment)); + spine.BoundingBoxAttachment = BoundingBoxAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var MeshAttachment = (function (_super) { + __extends(MeshAttachment, _super); + function MeshAttachment(name) { + _super.call(this, name); + this.color = new spine.Color(1, 1, 1, 1); + this.inheritDeform = false; + this.tempColor = new spine.Color(0, 0, 0, 0); + } + MeshAttachment.prototype.updateUVs = function () { + var regionUVs = this.regionUVs; + var verticesLength = regionUVs.length; + var worldVerticesLength = (verticesLength >> 1) * 8; + if (this.worldVertices == null || this.worldVertices.length != worldVerticesLength) + this.worldVertices = spine.Utils.newFloatArray(worldVerticesLength); + var u = 0, v = 0, width = 0, height = 0; + if (this.region == null) { + u = v = 0; + width = height = 1; + } + else { + u = this.region.u; + v = this.region.v; + width = this.region.u2 - u; + height = this.region.v2 - v; + } + if (this.region.rotate) { + for (var i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i + 1] * width; + this.worldVertices[w + 1] = v + height - regionUVs[i] * height; + } + } + else { + for (var i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i] * width; + this.worldVertices[w + 1] = v + regionUVs[i + 1] * height; + } + } + }; + /** @return The updated world vertices. */ + MeshAttachment.prototype.updateWorldVertices = function (slot, premultipliedAlpha) { + var skeleton = slot.bone.skeleton; + var skeletonColor = skeleton.color, slotColor = slot.color, meshColor = this.color; + var alpha = skeletonColor.a * slotColor.a * meshColor.a; + var multiplier = premultipliedAlpha ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * meshColor.r * multiplier, skeletonColor.g * slotColor.g * meshColor.g * multiplier, skeletonColor.b * slotColor.b * meshColor.b * multiplier, alpha); + var x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices, worldVertices = this.worldVertices; + var bones = this.bones; + if (bones == null) { + var verticesLength = vertices.length; + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v = 0, w = 0; v < verticesLength; v += 2, w += 8) { + var vx = vertices[v], vy = vertices[v + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + return worldVertices; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = 0, v = 0, b = 0, n = bones.length; v < n; w += 8) { + var wx = x, wy = y; + var nn = bones[v++] + v; + for (; v < nn; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + else { + var deform = deformArray; + for (var w = 0, v = 0, b = 0, f = 0, n = bones.length; v < n; w += 8) { + var wx = x, wy = y; + var nn = bones[v++] + v; + for (; v < nn; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + return worldVertices; + }; + MeshAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment || (this.inheritDeform && this._parentMesh == sourceAttachment); + }; + MeshAttachment.prototype.getParentMesh = function () { + return this._parentMesh; + }; + /** @param parentMesh May be null. */ + MeshAttachment.prototype.setParentMesh = function (parentMesh) { + this._parentMesh = parentMesh; + if (parentMesh != null) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + } + }; + return MeshAttachment; + }(spine.VertexAttachment)); + spine.MeshAttachment = MeshAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathAttachment = (function (_super) { + __extends(PathAttachment, _super); + function PathAttachment(name) { + _super.call(this, name); + this.closed = false; + this.constantSpeed = false; + } + return PathAttachment; + }(spine.VertexAttachment)); + spine.PathAttachment = PathAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var RegionAttachment = (function (_super) { + __extends(RegionAttachment, _super); + function RegionAttachment(name) { + _super.call(this, name); + this.x = 0; + this.y = 0; + this.scaleX = 1; + this.scaleY = 1; + this.rotation = 0; + this.width = 0; + this.height = 0; + this.color = new spine.Color(1, 1, 1, 1); + this.offset = spine.Utils.newFloatArray(8); + this.vertices = spine.Utils.newFloatArray(8 * 4); + this.tempColor = new spine.Color(1, 1, 1, 1); + } + RegionAttachment.prototype.setRegion = function (region) { + var vertices = this.vertices; + if (region.rotate) { + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v2; + vertices[RegionAttachment.U3] = region.u; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v; + vertices[RegionAttachment.U1] = region.u2; + vertices[RegionAttachment.V1] = region.v2; + } + else { + vertices[RegionAttachment.U1] = region.u; + vertices[RegionAttachment.V1] = region.v2; + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v; + vertices[RegionAttachment.U3] = region.u2; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v2; + } + }; + RegionAttachment.prototype.updateOffset = function () { + var regionScaleX = this.width / this.region.originalWidth * this.scaleX; + var regionScaleY = this.height / this.region.originalHeight * this.scaleY; + var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + var localX2 = localX + this.region.width * regionScaleX; + var localY2 = localY + this.region.height * regionScaleY; + var radians = this.rotation * Math.PI / 180; + var cos = Math.cos(radians); + var sin = Math.sin(radians); + var localXCos = localX * cos + this.x; + var localXSin = localX * sin; + var localYCos = localY * cos + this.y; + var localYSin = localY * sin; + var localX2Cos = localX2 * cos + this.x; + var localX2Sin = localX2 * sin; + var localY2Cos = localY2 * cos + this.y; + var localY2Sin = localY2 * sin; + var offset = this.offset; + offset[RegionAttachment.OX1] = localXCos - localYSin; + offset[RegionAttachment.OY1] = localYCos + localXSin; + offset[RegionAttachment.OX2] = localXCos - localY2Sin; + offset[RegionAttachment.OY2] = localY2Cos + localXSin; + offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; + offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; + offset[RegionAttachment.OX4] = localX2Cos - localYSin; + offset[RegionAttachment.OY4] = localYCos + localX2Sin; + }; + RegionAttachment.prototype.updateWorldVertices = function (slot, premultipliedAlpha) { + var skeleton = slot.bone.skeleton; + var skeletonColor = skeleton.color; + var slotColor = slot.color; + var regionColor = this.color; + var alpha = skeletonColor.a * slotColor.a * regionColor.a; + var multiplier = premultipliedAlpha ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); + var vertices = this.vertices; + var offset = this.offset; + var bone = slot.bone; + var x = skeleton.x + bone.worldX, y = skeleton.y + bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var offsetX = 0, offsetY = 0; + offsetX = offset[RegionAttachment.OX1]; + offsetY = offset[RegionAttachment.OY1]; + vertices[RegionAttachment.X1] = offsetX * a + offsetY * b + x; // br + vertices[RegionAttachment.Y1] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C1R] = color.r; + vertices[RegionAttachment.C1G] = color.g; + vertices[RegionAttachment.C1B] = color.b; + vertices[RegionAttachment.C1A] = color.a; + offsetX = offset[RegionAttachment.OX2]; + offsetY = offset[RegionAttachment.OY2]; + vertices[RegionAttachment.X2] = offsetX * a + offsetY * b + x; // bl + vertices[RegionAttachment.Y2] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C2R] = color.r; + vertices[RegionAttachment.C2G] = color.g; + vertices[RegionAttachment.C2B] = color.b; + vertices[RegionAttachment.C2A] = color.a; + offsetX = offset[RegionAttachment.OX3]; + offsetY = offset[RegionAttachment.OY3]; + vertices[RegionAttachment.X3] = offsetX * a + offsetY * b + x; // ul + vertices[RegionAttachment.Y3] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C3R] = color.r; + vertices[RegionAttachment.C3G] = color.g; + vertices[RegionAttachment.C3B] = color.b; + vertices[RegionAttachment.C3A] = color.a; + offsetX = offset[RegionAttachment.OX4]; + offsetY = offset[RegionAttachment.OY4]; + vertices[RegionAttachment.X4] = offsetX * a + offsetY * b + x; // ur + vertices[RegionAttachment.Y4] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C4R] = color.r; + vertices[RegionAttachment.C4G] = color.g; + vertices[RegionAttachment.C4B] = color.b; + vertices[RegionAttachment.C4A] = color.a; + return vertices; + }; + RegionAttachment.OX1 = 0; + RegionAttachment.OY1 = 1; + RegionAttachment.OX2 = 2; + RegionAttachment.OY2 = 3; + RegionAttachment.OX3 = 4; + RegionAttachment.OY3 = 5; + RegionAttachment.OX4 = 6; + RegionAttachment.OY4 = 7; + RegionAttachment.X1 = 0; + RegionAttachment.Y1 = 1; + RegionAttachment.C1R = 2; + RegionAttachment.C1G = 3; + RegionAttachment.C1B = 4; + RegionAttachment.C1A = 5; + RegionAttachment.U1 = 6; + RegionAttachment.V1 = 7; + RegionAttachment.X2 = 8; + RegionAttachment.Y2 = 9; + RegionAttachment.C2R = 10; + RegionAttachment.C2G = 11; + RegionAttachment.C2B = 12; + RegionAttachment.C2A = 13; + RegionAttachment.U2 = 14; + RegionAttachment.V2 = 15; + RegionAttachment.X3 = 16; + RegionAttachment.Y3 = 17; + RegionAttachment.C3R = 18; + RegionAttachment.C3G = 19; + RegionAttachment.C3B = 20; + RegionAttachment.C3A = 21; + RegionAttachment.U3 = 22; + RegionAttachment.V3 = 23; + RegionAttachment.X4 = 24; + RegionAttachment.Y4 = 25; + RegionAttachment.C4R = 26; + RegionAttachment.C4G = 27; + RegionAttachment.C4B = 28; + RegionAttachment.C4A = 29; + RegionAttachment.U4 = 30; + RegionAttachment.V4 = 31; + return RegionAttachment; + }(spine.Attachment)); + spine.RegionAttachment = RegionAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TextureRegion = (function () { + function TextureRegion() { + this.u = 0; + this.v = 0; + this.u2 = 0; + this.v2 = 0; + this.width = 0; + this.height = 0; + this.rotate = false; + this.offsetX = 0; + this.offsetY = 0; + this.originalWidth = 0; + this.originalHeight = 0; + } + return TextureRegion; + }()); + spine.TextureRegion = TextureRegion; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var AssetManager = (function () { + function AssetManager(gl) { + this._assets = {}; + this._errors = {}; + this._toLoad = 0; + this._loaded = 0; + this._gl = gl; + } + AssetManager.prototype.loadText = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + this._toLoad++; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + if (success) + success(path, request.responseText); + _this._assets[path] = request.responseText; + } + else { + if (error) + error(path, "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText); + _this._errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; + } + _this._toLoad--; + _this._loaded++; + } + }; + request.open("GET", path, true); + request.send(); + }; + AssetManager.prototype.loadTexture = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + this._toLoad++; + var img = new Image(); + img.src = path; + img.onload = function (ev) { + if (success) + success(path, img); + var texture = new webgl.Texture(_this._gl, img); + _this._assets[path] = texture; + _this._toLoad--; + _this._loaded++; + }; + img.onerror = function (ev) { + if (error) + error(path, "Couldn't load image " + path); + _this._errors[path] = "Couldn't load image " + path; + _this._toLoad--; + _this._loaded++; + }; + }; + AssetManager.prototype.get = function (path) { + return this._assets[path]; + }; + AssetManager.prototype.remove = function (path) { + var asset = this._assets[path]; + if (asset instanceof webgl.Texture) { + asset.dispose(); + } + this._assets[path] = null; + }; + AssetManager.prototype.removeAll = function () { + for (var key in this._assets) { + var asset = this._assets[key]; + if (asset instanceof webgl.Texture) + asset.dispose(); + } + this._assets = {}; + }; + AssetManager.prototype.isLoadingComplete = function () { + return this._toLoad == 0; + }; + AssetManager.prototype.toLoad = function () { + return this._toLoad; + }; + AssetManager.prototype.loaded = function () { + return this._loaded; + }; + AssetManager.prototype.dispose = function () { + this.removeAll(); + }; + AssetManager.prototype.hasErrors = function () { + return Object.keys(this._errors).length > 0; + }; + AssetManager.prototype.errors = function () { + return this._errors; + }; + return AssetManager; + }()); + webgl.AssetManager = AssetManager; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + webgl.M00 = 0; + webgl.M01 = 4; + webgl.M02 = 8; + webgl.M03 = 12; + webgl.M10 = 1; + webgl.M11 = 5; + webgl.M12 = 9; + webgl.M13 = 13; + webgl.M20 = 2; + webgl.M21 = 6; + webgl.M22 = 10; + webgl.M23 = 14; + webgl.M30 = 3; + webgl.M31 = 7; + webgl.M32 = 11; + webgl.M33 = 15; + var Matrix4 = (function () { + function Matrix4() { + this.temp = new Float32Array(16); + this.values = new Float32Array(16); + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M11] = 1; + v[webgl.M22] = 1; + v[webgl.M33] = 1; + } + Matrix4.prototype.set = function (values) { + this.values.set(values); + return this; + }; + Matrix4.prototype.transpose = function () { + var t = this.temp; + var v = this.values; + t[webgl.M00] = v[webgl.M00]; + t[webgl.M01] = v[webgl.M10]; + t[webgl.M02] = v[webgl.M20]; + t[webgl.M03] = v[webgl.M30]; + t[webgl.M10] = v[webgl.M01]; + t[webgl.M11] = v[webgl.M11]; + t[webgl.M12] = v[webgl.M21]; + t[webgl.M13] = v[webgl.M31]; + t[webgl.M20] = v[webgl.M02]; + t[webgl.M21] = v[webgl.M12]; + t[webgl.M22] = v[webgl.M22]; + t[webgl.M23] = v[webgl.M32]; + t[webgl.M30] = v[webgl.M03]; + t[webgl.M31] = v[webgl.M13]; + t[webgl.M32] = v[webgl.M23]; + t[webgl.M33] = v[webgl.M33]; + return this.set(t); + }; + Matrix4.prototype.identity = function () { + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M01] = 0; + v[webgl.M02] = 0; + v[webgl.M03] = 0; + v[webgl.M10] = 0; + v[webgl.M11] = 1; + v[webgl.M12] = 0; + v[webgl.M13] = 0; + v[webgl.M20] = 0; + v[webgl.M21] = 0; + v[webgl.M22] = 1; + v[webgl.M23] = 0; + v[webgl.M30] = 0; + v[webgl.M31] = 0; + v[webgl.M32] = 0; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.invert = function () { + var v = this.values; + var t = this.temp; + var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + if (l_det == 0) + throw new Error("non-invertible matrix"); + var inv_det = 1.0 / l_det; + t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] + - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] + + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] + - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] + + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] + + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] + - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; + t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; + t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; + t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] + - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; + v[webgl.M00] = t[webgl.M00] * inv_det; + v[webgl.M01] = t[webgl.M01] * inv_det; + v[webgl.M02] = t[webgl.M02] * inv_det; + v[webgl.M03] = t[webgl.M03] * inv_det; + v[webgl.M10] = t[webgl.M10] * inv_det; + v[webgl.M11] = t[webgl.M11] * inv_det; + v[webgl.M12] = t[webgl.M12] * inv_det; + v[webgl.M13] = t[webgl.M13] * inv_det; + v[webgl.M20] = t[webgl.M20] * inv_det; + v[webgl.M21] = t[webgl.M21] * inv_det; + v[webgl.M22] = t[webgl.M22] * inv_det; + v[webgl.M23] = t[webgl.M23] * inv_det; + v[webgl.M30] = t[webgl.M30] * inv_det; + v[webgl.M31] = t[webgl.M31] * inv_det; + v[webgl.M32] = t[webgl.M32] * inv_det; + v[webgl.M33] = t[webgl.M33] * inv_det; + return this; + }; + Matrix4.prototype.determinant = function () { + var v = this.values; + return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + }; + Matrix4.prototype.translate = function (x, y, z) { + var v = this.values; + v[webgl.M03] += x; + v[webgl.M13] += y; + v[webgl.M23] += z; + return this; + }; + Matrix4.prototype.copy = function () { + return new Matrix4().set(this.values); + }; + Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { + this.identity(); + var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); + var l_a1 = (far + near) / (near - far); + var l_a2 = (2 * far * near) / (near - far); + var v = this.values; + v[webgl.M00] = l_fd / aspectRatio; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = l_fd; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = l_a1; + v[webgl.M32] = -1; + v[webgl.M03] = 0; + v[webgl.M13] = 0; + v[webgl.M23] = l_a2; + v[webgl.M33] = 0; + return this; + }; + Matrix4.prototype.ortho2d = function (x, y, width, height) { + return this.ortho(x, x + width, y, y + height, 0, 1); + }; + Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { + this.identity(); + var x_orth = 2 / (right - left); + var y_orth = 2 / (top - bottom); + var z_orth = -2 / (far - near); + var tx = -(right + left) / (right - left); + var ty = -(top + bottom) / (top - bottom); + var tz = -(far + near) / (far - near); + var v = this.values; + v[webgl.M00] = x_orth; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = y_orth; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = z_orth; + v[webgl.M32] = 0; + v[webgl.M03] = tx; + v[webgl.M13] = ty; + v[webgl.M23] = tz; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.multiply = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; + t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; + t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; + t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; + t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; + t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; + t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; + t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; + t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; + t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; + t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; + t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; + t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; + t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; + t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; + t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; + return this.set(this.temp); + }; + Matrix4.prototype.multiplyLeft = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; + t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; + t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; + t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; + t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; + t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; + t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; + t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; + t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; + t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; + t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; + t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; + t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; + t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; + t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; + t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; + return this.set(this.temp); + }; + return Matrix4; + }()); + webgl.Matrix4 = Matrix4; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Mesh = (function () { + function Mesh(gl, _attributes, maxVertices, maxIndices) { + this._attributes = _attributes; + this._verticesLength = 0; + this._dirtyVertices = false; + this._indicesLength = 0; + this._dirtyIndices = false; + this._elementsPerVertex = 0; + this._gl = gl; + this._elementsPerVertex = 0; + for (var i = 0; i < _attributes.length; i++) { + this._elementsPerVertex += _attributes[i].numElements; + } + this._vertices = new Float32Array(maxVertices * this._elementsPerVertex); + this._indices = new Uint16Array(maxIndices); + } + Mesh.prototype.attributes = function () { return this._attributes; }; + Mesh.prototype.maxVertices = function () { return this._vertices.length / this._elementsPerVertex; }; + Mesh.prototype.numVertices = function () { return this._verticesLength / this._elementsPerVertex; }; + Mesh.prototype.setVerticesLength = function (length) { + this._dirtyVertices = true; + this._verticesLength = length; + }; + Mesh.prototype.vertices = function () { return this._vertices; }; + Mesh.prototype.maxIndices = function () { return this._indices.length; }; + Mesh.prototype.numIndices = function () { return this._indicesLength; }; + Mesh.prototype.setIndicesLength = function (length) { + this._dirtyIndices = true; + this._indicesLength = length; + }; + Mesh.prototype.indices = function () { return this._indices; }; + ; + Mesh.prototype.setVertices = function (vertices) { + this._dirtyVertices = true; + if (vertices.length > this._vertices.length) + throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); + this._vertices.set(vertices, 0); + this._verticesLength = vertices.length; + }; + Mesh.prototype.setIndices = function (indices) { + this._dirtyIndices = true; + if (indices.length > this._indices.length) + throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); + this._indices.set(indices, 0); + this._indicesLength = indices.length; + }; + Mesh.prototype.draw = function (shader, primitiveType) { + this.drawWithOffset(shader, primitiveType, 0, this._indicesLength > 0 ? this._indicesLength : this._verticesLength); + }; + Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { + var gl = this._gl; + if (this._dirtyVertices || this._dirtyIndices) + this.update(); + this.bind(shader); + if (this._indicesLength > 0) + gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); + else + gl.drawArrays(primitiveType, offset, count); + this.unbind(shader); + }; + Mesh.prototype.bind = function (shader) { + var gl = this._gl; + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + var offset = 0; + for (var i = 0; i < this._attributes.length; i++) { + var attrib = this._attributes[i]; + var location_1 = shader.getAttributeLocation(attrib.name); + gl.enableVertexAttribArray(location_1); + gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this._elementsPerVertex * 4, offset * 4); + offset += attrib.numElements; + } + if (this._indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + }; + Mesh.prototype.unbind = function (shader) { + var gl = this._gl; + for (var i = 0; i < this._attributes.length; i++) { + var attrib = this._attributes[i]; + var location_2 = shader.getAttributeLocation(attrib.name); + gl.disableVertexAttribArray(location_2); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + if (this._indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + }; + Mesh.prototype.update = function () { + var gl = this._gl; + if (this._dirtyVertices) { + if (!this._verticesBuffer) { + this._verticesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this._vertices.subarray(0, this._verticesLength), gl.STATIC_DRAW); + this._dirtyVertices = false; + } + if (this._dirtyIndices) { + if (!this._indicesBuffer) { + this._indicesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this._indices.subarray(0, this._indicesLength), gl.STATIC_DRAW); + this._dirtyIndices = false; + } + }; + Mesh.prototype.dispose = function () { + var gl = this._gl; + gl.deleteBuffer(this._verticesBuffer); + gl.deleteBuffer(this._indicesBuffer); + }; + return Mesh; + }()); + webgl.Mesh = Mesh; + var VertexAttribute = (function () { + function VertexAttribute(name, type, numElements) { + this.name = name; + this.type = type; + this.numElements = numElements; + } + return VertexAttribute; + }()); + webgl.VertexAttribute = VertexAttribute; + var Position2Attribute = (function (_super) { + __extends(Position2Attribute, _super); + function Position2Attribute() { + _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2); + } + return Position2Attribute; + }(VertexAttribute)); + webgl.Position2Attribute = Position2Attribute; + var Position3Attribute = (function (_super) { + __extends(Position3Attribute, _super); + function Position3Attribute() { + _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3); + } + return Position3Attribute; + }(VertexAttribute)); + webgl.Position3Attribute = Position3Attribute; + var TexCoordAttribute = (function (_super) { + __extends(TexCoordAttribute, _super); + function TexCoordAttribute(unit) { + if (unit === void 0) { unit = 0; } + _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2); + } + return TexCoordAttribute; + }(VertexAttribute)); + webgl.TexCoordAttribute = TexCoordAttribute; + var ColorAttribute = (function (_super) { + __extends(ColorAttribute, _super); + function ColorAttribute() { + _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4); + } + return ColorAttribute; + }(VertexAttribute)); + webgl.ColorAttribute = ColorAttribute; + (function (VertexAttributeType) { + VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; + })(webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); + var VertexAttributeType = webgl.VertexAttributeType; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var PolygonBatcher = (function () { + function PolygonBatcher(gl, maxVertices) { + if (maxVertices === void 0) { maxVertices = 10920; } + this._drawing = false; + this._shader = null; + this._lastTexture = null; + this._verticesLength = 0; + this._indicesLength = 0; + this._srcBlend = WebGLRenderingContext.SRC_ALPHA; + this._dstBlend = WebGLRenderingContext.ONE_MINUS_SRC_ALPHA; + if (maxVertices > 10920) + throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this._gl = gl; + this._mesh = new webgl.Mesh(gl, [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()], maxVertices, maxVertices * 3); + } + PolygonBatcher.prototype.begin = function (shader) { + var gl = this._gl; + if (this._drawing) + throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); + this._drawCalls = 0; + this._shader = shader; + this._lastTexture = null; + this._drawing = true; + gl.enable(gl.BLEND); + gl.blendFunc(this._srcBlend, this._dstBlend); + }; + PolygonBatcher.prototype.setBlendMode = function (srcBlend, dstBlend) { + var gl = this._gl; + this._srcBlend = srcBlend; + this._dstBlend = dstBlend; + if (this._drawing) { + this.flush(); + gl.blendFunc(this._srcBlend, this._dstBlend); + } + }; + PolygonBatcher.prototype.draw = function (texture, vertices, indices) { + if (texture != this._lastTexture) { + this.flush(); + this._lastTexture = texture; + texture.bind(); + } + else if (this._verticesLength + vertices.length > this._mesh.vertices().length || + this._indicesLength + indices.length > this._mesh.indices().length) { + this.flush(); + } + var indexStart = this._mesh.numVertices(); + this._mesh.vertices().set(vertices, this._verticesLength); + this._verticesLength += vertices.length; + this._mesh.setVerticesLength(this._verticesLength); + var indicesArray = this._mesh.indices(); + for (var i = this._indicesLength, j = 0; j < indices.length; i++, j++) + indicesArray[i] = indices[j] + indexStart; + this._indicesLength += indices.length; + this._mesh.setIndicesLength(this._indicesLength); + }; + PolygonBatcher.prototype.flush = function () { + var gl = this._gl; + if (this._verticesLength == 0) + return; + this._mesh.draw(this._shader, gl.TRIANGLES); + this._verticesLength = 0; + this._indicesLength = 0; + this._mesh.setVerticesLength(0); + this._mesh.setIndicesLength(0); + this._drawCalls++; + }; + PolygonBatcher.prototype.end = function () { + var gl = this._gl; + if (!this._drawing) + throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); + if (this._verticesLength > 0 || this._indicesLength > 0) + this.flush(); + this._shader = null; + this._lastTexture = null; + this._drawing = false; + gl.disable(gl.BLEND); + }; + PolygonBatcher.prototype.drawCalls = function () { return this._drawCalls; }; + return PolygonBatcher; + }()); + webgl.PolygonBatcher = PolygonBatcher; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Shader = (function () { + function Shader(gl, _vertexShader, _fragmentShader) { + this._vertexShader = _vertexShader; + this._fragmentShader = _fragmentShader; + this._vs = null; + this._fs = null; + this._program = null; + this._tmp2x2 = new Float32Array(2 * 2); + this._tmp3x3 = new Float32Array(3 * 3); + this._tmp4x4 = new Float32Array(4 * 4); + this._gl = gl; + this.compile(); + } + Shader.prototype.program = function () { return this._program; }; + Shader.prototype.vertexShader = function () { return this._vertexShader; }; + Shader.prototype.fragmentShader = function () { return this._fragmentShader; }; + Shader.prototype.compile = function () { + var gl = this._gl; + try { + this._vs = this.compileShader(gl.VERTEX_SHADER, this._vertexShader); + this._fs = this.compileShader(gl.FRAGMENT_SHADER, this._fragmentShader); + this._program = this.compileProgram(this._vs, this._fs); + } + catch (e) { + this.dispose(); + throw e; + } + }; + Shader.prototype.compileShader = function (type, source) { + var gl = this._gl; + var shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); + gl.deleteShader(shader); + throw new Error(error); + } + return shader; + }; + Shader.prototype.compileProgram = function (vs, fs) { + var gl = this._gl; + var program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); + gl.deleteProgram(program); + throw new Error(error); + } + return program; + }; + Shader.prototype.bind = function () { + this._gl.useProgram(this._program); + }; + Shader.prototype.unbind = function () { + this._gl.useProgram(null); + }; + Shader.prototype.setUniformi = function (uniform, value) { + this._gl.uniform1i(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniformf = function (uniform, value) { + this._gl.uniform1f(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniform2f = function (uniform, value, value2) { + this._gl.uniform2f(this.getUniformLocation(uniform), value, value2); + }; + Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { + this._gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); + }; + Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { + this._gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); + }; + Shader.prototype.setUniform2x2f = function (uniform, value) { + var gl = this._gl; + this._tmp2x2.set(value); + gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this._tmp2x2); + }; + Shader.prototype.setUniform3x3f = function (uniform, value) { + var gl = this._gl; + this._tmp3x3.set(value); + gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this._tmp3x3); + }; + Shader.prototype.setUniform4x4f = function (uniform, value) { + var gl = this._gl; + this._tmp4x4.set(value); + gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this._tmp4x4); + }; + Shader.prototype.getUniformLocation = function (uniform) { + var gl = this._gl; + var location = gl.getUniformLocation(this._program, uniform); + if (!location) + throw new Error("Couldn't find location for uniform " + uniform); + return location; + }; + Shader.prototype.getAttributeLocation = function (attribute) { + var gl = this._gl; + var location = gl.getAttribLocation(this._program, attribute); + if (location == -1) + throw new Error("Couldn't find location for attribute " + attribute); + return location; + }; + Shader.prototype.dispose = function () { + var gl = this._gl; + if (this._vs) { + gl.deleteShader(this._vs); + this._vs = null; + } + if (this._fs) { + gl.deleteShader(this._fs); + this._fs = null; + } + if (this._program) { + gl.deleteProgram(this._program); + this._program = null; + } + }; + Shader.newColoredTextured = function (gl) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; + return new Shader(gl, vs, fs); + }; + Shader.newColored = function (gl) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; + return new Shader(gl, vs, fs); + }; + Shader.MVP_MATRIX = "u_projTrans"; + Shader.POSITION = "a_position"; + Shader.COLOR = "a_color"; + Shader.TEXCOORDS = "a_texCoords"; + Shader.SAMPLER = "u_texture"; + return Shader; + }()); + webgl.Shader = Shader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var SkeletonRenderer = (function () { + function SkeletonRenderer(gl) { + this.premultipliedAlpha = false; + this._gl = gl; + } + SkeletonRenderer.prototype.draw = function (batcher, skeleton) { + var premultipliedAlpha = this.premultipliedAlpha; + var blendMode = null; + var vertices = null; + var triangles = null; + var drawOrder = skeleton.drawOrder; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var attachment = slot.getAttachment(); + var texture = null; + if (attachment instanceof spine.RegionAttachment) { + var region = attachment; + vertices = region.updateWorldVertices(slot, premultipliedAlpha); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + texture = region.region.renderObject.texture; + } + else if (attachment instanceof spine.MeshAttachment) { + var mesh = attachment; + vertices = mesh.updateWorldVertices(slot, premultipliedAlpha); + triangles = mesh.triangles; + texture = mesh.region.renderObject.texture; + } + if (texture != null) { + var slotBlendMode = slot.data.blendMode; + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batcher.setBlendMode(webgl.getSourceGLBlendMode(this._gl, blendMode, premultipliedAlpha), webgl.getDestGLBlendMode(this._gl, blendMode)); + } + batcher.draw(texture, vertices, triangles); + } + } + }; + SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + return SkeletonRenderer; + }()); + webgl.SkeletonRenderer = SkeletonRenderer; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Texture = (function () { + function Texture(gl, image, useMipMaps) { + if (useMipMaps === void 0) { useMipMaps = false; } + this._boundUnit = 0; + this._gl = gl; + this._texture = gl.createTexture(); + this._image = image; + this.update(useMipMaps); + } + Texture.prototype.getImage = function () { + return this._image; + }; + Texture.prototype.setFilters = function (minFilter, magFilter) { + var gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); + }; + Texture.prototype.setWraps = function (uWrap, vWrap) { + var gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); + }; + Texture.prototype.update = function (useMipMaps) { + var gl = this._gl; + this.bind(); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (useMipMaps) + gl.generateMipmap(gl.TEXTURE_2D); + }; + Texture.prototype.bind = function (unit) { + if (unit === void 0) { unit = 0; } + var gl = this._gl; + this._boundUnit = unit; + gl.activeTexture(gl.TEXTURE0 + unit); + gl.bindTexture(gl.TEXTURE_2D, this._texture); + }; + Texture.prototype.unbind = function () { + var gl = this._gl; + gl.activeTexture(gl.TEXTURE0 + this._boundUnit); + gl.bindTexture(gl.TEXTURE_2D, null); + }; + Texture.prototype.dispose = function () { + var gl = this._gl; + gl.deleteTexture(this._texture); + }; + Texture.filterFromString = function (text) { + switch (text.toLowerCase()) { + case "nearest": return TextureFilter.Nearest; + case "linear": return TextureFilter.Linear; + case "mipmap": return TextureFilter.MipMap; + case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; + case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; + case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; + case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; + default: throw new Error("Unknown texture filter " + text); + } + }; + Texture.wrapFromString = function (text) { + switch (text.toLowerCase()) { + case "mirroredtepeat": return TextureWrap.MirroredRepeat; + case "clamptoedge": return TextureWrap.ClampToEdge; + case "repeat": return TextureWrap.Repeat; + default: throw new Error("Unknown texture wrap " + text); + } + }; + return Texture; + }()); + webgl.Texture = Texture; + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = WebGLRenderingContext.NEAREST] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = WebGLRenderingContext.LINEAR] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = WebGLRenderingContext.NEAREST_MIPMAP_NEAREST] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = WebGLRenderingContext.LINEAR_MIPMAP_NEAREST] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = WebGLRenderingContext.NEAREST_MIPMAP_LINEAR] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR] = "MipMapLinearLinear"; + })(webgl.TextureFilter || (webgl.TextureFilter = {})); + var TextureFilter = webgl.TextureFilter; + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = WebGLRenderingContext.MIRRORED_REPEAT] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = WebGLRenderingContext.CLAMP_TO_EDGE] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = WebGLRenderingContext.REPEAT] = "Repeat"; + })(webgl.TextureWrap || (webgl.TextureWrap = {})); + var TextureWrap = webgl.TextureWrap; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var TextureAtlas = (function () { + function TextureAtlas(atlasText, textureLoader) { + this.pages = new Array(); + this.regions = new Array(); + this.load(atlasText, textureLoader); + } + TextureAtlas.prototype.load = function (atlasText, textureLoader) { + if (textureLoader == null) + throw new Error("textureLoader cannot be null."); + var reader = new TextureAtlasReader(atlasText); + var tuple = new Array(4); + var page = null; + while (true) { + var line = reader.readLine(); + if (line == null) + break; + line = line.trim(); + if (line.length == 0) + page = null; + else if (!page) { + page = new TextureAtlasPage(); + page.name = line; + if (reader.readTuple(tuple) == 2) { + page.width = parseInt(tuple[0]); + page.height = parseInt(tuple[1]); + reader.readTuple(tuple); + } + // page.format = Format[tuple[0]]; we don't need format in WebGL + reader.readTuple(tuple); + page.minFilter = webgl.Texture.filterFromString(tuple[0]); + page.magFilter = webgl.Texture.filterFromString(tuple[1]); + var direction = reader.readValue(); + page.uWrap = webgl.TextureWrap.ClampToEdge; + page.vWrap = webgl.TextureWrap.ClampToEdge; + if (direction == "x") + page.uWrap = webgl.TextureWrap.Repeat; + else if (direction == "y") + page.vWrap = webgl.TextureWrap.Repeat; + else if (direction == "xy") + page.uWrap = page.vWrap = webgl.TextureWrap.Repeat; + page.texture = textureLoader(line); + page.texture.setFilters(page.minFilter, page.magFilter); + page.texture.setWraps(page.uWrap, page.vWrap); + page.width = page.texture.getImage().width; + page.height = page.texture.getImage().height; + this.pages.push(page); + } + else { + var region = new TextureAtlasRegion(); + region.name = line; + region.page = page; + region.rotate = reader.readValue() == "true"; + reader.readTuple(tuple); + var x = parseInt(tuple[0]); + var y = parseInt(tuple[1]); + reader.readTuple(tuple); + var width = parseInt(tuple[0]); + var height = parseInt(tuple[1]); + region.u = x / page.width; + region.v = y / page.height; + if (region.rotate) { + region.u2 = (x + height) / page.width; + region.v2 = (y + width) / page.height; + } + else { + region.u2 = (x + width) / page.width; + region.v2 = (y + height) / page.height; + } + region.x = x; + region.y = y; + region.width = Math.abs(width); + region.height = Math.abs(height); + if (reader.readTuple(tuple) == 4) { + // region.splits = new Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + if (reader.readTuple(tuple) == 4) { + //region.pads = Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + reader.readTuple(tuple); + } + } + region.originalWidth = parseInt(tuple[0]); + region.originalHeight = parseInt(tuple[1]); + reader.readTuple(tuple); + region.offsetX = parseInt(tuple[0]); + region.offsetY = parseInt(tuple[1]); + region.index = parseInt(reader.readValue()); + region.texture = page.texture; + this.regions.push(region); + } + } + }; + TextureAtlas.prototype.findRegion = function (name) { + for (var i = 0; i < this.regions.length; i++) { + if (this.regions[i].name == name) { + return this.regions[i]; + } + } + return null; + }; + TextureAtlas.prototype.dispose = function () { + for (var i = 0; i < this.pages.length; i++) { + this.pages[i].texture.dispose(); + } + }; + return TextureAtlas; + }()); + webgl.TextureAtlas = TextureAtlas; + var TextureAtlasReader = (function () { + function TextureAtlasReader(text) { + this.index = 0; + this.lines = text.split(/\r\n|\r|\n/); + } + TextureAtlasReader.prototype.readLine = function () { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + }; + TextureAtlasReader.prototype.readValue = function () { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + return line.substring(colon + 1).trim(); + }; + TextureAtlasReader.prototype.readTuple = function (tuple) { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + var i = 0, lastMatch = colon + 1; + for (; i < 3; i++) { + var comma = line.indexOf(",", lastMatch); + if (comma == -1) + break; + tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + } + tuple[i] = line.substring(lastMatch).trim(); + return i + 1; + }; + return TextureAtlasReader; + }()); + var TextureAtlasPage = (function () { + function TextureAtlasPage() { + } + return TextureAtlasPage; + }()); + webgl.TextureAtlasPage = TextureAtlasPage; + var TextureAtlasRegion = (function (_super) { + __extends(TextureAtlasRegion, _super); + function TextureAtlasRegion() { + _super.apply(this, arguments); + } + return TextureAtlasRegion; + }(spine.TextureRegion)); + webgl.TextureAtlasRegion = TextureAtlasRegion; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var TextureAtlasAttachmentLoader = (function () { + function TextureAtlasAttachmentLoader(atlas) { + this.atlas = atlas; + } + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) + throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + var attachment = new spine.RegionAttachment(name); + attachment.setRegion(region); + attachment.region = region; + return attachment; + }; + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) + throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + var attachment = new spine.MeshAttachment(name); + attachment.region = region; + return attachment; + }; + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { + return new spine.BoundingBoxAttachment(name); + }; + /** @return May be null to not load an attachment */ + TextureAtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { + return new spine.PathAttachment(name); + }; + return TextureAtlasAttachmentLoader; + }()); + webgl.TextureAtlasAttachmentLoader = TextureAtlasAttachmentLoader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Vector3 = (function () { + function Vector3() { + this.x = 0; + this.y = 0; + this.z = 0; + } + Vector3.prototype.set = function (x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + }; + Vector3.prototype.add = function (v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + }; + Vector3.prototype.sub = function (v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + }; + Vector3.prototype.scale = function (s) { + this.x *= s; + this.y *= s; + this.z *= s; + return this; + }; + Vector3.prototype.normalize = function () { + var len = this.length(); + if (len == 0) + return this; + len = 1 / len; + this.x *= len; + this.y *= len; + this.z *= len; + return this; + }; + Vector3.prototype.cross = function (v) { + return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); + }; + Vector3.prototype.multiply = function (matrix) { + var l_mat = matrix.values; + return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); + }; + Vector3.prototype.project = function (matrix) { + var l_mat = matrix.values; + var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); + return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); + }; + Vector3.prototype.dot = function (v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + }; + Vector3.prototype.length = function () { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + }; + Vector3.prototype.distance = function (v) { + var a = v.x - this.x; + var b = v.y - this.y; + var c = v.z - this.z; + return Math.sqrt(a * a + b * b + c * c); + }; + return Vector3; + }()); + webgl.Vector3 = Vector3; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + function getSourceGLBlendMode(gl, blendMode, premultipliedAlpha) { + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + switch (blendMode) { + case spine.BlendMode.Normal: return premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + case spine.BlendMode.Additive: return premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + case spine.BlendMode.Multiply: return gl.DST_COLOR; + case spine.BlendMode.Screen: return gl.ONE; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + webgl.getSourceGLBlendMode = getSourceGLBlendMode; + function getDestGLBlendMode(gl, blendMode) { + switch (blendMode) { + case spine.BlendMode.Normal: return gl.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Additive: return gl.ONE; + case spine.BlendMode.Multiply: return gl.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Screen: return gl.ONE_MINUS_SRC_ALPHA; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + webgl.getDestGLBlendMode = getDestGLBlendMode; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SpineWidget = (function () { + function SpineWidget(element, config) { + var _this = this; + this._mvp = new spine.webgl.Matrix4(); + this._paused = false; + this._lastFrameTime = Date.now() / 1000.0; + this._backgroundColor = new spine.Color(); + this._loaded = false; + if (!element) + throw new Error("Please provide a DOM element, e.g. document.getElementById('myelement')"); + if (!config) + throw new Error("Please provide a configuration, specifying at least the json file, atlas file and animation name"); + var elementId = element; + if (typeof (element) === "string") + element = document.getElementById(element); + if (element == null) + throw new Error("Element " + elementId + " does not exist"); + this.validateConfig(config); + var canvas = this.canvas = document.createElement("canvas"); + element.appendChild(canvas); + canvas.width = config.width; + canvas.height = config.height; + var webglConfig = { alpha: false }; + var gl = this.gl = (canvas.getContext("webgl", webglConfig) || canvas.getContext("experimental-webgl", webglConfig)); + this._shader = spine.webgl.Shader.newColoredTextured(gl); + this._batcher = new spine.webgl.PolygonBatcher(gl); + this._mvp.ortho2d(0, 0, 639, 479); + this._skeletonRenderer = new spine.webgl.SkeletonRenderer(gl); + var assets = this._assetManager = new spine.webgl.AssetManager(gl); + assets.loadText(config.atlas); + assets.loadText(config.json); + assets.loadTexture(config.atlas.replace(".atlas", ".png")); + requestAnimationFrame(function () { _this.load(); }); + } + SpineWidget.prototype.validateConfig = function (config) { + if (!config.atlas) + throw new Error("Please specify config.atlas"); + if (!config.json) + throw new Error("Please specify config.json"); + if (!config.animation) + throw new Error("Please specify config.animationName"); + if (!config.scale) + config.scale = 1.0; + if (!config.skin) + config.skin = "default"; + if (config.loop === undefined) + config.loop = true; + if (!config.y) + config.y = 20; + if (!config.width) + config.width = 640; + if (!config.height) + config.height = 480; + if (!config.x) + config.x = config.width / 2; + if (!config.backgroundColor) + config.backgroundColor = "#555555"; + if (!config.imagesPath) { + var index = config.atlas.lastIndexOf("/"); + if (index != -1) { + config.imagesPath = config.atlas.substr(0, index) + "/"; + } + else { + config.imagesPath = ""; + } + } + if (!config.premultipliedAlpha === undefined) + config.premultipliedAlpha = false; + this._backgroundColor.setFromString(config.backgroundColor); + this._config = config; + }; + SpineWidget.prototype.load = function () { + var _this = this; + var assetManager = this._assetManager; + var imagesPath = this._config.imagesPath; + var config = this._config; + if (assetManager.isLoadingComplete()) { + if (assetManager.hasErrors()) { + if (config.error) + config.error(this, "Failed to load assets: " + JSON.stringify(assetManager.errors)); + else + throw new Error("Failed to load assets: " + JSON.stringify(assetManager.errors)); + } + var atlas = new spine.webgl.TextureAtlas(this._assetManager.get(this._config.atlas), function (path) { + return assetManager.get(imagesPath + path); + }); + var atlasLoader = new spine.webgl.TextureAtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + // Set the scale to apply during parsing, parse the file, and create a new skeleton. + skeletonJson.scale = config.scale; + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(config.json)); + var skeleton = this.skeleton = new spine.Skeleton(skeletonData); + skeleton.x = config.x; + skeleton.y = config.y; + skeleton.setSkinByName(config.skin); + var animationState = this.state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + animationState.setAnimation(0, config.animation, true); + if (config.success) + config.success(this); + this._loaded = true; + requestAnimationFrame(function () { _this.render(); }); + } + else + requestAnimationFrame(function () { _this.load(); }); + }; + SpineWidget.prototype.render = function () { + var _this = this; + var now = Date.now() / 1000; + var delta = now - this._lastFrameTime; + if (delta > 0.1) + delta = 0; + this._lastFrameTime = now; + var gl = this.gl; + var color = this._backgroundColor; + gl.clearColor(color.r, color.g, color.b, color.a); + gl.clear(gl.COLOR_BUFFER_BIT); + // Apply the animation state based on the delta time. + var state = this.state; + var skeleton = this.skeleton; + var premultipliedAlpha = this._config.premultipliedAlpha; + state.update(delta); + state.apply(skeleton); + skeleton.updateWorldTransform(); + // Bind the shader and set the texture and model-view-projection matrix. + var shader = this._shader; + shader.bind(); + shader.setUniformi(spine.webgl.Shader.SAMPLER, 0); + shader.setUniform4x4f(spine.webgl.Shader.MVP_MATRIX, this._mvp.values); + // Start the batch and tell the SkeletonRenderer to render the active skeleton. + var batcher = this._batcher; + var skeletonRenderer = this._skeletonRenderer; + batcher.begin(shader); + skeletonRenderer.premultipliedAlpha = premultipliedAlpha; + skeletonRenderer.draw(batcher, skeleton); + batcher.end(); + shader.unbind(); + if (!this._paused) + requestAnimationFrame(function () { _this.render(); }); + }; + SpineWidget.prototype.pause = function () { + this._paused = true; + }; + SpineWidget.prototype.play = function () { + var _this = this; + this._paused = false; + requestAnimationFrame(function () { _this.render(); }); + }; + SpineWidget.prototype.isPlaying = function () { + return !this._paused; + }; + SpineWidget.prototype.setAnimation = function (animationName) { + if (!this._loaded) + throw new Error("Widget isn't loaded yet"); + this.skeleton.setToSetupPose(); + this.state.setAnimation(0, animationName, this._config.loop); + }; + SpineWidget.loadWidgets = function () { + var widgets = document.getElementsByClassName("spine-widget"); + for (var i = 0; i < widgets.length; i++) { + SpineWidget.loadWidget(widgets[i]); + } + }; + SpineWidget.loadWidget = function (widget) { + var config = new SpineWidgetConfig(); + config.atlas = widget.getAttribute("data-atlas"); + config.json = widget.getAttribute("data-json"); + config.animation = widget.getAttribute("data-animation"); + if (widget.getAttribute("data-images-path")) + config.imagesPath = widget.getAttribute("data-images-path"); + if (widget.getAttribute("data-skin")) + config.skin = widget.getAttribute("data-skin"); + if (widget.getAttribute("data-loop")) + config.loop = widget.getAttribute("data-loop") === "true"; + if (widget.getAttribute("data-scale")) + config.scale = parseFloat(widget.getAttribute("data-scale")); + if (widget.getAttribute("data-x")) + config.x = parseFloat(widget.getAttribute("data-x")); + if (widget.getAttribute("data-y")) + config.x = parseFloat(widget.getAttribute("data-y")); + if (widget.getAttribute("data-width")) + config.width = parseInt(widget.getAttribute("data-width")); + if (widget.getAttribute("data-height")) + config.height = parseInt(widget.getAttribute("data-height")); + if (widget.getAttribute("data-background-color")) + config.backgroundColor = widget.getAttribute("data-background-color"); + if (widget.getAttribute("data-premultiplied-alpha")) + config.premultipliedAlpha = widget.getAttribute("data-premultiplied-alpha") === "true"; + new spine.SpineWidget(widget, config); + }; + SpineWidget.ready = function () { + if (SpineWidget.pageLoaded) + return; + SpineWidget.pageLoaded = true; + SpineWidget.loadWidgets(); + }; + SpineWidget.setupDOMListener = function () { + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", SpineWidget.ready, false); + window.addEventListener("load", SpineWidget.ready, false); + } + else { + document.attachEvent("onreadystatechange", function readyStateChange() { + if (document.readyState === "complete") + SpineWidget.ready(); + }); + window.attachEvent("onload", SpineWidget.ready); + } + }; + SpineWidget.pageLoaded = false; + return SpineWidget; + }()); + spine.SpineWidget = SpineWidget; + var SpineWidgetConfig = (function () { + function SpineWidgetConfig() { + this.skin = "default"; + this.loop = true; + this.scale = 1.0; + this.x = 0; + this.y = 0; + this.width = 640; + this.height = 480; + this.backgroundColor = "#555555"; + this.premultipliedAlpha = false; + } + return SpineWidgetConfig; + }()); + spine.SpineWidgetConfig = SpineWidgetConfig; +})(spine || (spine = {})); +spine.SpineWidget.setupDOMListener(); +//# sourceMappingURL=spine-all.js.map \ No newline at end of file diff --git a/spine-ts/build/spine-all.js.map b/spine-ts/build/spine-all.js.map new file mode 100644 index 000000000..accee76b1 --- /dev/null +++ b/spine-ts/build/spine-all.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spine-all.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/BlendMode.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/AttachmentType.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/attachments/TextureRegion.ts","../webgl/src/AssetManager.ts","../webgl/src/Matrix4.ts","../webgl/src/Mesh.ts","../webgl/src/PolygonBatcher.ts","../webgl/src/Shader.ts","../webgl/src/SkeletonRenderer.ts","../webgl/src/Texture.ts","../webgl/src/TextureAtlas.ts","../webgl/src/TextureAtlasAttachmentLoader.ts","../webgl/src/Vector3.ts","../webgl/src/WebGL.ts","../widget/src/Widget.ts"],"names":[],"mappings":"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AAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAChH,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,6BAAW,GAAX;gBACC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC3G,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG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CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,8BAAY,GAAZ,UAAc,MAAe;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACF,cAAC;QAAD,CAAC,AA5PD,IA4PC;QA5PY,aAAO,UA4PnB,CAAA;IACF,CAAC,EA/QY,KAAK,GAAL,WAAK,KAAL,WAAK,QA+QjB;AAAD,CAAC,EA/QM,KAAK,KAAL,KAAK,QA+QX;AC9SD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CAwJX;AAxJD,WAAO,KAAK;IAAC,IAAA,KAAK,CAwJjB;IAxJY,WAAA,KAAK,EAAC,CAAC;QACnB;YA8BC,cAAa,EAAyB,EAAU,WAA8B,EAAE,WAAmB,EAAE,UAAkB;gBAAvE,gBAAW,GAAX,WAAW,CAAmB;gBA1BtE,oBAAe,GAAG,CAAC,CAAC;gBACpB,mBAAc,GAAG,KAAK,CAAC;gBAGvB,mBAAc,GAAG,CAAC,CAAC;gBACnB,kBAAa,GAAG,KAAK,CAAC;gBACtB,uBAAkB,GAAG,CAAC,CAAC;gBAqB9B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;gBAC5B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7C,IAAI,CAAC,kBAAkB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;gBACvD,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACzE,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC;YA1BD,yBAAU,GAAV,cAAmC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAE7D,0BAAW,GAAX,cAAyB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAClF,0BAAW,GAAX,cAAyB,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACjF,gCAAiB,GAAjB,UAAmB,MAAc;gBAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAC/B,CAAC;YACD,uBAAQ,GAAR,cAA4B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAEpD,yBAAU,GAAV,cAAwB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACtD,yBAAU,GAAV,cAAwB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACrD,+BAAgB,GAAhB,UAAkB,MAAc;gBAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;YAC9B,CAAC;YACD,sBAAO,GAAP,cAA0B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAC,CAAC;;YAYhD,0BAAW,GAAX,UAAa,QAAuB;gBACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;oBAAC,MAAM,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,CAAC;gBAC3H,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;YACxC,CAAC;YAED,yBAAU,GAAV,UAAY,OAAsB;gBACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAC,MAAM,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,UAAU,CAAC,CAAC;gBACvH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;YACtC,CAAC;YAED,mBAAI,GAAJ,UAAM,MAAc,EAAE,aAAqB;gBAC1C,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,GAAE,IAAI,CAAC,cAAc,GAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACnH,CAAC;YAED,6BAAc,GAAd,UAAgB,MAAc,EAAE,aAAqB,EAAE,MAAc,EAAE,KAAa;gBACnF,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC;oBAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;gBAClG,IAAI;oBAAC,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;YAED,mBAAI,GAAJ,UAAM,MAAc;gBACnB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBACrD,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClD,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,UAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACxD,EAAE,CAAC,uBAAuB,CAAC,UAAQ,CAAC,CAAC;oBACrC,EAAE,CAAC,mBAAmB,CAAC,UAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/G,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC;gBAC9B,CAAC;gBACD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1F,CAAC;YAED,qBAAM,GAAN,UAAQ,MAAc;gBACrB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClD,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,UAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACxD,EAAE,CAAC,wBAAwB,CAAC,UAAQ,CAAC,CAAC;gBACvC,CAAC;gBACD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBACrC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;YAC3E,CAAC;YAEO,qBAAM,GAAd;gBACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;oBACzB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;wBAC3B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;oBAC1C,CAAC;oBACD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBACrD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;oBACjG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC7B,CAAC;gBAED,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;oBACxB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;wBAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;oBACzC,CAAC;oBACD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC5D,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;oBACvG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC5B,CAAC;YACF,CAAC;YAED,sBAAO,GAAP;gBACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACtC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACtC,CAAC;YACF,WAAC;QAAD,CAAC,AAtHD,IAsHC;QAtHY,UAAI,OAsHhB,CAAA;QAED;YACC,yBAAoB,IAAY,EAAS,IAAyB,EAAS,WAAmB;gBAA1E,SAAI,GAAJ,IAAI,CAAQ;gBAAS,SAAI,GAAJ,IAAI,CAAqB;gBAAS,gBAAW,GAAX,WAAW,CAAQ;YAAI,CAAC;YACpG,sBAAC;QAAD,CAAC,AAFD,IAEC;QAFY,qBAAe,kBAE3B,CAAA;QAED;YAAwC,sCAAe;YACtD;gBACC,kBAAM,YAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YACF,yBAAC;QAAD,CAAC,AAJD,CAAwC,eAAe,GAItD;QAJY,wBAAkB,qBAI9B,CAAA;QAED;YAAwC,sCAAe;YACtD;gBACC,kBAAM,YAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YACF,yBAAC;QAAD,CAAC,AAJD,CAAwC,eAAe,GAItD;QAJY,wBAAkB,qBAI9B,CAAA;QAED;YAAuC,qCAAe;YACrD,2BAAa,IAAgB;gBAAhB,oBAAgB,GAAhB,QAAgB;gBAC5B,kBAAM,YAAM,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,GAAE,EAAE,GAAE,IAAI,CAAC,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/E,CAAC;YACF,wBAAC;QAAD,CAAC,AAJD,CAAuC,eAAe,GAIrD;QAJY,uBAAiB,oBAI7B,CAAA;QAED;YAAoC,kCAAe;YAClD;gBACC,kBAAM,YAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;YACF,qBAAC;QAAD,CAAC,AAJD,CAAoC,eAAe,GAIlD;QAJY,oBAAc,iBAI1B,CAAA;QAED,WAAY,mBAAmB;YAC9B,+DAAK,CAAA;QACN,CAAC,EAFW,yBAAmB,KAAnB,yBAAmB,QAE9B;QAFD,IAAY,mBAAmB,GAAnB,yBAEX,CAAA;IACF,CAAC,EAxJY,KAAK,GAAL,WAAK,KAAL,WAAK,QAwJjB;AAAD,CAAC,EAxJM,KAAK,KAAL,KAAK,QAwJX;ACvLD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CAyFX;AAzFD,WAAO,KAAK;IAAC,IAAA,KAAK,CAyFjB;IAzFY,WAAA,KAAK,EAAC,CAAC;QACnB;YAYC,wBAAa,EAAyB,EAAE,WAA2B;gBAA3B,2BAA2B,GAA3B,mBAA2B;gBAT3D,aAAQ,GAAG,KAAK,CAAC;gBAEjB,YAAO,GAAW,IAAI,CAAC;gBACvB,iBAAY,GAAY,IAAI,CAAC;gBAC7B,oBAAe,GAAG,CAAC,CAAC;gBACpB,mBAAc,GAAG,CAAC,CAAC;gBACnB,cAAS,GAAW,qBAAqB,CAAC,SAAS,CAAC;gBACpD,cAAS,GAAW,qBAAqB,CAAC,mBAAmB,CAAC;gBAGrE,EAAE,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,WAAW,CAAC,CAAC;gBAC3G,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,GAAG,IAAI,UAAI,CAAC,EAAE,EAAE,CAAC,IAAI,wBAAkB,EAAE,EAAE,IAAI,oBAAc,EAAE,EAAE,IAAI,uBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;YACpI,CAAC;YAED,8BAAK,GAAL,UAAO,MAAc;gBACpB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;gBACnI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;gBACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAErB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBACpB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,CAAC;YAED,qCAAY,GAAZ,UAAc,QAAgB,EAAE,QAAgB;gBAC/C,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC1B,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACnB,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC;YAED,6BAAI,GAAJ,UAAM,OAAgB,EAAE,QAA2B,EAAE,OAAsB;gBAC1E,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oBAClC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;oBAC5B,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC;gBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;oBAC9E,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACd,CAAC;gBAED,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC1D,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAElD,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;oBACpE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;gBAC3C,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClD,CAAC;YAEO,8BAAK,GAAb;gBACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;oBAAC,MAAM,CAAC;gBAEtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE5C,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;gBACzB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC;YAED,4BAAG,GAAH;gBACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;gBAChI,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAEtB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YAED,kCAAS,GAAT,cAAe,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACzC,qBAAC;QAAD,CAAC,AAvFD,IAuFC;QAvFY,oBAAc,iBAuF1B,CAAA;IACF,CAAC,EAzFY,KAAK,GAAL,WAAK,KAAL,WAAK,QAyFjB;AAAD,CAAC,EAzFM,KAAK,KAAL,KAAK,QAyFX;ACxHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CAgNX;AAhND,WAAO,KAAK;IAAC,IAAA,KAAK,CAgNjB;IAhNY,WAAA,KAAK,EAAC,CAAC;QACnB;YAmBC,gBAAa,EAAyB,EAAU,aAAqB,EAAU,eAAuB;gBAAtD,kBAAa,GAAb,aAAa,CAAQ;gBAAU,oBAAe,GAAf,eAAe,CAAQ;gBAX9F,QAAG,GAAgB,IAAI,CAAC;gBACxB,QAAG,GAAgB,IAAI,CAAC;gBACxB,aAAQ,GAAiB,IAAI,CAAC;gBAC9B,YAAO,GAAiB,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,YAAO,GAAiB,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,YAAO,GAAiB,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAOvD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YAPM,wBAAO,GAAd,cAAoB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpC,6BAAY,GAAnB,cAAyB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9C,+BAAc,GAArB,cAA2B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAOjD,wBAAO,GAAf;gBACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC;oBACJ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzD,CAAE;gBAAA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACZ,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM,CAAC,CAAC;gBACT,CAAC;YACF,CAAC;YAEO,8BAAa,GAArB,UAAuB,IAAY,EAAE,MAAc;gBAClD,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAChC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACzB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACvD,IAAI,KAAK,GAAG,2BAA2B,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACtE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC;YACf,CAAC;YAEO,+BAAc,GAAtB,UAAwB,EAAe,EAAE,EAAe;gBACvD,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,OAAO,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;gBACjC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC7B,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC7B,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAExB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACtD,IAAI,KAAK,GAAG,mCAAmC,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAChF,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC;YAChB,CAAC;YAEM,qBAAI,GAAX;gBACC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAEM,uBAAM,GAAb;gBACC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YAEM,4BAAW,GAAlB,UAAoB,OAAe,EAAE,KAAa;gBACjD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC;YAEM,4BAAW,GAAlB,UAAoB,OAAe,EAAE,KAAa;gBACjD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC;YAEM,6BAAY,GAAnB,UAAqB,OAAe,EAAE,KAAa,EAAE,MAAc;gBAClE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACrE,CAAC;YAEM,6BAAY,GAAnB,UAAqB,OAAe,EAAE,KAAa,EAAE,MAAc,EAAE,MAAc;gBAClF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7E,CAAC;YAEM,6BAAY,GAAnB,UAAqB,OAAe,EAAE,KAAa,EAAE,MAAc,EAAE,MAAc,EAAE,MAAc;gBAClG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACrF,CAAC;YAEM,+BAAc,GAArB,UAAuB,OAAe,EAAE,KAAwB;gBAC/D,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC;YAEM,+BAAc,GAArB,UAAuB,OAAe,EAAE,KAAwB;gBAC/D,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC;YAEM,+BAAc,GAArB,UAAuB,OAAe,EAAE,KAAwB;gBAC/D,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC;YAEM,mCAAkB,GAAzB,UAA2B,OAAe;gBACzC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC7D,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,wCAAsC,OAAS,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC;YACjB,CAAC;YAEM,qCAAoB,GAA3B,UAA6B,SAAiB;gBAC7C,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC9D,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,0CAAwC,SAAW,CAAC,CAAC;gBACzF,MAAM,CAAC,QAAQ,CAAC;YACjB,CAAC;YAEM,wBAAO,GAAd;gBACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACd,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACd,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACnB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACtB,CAAC;YACF,CAAC;YAEa,yBAAkB,GAAhC,UAAkC,EAAyB;gBAC1D,IAAI,EAAE,GAAG,8BACS,MAAM,CAAC,QAAQ,kCACf,MAAM,CAAC,KAAK,kCACZ,MAAM,CAAC,SAAS,gCAClB,MAAM,CAAC,UAAU,2HAKnB,MAAM,CAAC,KAAK,mCACR,MAAM,CAAC,SAAS,oCACf,MAAM,CAAC,UAAU,WAAM,MAAM,CAAC,QAAQ,yBAExD,CAAC;gBAEF,IAAI,EAAE,GAAG,iXAcR,CAAC;gBAEF,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;YAEa,iBAAU,GAAxB,UAA0B,EAAyB;gBAClD,IAAI,EAAE,GAAG,8BACS,MAAM,CAAC,QAAQ,kCACf,MAAM,CAAC,KAAK,gCACd,MAAM,CAAC,UAAU,wFAInB,MAAM,CAAC,KAAK,oCACP,MAAM,CAAC,UAAU,WAAM,MAAM,CAAC,QAAQ,yBAExD,CAAC;gBAEF,IAAI,EAAE,GAAG,oQAYR,CAAC;gBAEF,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;YA5Ma,iBAAU,GAAG,aAAa,CAAC;YAC3B,eAAQ,GAAG,YAAY,CAAC;YACxB,YAAK,GAAG,SAAS,CAAC;YAClB,gBAAS,GAAG,aAAa,CAAC;YAC1B,cAAO,GAAG,WAAW,CAAC;YAyMrC,aAAC;QAAD,CAAC,AA9MD,IA8MC;QA9MY,YAAM,SA8MlB,CAAA;IACF,CAAC,EAhNY,KAAK,GAAL,WAAK,KAAL,WAAK,QAgNjB;AAAD,CAAC,EAhNM,KAAK,KAAL,KAAK,QAgNX;AC/OD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CA8CX;AA9CD,WAAO,KAAK;IAAC,IAAA,KAAK,CA8CjB;IA9CY,WAAA,KAAK,EAAC,CAAC;QACnB;YAMC,0BAAa,EAAyB;gBAHtC,uBAAkB,GAAG,KAAK,CAAC;gBAI1B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YACf,CAAC;YAED,+BAAI,GAAJ,UAAM,OAAuB,EAAE,QAAkB;gBAChD,IAAI,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACjD,IAAI,SAAS,GAAc,IAAI,CAAC;gBAEhC,IAAI,QAAQ,GAAsB,IAAI,CAAC;gBACvC,IAAI,SAAS,GAAmB,IAAI,CAAC;gBACrC,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACnC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClD,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACtC,IAAI,OAAO,GAAY,IAAI,CAAC;oBAC5B,EAAE,CAAC,CAAC,UAAU,YAAY,sBAAgB,CAAC,CAAC,CAAC;wBAC5C,IAAI,MAAM,GAAqB,UAAU,CAAC;wBAC1C,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;wBAChE,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC;wBAC5C,OAAO,GAAwB,MAAM,CAAC,MAAM,CAAC,YAAa,CAAC,OAAO,CAAC;oBAEpE,CAAC;oBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,YAAY,oBAAc,CAAC,CAAC,CAAC;wBACjD,IAAI,IAAI,GAAmB,UAAU,CAAC;wBACtC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;wBAC9D,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;wBAC3B,OAAO,GAAwB,IAAI,CAAC,MAAM,CAAC,YAAa,CAAC,OAAO,CAAC;oBAClE,CAAC;oBAED,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;wBACrB,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;wBACxC,EAAE,CAAC,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC;4BAChC,SAAS,GAAG,aAAa,CAAC;4BAC1B,OAAO,CAAC,YAAY,CAAC,0BAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,kBAAkB,CAAC,EAAE,wBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;wBAC9H,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC5C,CAAC;gBACF,CAAC;YACF,CAAC;YA1CM,+BAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YA2C5C,uBAAC;QAAD,CAAC,AA5CD,IA4CC;QA5CY,sBAAgB,mBA4C5B,CAAA;IACF,CAAC,EA9CY,KAAK,GAAL,WAAK,KAAL,WAAK,QA8CjB;AAAD,CAAC,EA9CM,KAAK,KAAL,KAAK,QA8CX;AC7ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CAmGX;AAnGD,WAAO,KAAK;IAAC,IAAA,KAAK,CAmGjB;IAnGY,WAAA,KAAK,EAAC,CAAC;QACnB;YAMC,iBAAa,EAAyB,EAAE,KAAuB,EAAE,UAA2B;gBAA3B,0BAA2B,GAA3B,kBAA2B;gBAFpF,eAAU,GAAG,CAAC,CAAC;gBAGtB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;YAED,0BAAQ,GAAR;gBACC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;YAED,4BAAU,GAAV,UAAY,SAAwB,EAAE,SAAwB;gBAC7D,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;gBAClE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACnE,CAAC;YAED,0BAAQ,GAAR,UAAU,KAAkB,EAAE,KAAkB;gBAC/C,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;gBAC1D,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;YAED,wBAAM,GAAN,UAAQ,UAAmB;gBAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjF,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;gBAClE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,UAAU,GAAE,EAAE,CAAC,oBAAoB,GAAE,EAAE,CAAC,MAAM,CAAC,CAAC;gBACvG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;gBACrE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;gBACrE,EAAE,CAAC,CAAC,UAAU,CAAC;oBAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAClD,CAAC;YAED,sBAAI,GAAJ,UAAM,IAAgB;gBAAhB,oBAAgB,GAAhB,QAAgB;gBACrB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;gBACrC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;YAED,wBAAM,GAAN;gBACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChD,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACrC,CAAC;YAED,yBAAO,GAAP;gBACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAClB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;YAEa,wBAAgB,GAA9B,UAAgC,IAAY;gBAC3C,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;oBAC5B,KAAK,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;oBAC7C,KAAK,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC3C,KAAK,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC3C,KAAK,sBAAsB,EAAE,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC;oBACvE,KAAK,qBAAqB,EAAE,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC;oBACrE,KAAK,qBAAqB,EAAE,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC;oBACrE,KAAK,oBAAoB,EAAE,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC;oBACnE,SAAS,MAAM,IAAI,KAAK,CAAC,4BAA0B,IAAM,CAAC,CAAC;gBAC5D,CAAC;YACF,CAAC;YAEa,sBAAc,GAA5B,UAA8B,IAAY;gBACzC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;oBAC5B,KAAK,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;oBACzD,KAAK,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;oBACnD,KAAK,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;oBACzC,SAAS,MAAM,IAAI,KAAK,CAAC,0BAAwB,IAAM,CAAC,CAAC;gBAC1D,CAAC;YACF,CAAC;YACF,cAAC;QAAD,CAAC,AAjFD,IAiFC;QAjFY,aAAO,UAiFnB,CAAA;QAED,WAAY,aAAa;YACxB,yCAAU,qBAAqB,CAAC,OAAO,aAAA,CAAA;YACvC,wCAAS,qBAAqB,CAAC,MAAM,YAAA,CAAA;YACrC,wCAAS,qBAAqB,CAAC,oBAAoB,YAAA,CAAA;YACnD,sDAAuB,qBAAqB,CAAC,sBAAsB,0BAAA,CAAA;YACnE,qDAAsB,qBAAqB,CAAC,qBAAqB,yBAAA,CAAA;YACjE,qDAAsB,qBAAqB,CAAC,qBAAqB,yBAAA,CAAA;YACjE,oDAAqB,qBAAqB,CAAC,oBAAoB,wBAAA,CAAA;QAChE,CAAC,EARW,mBAAa,KAAb,mBAAa,QAQxB;QARD,IAAY,aAAa,GAAb,mBAQX,CAAA;QAED,WAAY,WAAW;YACtB,4CAAiB,qBAAqB,CAAC,eAAe,oBAAA,CAAA;YACtD,yCAAc,qBAAqB,CAAC,aAAa,iBAAA,CAAA;YACjD,oCAAS,qBAAqB,CAAC,MAAM,YAAA,CAAA;QACtC,CAAC,EAJW,iBAAW,KAAX,iBAAW,QAItB;QAJD,IAAY,WAAW,GAAX,iBAIX,CAAA;IACF,CAAC,EAnGY,KAAK,GAAL,WAAK,KAAL,WAAK,QAmGjB;AAAD,CAAC,EAnGM,KAAK,KAAL,KAAK,QAmGX;AClID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CAqLX;AArLD,WAAO,KAAK;IAAC,IAAA,KAAK,CAqLjB;IArLY,WAAA,KAAK,EAAC,CAAC;QACnB;YAIC,sBAAa,SAAiB,EAAE,aAAwC;gBAHxE,UAAK,GAAG,IAAI,KAAK,EAAoB,CAAC;gBACtC,YAAO,GAAG,IAAI,KAAK,EAAsB,CAAC;gBAGzC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACrC,CAAC;YAEO,2BAAI,GAAZ,UAAc,SAAiB,EAAE,aAAwC;gBACxE,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAElD,IAAI,MAAM,GAAG,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAC/C,IAAI,KAAK,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC;gBACjC,IAAI,IAAI,GAAoB,IAAI,CAAC;gBACjC,OAAO,IAAI,EAAE,CAAC;oBACb,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC7B,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;wBAChB,KAAK,CAAC;oBACP,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBACnB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;wBACpB,IAAI,GAAG,IAAI,CAAC;oBACb,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;wBAChB,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;wBAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;wBAEjB,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BAClC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;4BACjC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACzB,CAAC;wBACD,gEAAgE;wBAEhE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACxB,IAAI,CAAC,SAAS,GAAG,aAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpD,IAAI,CAAC,SAAS,GAAG,aAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAEpD,IAAI,SAAS,GAAE,MAAM,CAAC,SAAS,EAAE,CAAC;wBAClC,IAAI,CAAC,KAAK,GAAG,iBAAW,CAAC,WAAW,CAAC;wBACrC,IAAI,CAAC,KAAK,GAAG,iBAAW,CAAC,WAAW,CAAC;wBACrC,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;4BACpB,IAAI,CAAC,KAAK,GAAG,iBAAW,CAAC,MAAM,CAAC;wBACjC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;4BACzB,IAAI,CAAC,KAAK,GAAG,iBAAW,CAAC,MAAM,CAAC;wBACjC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;4BAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,iBAAW,CAAC,MAAM,CAAC;wBAE9C,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;wBACnC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;wBACxD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC;wBAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;wBAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,IAAI,MAAM,GAAsB,IAAI,kBAAkB,EAAE,CAAC;wBACzD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;wBACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;wBAEnB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,MAAM,CAAC;wBAE7C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACxB,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC3B,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE3B,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACxB,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/B,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAEhC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;wBAC1B,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;wBAC3B,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;4BACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;4BACtC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;wBACvC,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACP,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;4BACrC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;wBACxC,CAAC;wBACD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;wBACb,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;wBACb,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC/B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAEjC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BAClC,oHAAoH;4BACpH,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gCAClC,6GAA6G;gCAC7G,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;4BACzB,CAAC;wBACF,CAAC;wBAED,MAAM,CAAC,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1C,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE3C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACxB,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAEpC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;wBAE5C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,CAAC;gBACF,CAAC;YACF,CAAC;YAED,iCAAU,GAAV,UAAY,IAAY;gBACvB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;wBAClC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC;gBACF,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,8BAAO,GAAP;gBACC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACjC,CAAC;YACF,CAAC;YACF,mBAAC;QAAD,CAAC,AAvHD,IAuHC;QAvHY,kBAAY,eAuHxB,CAAA;QAED;YAIC,4BAAa,IAAY;gBAFzB,UAAK,GAAW,CAAC,CAAC;gBAGjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACvC,CAAC;YAED,qCAAQ,GAAR;gBACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACjC,CAAC;YAED,sCAAS,GAAT;gBACC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3B,IAAI,KAAK,GAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,CAAC;YAED,sCAAS,GAAT,UAAW,KAAoB;gBAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;gBACjC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBACzC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;wBAAC,KAAK,CAAC;oBACvB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5D,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;gBACvB,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;YACF,yBAAC;QAAD,CAAC,AArCD,IAqCC;QAED;YAAA;YASA,CAAC;YAAD,uBAAC;QAAD,CAAC,AATD,IASC;QATY,sBAAgB,mBAS5B,CAAA;QAED;YAAwC,sCAAa;YAArD;gBAAwC,8BAAa;YAQrD,CAAC;YAAD,yBAAC;QAAD,CAAC,AARD,CAAwC,mBAAa,GAQpD;QARY,wBAAkB,qBAQ9B,CAAA;IACF,CAAC,EArLY,KAAK,GAAL,WAAK,KAAL,WAAK,QAqLjB;AAAD,CAAC,EArLM,KAAK,KAAL,KAAK,QAqLX;ACpND;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CAuCX;AAvCD,WAAO,KAAK;IAAC,IAAA,KAAK,CAuCjB;IAvCY,WAAA,KAAK,EAAC,CAAC;QACnB;YAGC,sCAAa,KAAmB;gBAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,CAAC;YAED,qDAAqD;YACrD,0DAAmB,GAAnB,UAAqB,IAAU,EAAE,IAAY,EAAE,IAAY;gBAC1D,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC;gBAC7B,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,IAAI,GAAG,uBAAuB,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;gBACjH,IAAI,UAAU,GAAG,IAAI,sBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC5C,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC7B,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC3B,MAAM,CAAC,UAAU,CAAC;YACnB,CAAC;YAED,qDAAqD;YACrD,wDAAiB,GAAjB,UAAmB,IAAU,EAAE,IAAY,EAAE,IAAY;gBACxD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC;gBAC7B,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,IAAI,GAAG,qBAAqB,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;gBAC/G,IAAI,UAAU,GAAG,IAAI,oBAAc,CAAC,IAAI,CAAC,CAAC;gBAC1C,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC3B,MAAM,CAAC,UAAU,CAAC;YACnB,CAAC;YAED,qDAAqD;YACrD,+DAAwB,GAAxB,UAA0B,IAAU,EAAE,IAAY;gBACjD,MAAM,CAAC,IAAI,2BAAqB,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;YAED,oDAAoD;YACpD,wDAAiB,GAAjB,UAAmB,IAAU,EAAE,IAAY;gBAC1C,MAAM,CAAC,IAAI,oBAAc,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YACF,mCAAC;QAAD,CAAC,AArCD,IAqCC;QArCY,kCAA4B,+BAqCxC,CAAA;IACF,CAAC,EAvCY,KAAK,GAAL,WAAK,KAAL,WAAK,QAuCjB;AAAD,CAAC,EAvCM,KAAK,KAAL,KAAK,QAuCX;ACtED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CA8EX;AA9ED,WAAO,KAAK;IAAC,IAAA,KAAK,CA8EjB;IA9EY,WAAA,KAAK,EAAC,CAAC;QACnB;YAAA;gBACC,MAAC,GAAG,CAAC,CAAC;gBACN,MAAC,GAAG,CAAC,CAAC;gBACN,MAAC,GAAG,CAAC,CAAC;YAyEP,CAAC;YAvEA,qBAAG,GAAH,UAAK,CAAS,EAAE,CAAS,EAAE,CAAS;gBACnC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,qBAAG,GAAH,UAAK,CAAU;gBACd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,qBAAG,GAAH,UAAK,CAAU;gBACd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,uBAAK,GAAL,UAAO,CAAS;gBACf,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gBACZ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gBACZ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,2BAAS,GAAT;gBACC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC;gBAC1B,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,uBAAK,GAAL,UAAO,CAAU;gBAChB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACvG,CAAC;YAED,0BAAQ,GAAR,UAAU,MAAe;gBACxB,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,EAC3F,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,EAC5E,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,CAAC,CAAC;YAChF,CAAC;YAED,yBAAO,GAAP,UAAS,MAAe;gBACvB,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC1B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,CAAC,CAAC;gBAC7F,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,CAAC,GAAG,GAAG,EACnG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,CAAC,GAAG,GAAG,EACpF,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,GAAG,KAAK,CAAC,SAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACxF,CAAC;YAED,qBAAG,GAAH,UAAK,CAAU;gBACd,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,wBAAM,GAAN;gBACC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,0BAAQ,GAAR,UAAU,CAAU;gBACnB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,CAAC;YACF,cAAC;QAAD,CAAC,AA5ED,IA4EC;QA5EY,aAAO,UA4EnB,CAAA;IACF,CAAC,EA9EY,KAAK,GAAL,WAAK,KAAL,WAAK,QA8EjB;AAAD,CAAC,EA9EM,KAAK,KAAL,KAAK,QA8EX;AC7GD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CAoBX;AApBD,WAAO,KAAK;IAAC,IAAA,KAAK,CAoBjB;IApBY,WAAA,KAAK,EAAC,CAAC;QACnB,8BAAsC,EAAyB,EAAE,SAAoB,EAAE,kBAAmC;YAAnC,kCAAmC,GAAnC,0BAAmC;YACzH,MAAM,CAAA,CAAC,SAAS,CAAC,CAAC,CAAC;gBAClB,KAAK,eAAS,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,GAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;gBACxE,KAAK,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,kBAAkB,GAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;gBAC1E,KAAK,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;gBAC7C,KAAK,eAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;gBACrC,SAAS,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC;QARe,0BAAoB,uBAQnC,CAAA;QAED,4BAAoC,EAAyB,EAAE,SAAoB;YAClF,MAAM,CAAA,CAAC,SAAS,CAAC,CAAC,CAAC;gBAClB,KAAK,eAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC;gBACrD,KAAK,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;gBACvC,KAAK,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC;gBACvD,KAAK,eAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC;gBACrD,SAAS,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC;QARe,wBAAkB,qBAQjC,CAAA;IACF,CAAC,EApBY,KAAK,GAAL,WAAK,KAAL,WAAK,QAoBjB;AAAD,CAAC,EApBM,KAAK,KAAL,KAAK,QAoBX;ACnDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6B+E;AAE/E,IAAO,KAAK,CAoOX;AApOD,WAAO,KAAK,EAAC,CAAC;IACb;QAiBC,qBAAa,OAAyB,EAAE,MAAyB;YAjBlE,iBAgNC;YAtMQ,SAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAEjC,YAAO,GAAG,KAAK,CAAC;YAChB,mBAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;YACrC,qBAAgB,GAAG,IAAI,WAAK,EAAE,CAAC;YAC/B,YAAO,GAAG,KAAK,CAAC;YAGvB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YACzG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAC;YAEjI,IAAI,SAAS,GAAG,OAAiB,CAAC;YAClC,EAAE,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAAC,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAiB,CAAC,CAAC;YACvF,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,aAAW,SAAS,oBAAiB,CAAC,CAAC;YAE5E,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAE5B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACjD,OAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC5B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,IAAI,WAAW,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACnC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAA2B,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC;YAE7I,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAE9D,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3D,qBAAqB,CAAC,cAAQ,KAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAEO,oCAAc,GAAtB,UAAwB,MAAyB;YAChD,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAClE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAE9E,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;YACtC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;YAC1C,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC;gBAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YAClD,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;YACtC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;YACxC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YAC3C,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;gBAAC,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;YAChE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gBACxB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC1C,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjB,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;gBACzD,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;gBACxB,CAAC;YACF,CAAC;YACD,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS,CAAC;gBAAC,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChF,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,CAAC;QAEO,0BAAI,GAAZ;YAAA,iBAgCC;YA/BA,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACzC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,EAAE,CAAC,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;gBACtC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBAC9B,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;wBAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtG,IAAI;wBAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvF,CAAC;gBAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAW,EAAE,UAAC,IAAI;oBACnG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAwB,CAAC;gBACnE,CAAC,CAAC,CAAC;gBAEH,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBACtE,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAEvD,oFAAoF;gBACpF,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAClC,IAAI,YAAY,GAAG,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAW,CAAC,CAAC;gBAC1F,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChE,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACtB,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACtB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEpC,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxG,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACvD,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;oBAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,qBAAqB,CAAC,cAAQ,KAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAAC,IAAI;gBACL,qBAAqB,CAAC,cAAQ,KAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QAEO,4BAAM,GAAd;YAAA,iBAoCC;YAnCA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAC5B,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;YACtC,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;gBAAC,KAAK,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;YAE1B,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAClC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAClD,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;YAE9B,qDAAqD;YACrD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,IAAI,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACzD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtB,QAAQ,CAAC,oBAAoB,EAAE,CAAC;YAEhC,wEAAwE;YACxE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEvE,+EAA+E;YAC/E,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,IAAI,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtB,gBAAgB,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;YACzD,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,MAAM,CAAC,MAAM,EAAE,CAAC;YAEhB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAC,qBAAqB,CAAC,cAAQ,KAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,2BAAK,GAAL;YACC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,0BAAI,GAAJ;YAAA,iBAGC;YAFA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,qBAAqB,CAAC,cAAQ,KAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,+BAAS,GAAT;YACC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,kCAAY,GAAZ,UAAc,aAAqB;YAClC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;QAGM,uBAAW,GAAlB;YACC,IAAI,OAAO,GAAG,QAAQ,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;YAC9D,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QAEM,sBAAU,GAAjB,UAAkB,MAAe;YAChC,IAAI,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACrC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YACzD,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;gBAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACzG,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACrF,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC;YAChG,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;YACpG,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxF,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxF,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;YAClG,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;YACrG,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;gBAAC,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;YACxH,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;gBAAC,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,0BAA0B,CAAC,KAAK,MAAM,CAAC;YAE5I,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAGc,iBAAK,GAApB;YACC,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;gBAAC,MAAM,CAAC;YACnC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC;YAC9B,WAAW,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC;QAEM,4BAAgB,GAAvB;YACC,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC/B,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACxE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;YAAC,IAAI,CAAC,CAAC;gBACD,QAAS,CAAC,WAAW,CAAC,oBAAoB,EAAE;oBACjD,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,KAAK,UAAW,CAAC;wBAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC9D,CAAC,CAAC,CAAC;gBACG,MAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;QACF,CAAC;QAjBM,sBAAU,GAAG,KAAK,CAAC;QAkB3B,kBAAC;IAAD,CAAC,AAhND,IAgNC;IAhNY,iBAAW,cAgNvB,CAAA;IAED;QAAA;YAKC,SAAI,GAAG,SAAS,CAAC;YACjB,SAAI,GAAG,IAAI,CAAC;YACZ,UAAK,GAAG,GAAG,CAAC;YACZ,MAAC,GAAG,CAAC,CAAC;YACN,MAAC,GAAG,CAAC,CAAC;YACN,UAAK,GAAG,GAAG,CAAC;YACZ,WAAM,GAAG,GAAG,CAAC;YACb,oBAAe,GAAG,SAAS,CAAC;YAC5B,uBAAkB,GAAG,KAAK,CAAC;QAG5B,CAAC;QAAD,wBAAC;IAAD,CAAC,AAhBD,IAgBC;IAhBY,uBAAiB,oBAgB7B,CAAA;AACF,CAAC,EApOM,KAAK,KAAL,KAAK,QAoOX;AACD,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/spine-ts/build/spine-core.d.ts b/spine-ts/build/spine-core.d.ts new file mode 100644 index 000000000..bab571348 --- /dev/null +++ b/spine-ts/build/spine-core.d.ts @@ -0,0 +1,2502 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Animation { + name: string; + timelines: Array; + duration: number; + constructor(name: string, timelines: Array, duration: number); + apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array): void; + mix(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number): void; + static binarySearch(values: ArrayLike, target: number, step?: number): number; + static linearSearch(values: ArrayLike, target: number, step: number): number; + } + interface Timeline { + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + abstract class CurveTimeline implements Timeline { + static LINEAR: number; + static STEPPED: number; + static BEZIER: number; + static BEZIER_SIZE: number; + private curves; + constructor(frameCount: number); + getFrameCount(): number; + setLinear(frameIndex: number): void; + setStepped(frameIndex: number): void; + getCurveType(frameIndex: number): number; + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + getCurvePercent(frameIndex: number, percent: number): number; + abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class RotateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATION: number; + static ROTATION: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and angle of the specified keyframe. */ + setFrame(frameIndex: number, time: number, degrees: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class TranslateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_X: number; + static PREV_Y: number; + static X: number; + static Y: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ScaleTimeline extends TranslateTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ShearTimeline extends TranslateTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static R: number; + static G: number; + static B: number; + static A: number; + slotIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class AttachmentTimeline implements Timeline { + slotIndex: number; + frames: ArrayLike; + attachmentNames: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class EventTimeline implements Timeline { + frames: ArrayLike; + events: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time of the specified keyframe. */ + setFrame(frameIndex: number, event: Event): void; + /** Fires events for frames > lastTime and <= time. */ + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class DrawOrderTimeline implements Timeline { + frames: ArrayLike; + drawOrders: Array>; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + setFrame(frameIndex: number, time: number, drawOrder: Array): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class DeformTimeline extends CurveTimeline { + frames: ArrayLike; + frameVertices: Array>; + slotIndex: number; + attachment: VertexAttachment; + constructor(frameCount: number); + /** Sets the time of the specified keyframe. */ + setFrame(frameIndex: number, time: number, vertices: ArrayLike): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class IkConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_MIX: number; + static PREV_BEND_DIRECTION: number; + static MIX: number; + static BEND_DIRECTION: number; + ikConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time, mix and bend direction of the specified keyframe. */ + setFrame(frameIndex: number, time: number, mix: number, bendDirection: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class TransformConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static PREV_SCALE: number; + static PREV_SHEAR: number; + static ROTATE: number; + static TRANSLATE: number; + static SCALE: number; + static SHEAR: number; + transformConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and mixes of the specified keyframe. */ + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintPositionTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_VALUE: number; + static VALUE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, value: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintMixTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static ROTATE: number; + static TRANSLATE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and mixes of the specified keyframe. */ + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class AnimationState { + data: AnimationStateData; + tracks: TrackEntry[]; + events: Event[]; + listeners: AnimationStateListener[]; + timeScale: number; + constructor(data?: AnimationStateData); + update(delta: number): void; + apply(skeleton: Skeleton): void; + clearTracks(): void; + clearTrack(trackIndex: number): void; + freeAll(entry: TrackEntry): void; + expandToIndex(index: number): TrackEntry; + setCurrent(index: number, entry: TrackEntry): void; + /** @see #setAnimation(int, Animation, boolean) */ + setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; + /** Set the current animation. Any queued animations are cleared. */ + setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; + /** {@link #addAnimation(int, Animation, boolean, float)} */ + addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; + /** @return May be null. */ + getCurrent(trackIndex: number): TrackEntry; + /** Adds a listener to receive events for all animations. */ + addListener(listener: AnimationStateListener): void; + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + removeListener(listener: AnimationStateListener): void; + clearListeners(): void; + } + class TrackEntry { + next: TrackEntry; + previous: TrackEntry; + animation: Animation; + loop: boolean; + delay: number; + time: number; + lastTime: number; + endTime: number; + timeScale: number; + mixTime: number; + mixDuration: number; + listener: AnimationStateListener; + mix: number; + reset(): void; + /** Returns true if the current time is greater than the end time, regardless of looping. */ + isComplete(): boolean; + } + abstract class AnimationStateAdapter implements AnimationStateListener { + event(trackIndex: number, event: Event): void; + complete(trackIndex: number, loopCount: number): void; + start(trackIndex: number): void; + end(trackIndex: number): void; + } + interface AnimationStateListener { + /** Invoked when the current animation triggers an event. */ + event(trackIndex: number, event: Event): void; + /** Invoked when the current animation has completed. + * @param loopCount The number of times the animation reached the end. */ + complete(trackIndex: number, loopCount: number): void; + /** Invoked just after the current animation is set. */ + start(trackIndex: number): void; + /** Invoked just before the current animation is replaced. */ + end(trackIndex: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class AnimationStateData { + skeletonData: SkeletonData; + animationToMixTime: Map; + defaultMix: number; + constructor(skeletonData: SkeletonData); + setMix(fromName: string, toName: string, duration: number): void; + setMixWith(from: Animation, to: Animation, duration: number): void; + getMix(from: Animation, to: Animation): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + enum BlendMode { + Normal = 0, + Additive = 1, + Multiply = 2, + Screen = 3, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Bone implements Updatable { + data: BoneData; + skeleton: Skeleton; + parent: Bone; + children: Bone[]; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + appliedRotation: number; + a: number; + b: number; + worldX: number; + c: number; + d: number; + worldY: number; + worldSignX: number; + worldSignY: number; + sorted: boolean; + /** @param parent May be null. */ + constructor(data: BoneData, skeleton: Skeleton, parent: Bone); + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + update(): void; + /** Computes the world transform using the parent bone and this bone's local transform. */ + updateWorldTransform(): void; + /** Computes the world transform using the parent bone and the specified local transform. */ + updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; + setToSetupPose(): void; + getWorldRotationX(): number; + getWorldRotationY(): number; + getWorldScaleX(): number; + getWorldScaleY(): number; + worldToLocalRotationX(): number; + worldToLocalRotationY(): number; + rotateWorld(degrees: number): void; + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + updateLocalTransform(): void; + worldToLocal(world: Vector2): Vector2; + localToWorld(local: Vector2): Vector2; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class BoneData { + index: number; + name: string; + parent: BoneData; + length: number; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + inheritRotation: boolean; + inheritScale: boolean; + constructor(index: number, name: string, parent: BoneData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + constructor(time: number, data: EventData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class IkConstraint implements Updatable { + data: IkConstraintData; + bones: Array; + target: Bone; + mix: number; + bendDirection: number; + level: number; + constructor(data: IkConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + apply1(bone: Bone, targetX: number, targetY: number, alpha: number): void; + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class IkConstraintData { + name: string; + bones: BoneData[]; + target: BoneData; + bendDirection: number; + mix: number; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathConstraint implements Updatable { + static NONE: number; + static BEFORE: number; + static AFTER: number; + data: PathConstraintData; + bones: Array; + target: Slot; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + spaces: number[]; + positions: number[]; + world: number[]; + curves: number[]; + lengths: number[]; + segments: number[]; + constructor(data: PathConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; + addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathConstraintData { + name: string; + bones: BoneData[]; + target: SlotData; + positionMode: PositionMode; + spacingMode: SpacingMode; + rotateMode: RotateMode; + offsetRotation: number; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + constructor(name: string); + } + enum PositionMode { + Fixed = 0, + Percent = 1, + } + enum SpacingMode { + Length = 0, + Fixed = 1, + Percent = 2, + } + enum RotateMode { + Tangent = 0, + Chain = 1, + ChainScale = 2, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Skeleton { + data: SkeletonData; + bones: Array; + slots: Array; + drawOrder: Array; + ikConstraints: Array; + ikConstraintsSorted: Array; + transformConstraints: Array; + pathConstraints: Array; + _updateCache: Updatable[]; + skin: Skin; + color: Color; + time: number; + flipX: boolean; + flipY: boolean; + x: number; + y: number; + constructor(data: SkeletonData); + updateCache(): void; + sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; + sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; + sortBone(bone: Bone): void; + sortReset(bones: Array): void; + /** Updates the world transform for each bone and applies constraints. */ + updateWorldTransform(): void; + /** Sets the bones, constraints, and slots to their setup pose values. */ + setToSetupPose(): void; + /** Sets the bones and constraints to their setup pose values. */ + setBonesToSetupPose(): void; + setSlotsToSetupPose(): void; + /** @return May return null. */ + getRootBone(): Bone; + /** @return May be null. */ + findBone(boneName: string): Bone; + /** @return -1 if the bone was not found. */ + findBoneIndex(boneName: string): number; + /** @return May be null. */ + findSlot(slotName: string): Slot; + /** @return -1 if the bone was not found. */ + findSlotIndex(slotName: string): number; + /** Sets a skin by name. + * @see #setSkin(Skin) */ + setSkinByName(skinName: string): void; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + setSkin(newSkin: Skin): void; + /** @return May be null. */ + getAttachmentByName(slotName: string, attachmentName: string): Attachment; + /** @return May be null. */ + getAttachment(slotIndex: number, attachmentName: string): Attachment; + /** @param attachmentName May be null. */ + setAttachment(slotName: string, attachmentName: string): void; + /** @return May be null. */ + findIkConstraint(constraintName: string): IkConstraint; + /** @return May be null. */ + findTransformConstraint(constraintName: string): TransformConstraint; + /** @return May be null. */ + findPathConstraint(constraintName: string): PathConstraint; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + getBounds(offset: Vector2, size: Vector2): void; + update(delta: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonBounds { + minX: number; + minY: number; + maxX: number; + maxY: number; + boundingBoxes: BoundingBoxAttachment[]; + polygons: ArrayLike[]; + private _polygonPool; + update(skeleton: Skeleton, updateAabb: boolean): void; + aabbCompute(): void; + /** Returns true if the axis aligned bounding box contains the point. */ + aabbContainsPoint(x: number, y: number): boolean; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; + /** 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. */ + containsPoint(x: number, y: number): BoundingBoxAttachment; + /** Returns true if the polygon contains the point. */ + containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; + /** Returns the first bounding box attachment that contains any part of 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. */ + intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; + /** Returns true if the polygon contains any part of the line segment. */ + intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns the polygon for the specified bounding box, or null. */ + getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonData { + name: string; + bones: BoneData[]; + slots: SlotData[]; + skins: Skin[]; + defaultSkin: Skin; + events: EventData[]; + animations: Animation[]; + ikConstraints: IkConstraintData[]; + transformConstraints: TransformConstraintData[]; + pathConstraints: PathConstraintData[]; + width: number; + height: number; + version: string; + hash: string; + imagesPath: string; + findBone(boneName: string): BoneData; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): SlotData; + findSlotIndex(slotName: string): number; + findSkin(skinName: string): Skin; + findEvent(eventDataName: string): EventData; + findAnimation(animationName: string): Animation; + findIkConstraint(constraintName: string): IkConstraintData; + findTransformConstraint(constraintName: string): TransformConstraintData; + findPathConstraint(constraintName: string): PathConstraintData; + findPathConstraintIndex(pathConstraintName: string): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonJson { + attachmentLoader: AttachmentLoader; + scale: number; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(json: string): SkeletonData; + readAttachment(map: any, skin: Skin, slotIndex: number, name: string): Attachment; + readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; + readAnimation(map: any, name: string, skeletonData: SkeletonData): void; + readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; + getValue(map: any, prop: string, defaultValue: any): any; + static blendModeFromString(str: string): BlendMode; + static positionModeFromString(str: string): PositionMode; + static spacingModeFromString(str: string): SpacingMode; + static rotateModeFromString(str: string): RotateMode; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Skin { + name: string; + attachments: Map[]; + constructor(name: string); + addAttachment(slotIndex: number, name: string, attachment: Attachment): void; + /** @return May be null. */ + getAttachment(slotIndex: number, name: string): Attachment; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + attachAll(skeleton: Skeleton, oldSkin: Skin): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Slot { + data: SlotData; + bone: Bone; + color: Color; + private attachment; + private attachmentTime; + attachmentVertices: number[]; + constructor(data: SlotData, bone: Bone); + /** @return May be null. */ + getAttachment(): Attachment; + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + setAttachment(attachment: Attachment): void; + setAttachmentTime(time: number): void; + /** Returns the time since the attachment was set. */ + getAttachmentTime(): number; + setToSetupPose(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SlotData { + index: number; + name: string; + boneData: BoneData; + color: Color; + attachmentName: string; + blendMode: BlendMode; + constructor(index: number, name: string, boneData: BoneData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TransformConstraint implements Updatable { + data: TransformConstraintData; + bones: Array; + target: Bone; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + temp: Vector2; + constructor(data: TransformConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TransformConstraintData { + name: string; + bones: BoneData[]; + target: BoneData; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + offsetRotation: number; + offsetX: number; + offsetY: number; + offsetScaleX: number; + offsetScaleY: number; + offsetShearY: number; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface Updatable { + update(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface Map { + [key: string]: T; + } + interface Disposable { + dispose(): void; + } + class Color { + r: number; + g: number; + b: number; + a: number; + constructor(r?: number, g?: number, b?: number, a?: number); + set(r: number, g: number, b: number, a: number): void; + setFromColor(c: Color): void; + setFromString(hex: string): void; + add(r: number, g: number, b: number, a: number): void; + clamp(): this; + } + class MathUtils { + static PI: number; + static PI2: number; + static radiansToDegrees: number; + static radDeg: number; + static degreesToRadians: number; + static degRad: number; + static clamp(value: number, min: number, max: number): number; + static cosDeg(degrees: number): number; + static sinDeg(degrees: number): number; + static signum(value: number): number; + static toInt(x: number): number; + } + class Utils { + static SUPPORTS_TYPED_ARRAYS: boolean; + static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; + static setArraySize(array: Array, size: number, value?: any): Array; + static newArray(size: number, defaultValue: T): Array; + static newFloatArray(size: number): ArrayLike; + static toFloatArray(array: Array): Float32Array | number[]; + } + class Pool { + private _items; + private _instantiator; + constructor(instantiator: () => T); + obtain(): T; + free(item: T): void; + freeAll(items: ArrayLike): void; + clear(): void; + } + class Vector2 { + x: number; + y: number; + constructor(x?: number, y?: number); + set(x: number, y: number): Vector2; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + abstract class Attachment { + name: string; + constructor(name: string); + } + abstract class VertexAttachment extends Attachment { + bones: Array; + vertices: ArrayLike; + worldVerticesLength: number; + constructor(name: string); + computeWorldVertices(slot: Slot, worldVertices: ArrayLike): void; + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + computeWorldVerticesWith(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number): void; + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + applyDeform(sourceAttachment: VertexAttachment): boolean; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface AttachmentLoader { + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + enum AttachmentType { + Region = 0, + BoundingBox = 1, + Mesh = 2, + LinkedMesh = 3, + Path = 4, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class BoundingBoxAttachment extends VertexAttachment { + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class MeshAttachment extends VertexAttachment { + region: TextureRegion; + path: string; + regionUVs: ArrayLike; + worldVertices: ArrayLike; + triangles: Array; + color: Color; + hullLength: number; + private _parentMesh; + inheritDeform: boolean; + tempColor: Color; + constructor(name: string); + updateUVs(): void; + /** @return The updated world vertices. */ + updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike; + applyDeform(sourceAttachment: VertexAttachment): boolean; + getParentMesh(): MeshAttachment; + /** @param parentMesh May be null. */ + setParentMesh(parentMesh: MeshAttachment): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathAttachment extends VertexAttachment { + lengths: Array; + closed: boolean; + constantSpeed: boolean; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class RegionAttachment extends Attachment { + static OX1: number; + static OY1: number; + static OX2: number; + static OY2: number; + static OX3: number; + static OY3: number; + static OX4: number; + static OY4: number; + static X1: number; + static Y1: number; + static C1R: number; + static C1G: number; + static C1B: number; + static C1A: number; + static U1: number; + static V1: number; + static X2: number; + static Y2: number; + static C2R: number; + static C2G: number; + static C2B: number; + static C2A: number; + static U2: number; + static V2: number; + static X3: number; + static Y3: number; + static C3R: number; + static C3G: number; + static C3B: number; + static C3A: number; + static U3: number; + static V3: number; + static X4: number; + static Y4: number; + static C4R: number; + static C4G: number; + static C4B: number; + static C4A: number; + static U4: number; + static V4: number; + x: number; + y: number; + scaleX: number; + scaleY: number; + rotation: number; + width: number; + height: number; + color: Color; + path: string; + rendererObject: any; + region: TextureRegion; + offset: ArrayLike; + vertices: ArrayLike; + tempColor: Color; + constructor(name: string); + setRegion(region: TextureRegion): void; + updateOffset(): void; + updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TextureRegion { + renderObject: any; + u: number; + v: number; + u2: number; + v2: number; + width: number; + height: number; + rotate: boolean; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class AssetManager implements Disposable { + private _gl; + private _assets; + private _errors; + private _toLoad; + private _loaded; + constructor(gl: WebGLRenderingContext); + loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; + loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + get(path: string): string | Texture; + remove(path: string): void; + removeAll(): void; + isLoadingComplete(): boolean; + toLoad(): number; + loaded(): number; + dispose(): void; + hasErrors(): boolean; + errors(): Map; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + const M00: number; + const M01: number; + const M02: number; + const M03: number; + const M10: number; + const M11: number; + const M12: number; + const M13: number; + const M20: number; + const M21: number; + const M22: number; + const M23: number; + const M30: number; + const M31: number; + const M32: number; + const M33: number; + class Matrix4 { + temp: Float32Array; + values: Float32Array; + constructor(); + set(values: ArrayLike): Matrix4; + transpose(): Matrix4; + identity(): Matrix4; + invert(): Matrix4; + determinant(): number; + translate(x: number, y: number, z: number): Matrix4; + copy(): Matrix4; + projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; + ortho2d(x: number, y: number, width: number, height: number): Matrix4; + ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; + multiply(matrix: Matrix4): Matrix4; + multiplyLeft(matrix: Matrix4): Matrix4; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Mesh implements Disposable { + private _attributes; + private _gl; + private _vertices; + private _verticesBuffer; + private _verticesLength; + private _dirtyVertices; + private _indices; + private _indicesBuffer; + private _indicesLength; + private _dirtyIndices; + private _elementsPerVertex; + attributes(): VertexAttribute[]; + maxVertices(): number; + numVertices(): number; + setVerticesLength(length: number): void; + vertices(): Float32Array; + maxIndices(): number; + numIndices(): number; + setIndicesLength(length: number): void; + indices(): Uint16Array; + constructor(gl: WebGLRenderingContext, _attributes: VertexAttribute[], maxVertices: number, maxIndices: number); + setVertices(vertices: Array): void; + setIndices(indices: Array): void; + draw(shader: Shader, primitiveType: number): void; + drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; + bind(shader: Shader): void; + unbind(shader: Shader): void; + private update(); + dispose(): void; + } + class VertexAttribute { + name: string; + type: VertexAttributeType; + numElements: number; + constructor(name: string, type: VertexAttributeType, numElements: number); + } + class Position2Attribute extends VertexAttribute { + constructor(); + } + class Position3Attribute extends VertexAttribute { + constructor(); + } + class TexCoordAttribute extends VertexAttribute { + constructor(unit?: number); + } + class ColorAttribute extends VertexAttribute { + constructor(); + } + enum VertexAttributeType { + Float = 0, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class PolygonBatcher { + private _gl; + private _drawCalls; + private _drawing; + private _mesh; + private _shader; + private _lastTexture; + private _verticesLength; + private _indicesLength; + private _srcBlend; + private _dstBlend; + constructor(gl: WebGLRenderingContext, maxVertices?: number); + begin(shader: Shader): void; + setBlendMode(srcBlend: number, dstBlend: number): void; + draw(texture: Texture, vertices: ArrayLike, indices: Array): void; + private flush(); + end(): void; + drawCalls(): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Shader implements Disposable { + private _vertexShader; + private _fragmentShader; + static MVP_MATRIX: string; + static POSITION: string; + static COLOR: string; + static TEXCOORDS: string; + static SAMPLER: string; + private _gl; + private _vs; + private _fs; + private _program; + private _tmp2x2; + private _tmp3x3; + private _tmp4x4; + program(): WebGLProgram; + vertexShader(): string; + fragmentShader(): string; + constructor(gl: WebGLRenderingContext, _vertexShader: string, _fragmentShader: string); + private compile(); + private compileShader(type, source); + private compileProgram(vs, fs); + bind(): void; + unbind(): void; + setUniformi(uniform: string, value: number): void; + setUniformf(uniform: string, value: number): void; + setUniform2f(uniform: string, value: number, value2: number): void; + setUniform3f(uniform: string, value: number, value2: number, value3: number): void; + setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; + setUniform2x2f(uniform: string, value: ArrayLike): void; + setUniform3x3f(uniform: string, value: ArrayLike): void; + setUniform4x4f(uniform: string, value: ArrayLike): void; + getUniformLocation(uniform: string): WebGLUniformLocation; + getAttributeLocation(attribute: string): number; + dispose(): void; + static newColoredTextured(gl: WebGLRenderingContext): Shader; + static newColored(gl: WebGLRenderingContext): Shader; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class SkeletonRenderer { + static QUAD_TRIANGLES: number[]; + premultipliedAlpha: boolean; + private _gl; + constructor(gl: WebGLRenderingContext); + draw(batcher: PolygonBatcher, skeleton: Skeleton): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Texture implements Disposable { + private _gl; + private _texture; + private _image; + private _boundUnit; + constructor(gl: WebGLRenderingContext, image: HTMLImageElement, useMipMaps?: boolean); + getImage(): HTMLImageElement; + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + update(useMipMaps: boolean): void; + bind(unit?: number): void; + unbind(): void; + dispose(): void; + static filterFromString(text: string): TextureFilter; + static wrapFromString(text: string): TextureWrap; + } + enum TextureFilter { + Nearest, + Linear, + MipMap, + MipMapNearestNearest, + MipMapLinearNearest, + MipMapNearestLinear, + MipMapLinearLinear, + } + enum TextureWrap { + MirroredRepeat, + ClampToEdge, + Repeat, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class TextureAtlas implements Disposable { + pages: TextureAtlasPage[]; + regions: TextureAtlasRegion[]; + constructor(atlasText: string, textureLoader: (path: string) => Texture); + private load(atlasText, textureLoader); + findRegion(name: string): TextureAtlasRegion; + dispose(): void; + } + class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + } + class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + index: number; + rotate: boolean; + texture: Texture; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class TextureAtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + constructor(atlas: TextureAtlas); + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Vector3 { + x: number; + y: number; + z: number; + set(x: number, y: number, z: number): Vector3; + add(v: Vector3): Vector3; + sub(v: Vector3): Vector3; + scale(s: number): Vector3; + normalize(): Vector3; + cross(v: Vector3): Vector3; + multiply(matrix: Matrix4): Vector3; + project(matrix: Matrix4): Vector3; + dot(v: Vector3): number; + length(): number; + distance(v: Vector3): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + function getSourceGLBlendMode(gl: WebGLRenderingContext, blendMode: BlendMode, premultipliedAlpha?: boolean): number; + function getDestGLBlendMode(gl: WebGLRenderingContext, blendMode: BlendMode): number; +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SpineWidget { + skeleton: Skeleton; + state: AnimationState; + gl: WebGLRenderingContext; + canvas: HTMLCanvasElement; + private _config; + private _assetManager; + private _shader; + private _batcher; + private _mvp; + private _skeletonRenderer; + private _paused; + private _lastFrameTime; + private _backgroundColor; + private _loaded; + constructor(element: Element | string, config: SpineWidgetConfig); + private validateConfig(config); + private load(); + private render(); + pause(): void; + play(): void; + isPlaying(): boolean; + setAnimation(animationName: string): void; + static loadWidgets(): void; + static loadWidget(widget: Element): void; + static pageLoaded: boolean; + private static ready(); + static setupDOMListener(): void; + } + class SpineWidgetConfig { + json: string; + atlas: string; + animation: string; + imagesPath: string; + skin: string; + loop: boolean; + scale: number; + x: number; + y: number; + width: number; + height: number; + backgroundColor: string; + premultipliedAlpha: boolean; + success: (widget: SpineWidget) => void; + error: (widget: SpineWidget, msg: string) => void; + } +} diff --git a/spine-ts/build/spine-core.js b/spine-ts/build/spine-core.js new file mode 100644 index 000000000..68e61875b --- /dev/null +++ b/spine-ts/build/spine-core.js @@ -0,0 +1,6877 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var spine; +(function (spine) { + var Animation = (function () { + function Animation(name, timelines, duration) { + if (name == null) + throw new Error("name cannot be null."); + if (timelines == null) + throw new Error("timelines cannot be null."); + this.name = name; + this.timelines = timelines; + this.duration = duration; + } + Animation.prototype.apply = function (skeleton, lastTime, time, loop, events) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, 1); + }; + Animation.prototype.mix = function (skeleton, lastTime, time, loop, events, alpha) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha); + }; + Animation.binarySearch = function (values, target, step) { + if (step === void 0) { step = 1; } + var low = 0; + var high = values.length / step - 2; + if (high == 0) + return step; + var current = high >>> 1; + while (true) { + if (values[(current + 1) * step] <= target) + low = current + 1; + else + high = current; + if (low == high) + return (low + 1) * step; + current = (low + high) >>> 1; + } + }; + Animation.linearSearch = function (values, target, step) { + for (var i = 0, last = values.length - step; i <= last; i += step) + if (values[i] > target) + return i; + return -1; + }; + return Animation; + }()); + spine.Animation = Animation; + var CurveTimeline = (function () { + function CurveTimeline(frameCount) { + if (frameCount <= 0) + throw new Error("frameCount must be > 0: " + frameCount); + this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); + } + CurveTimeline.prototype.getFrameCount = function () { + return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; + }; + CurveTimeline.prototype.setLinear = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; + }; + CurveTimeline.prototype.setStepped = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; + }; + CurveTimeline.prototype.getCurveType = function (frameIndex) { + var index = frameIndex * CurveTimeline.BEZIER_SIZE; + if (index == this.curves.length) + return CurveTimeline.LINEAR; + var type = this.curves[index]; + if (type == CurveTimeline.LINEAR) + return CurveTimeline.LINEAR; + if (type == CurveTimeline.STEPPED) + return CurveTimeline.STEPPED; + return CurveTimeline.BEZIER; + }; + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + CurveTimeline.prototype.setCurve = function (frameIndex, cx1, cy1, cx2, cy2) { + var tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; + var dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; + var ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; + var dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var curves = this.curves; + curves[i++] = CurveTimeline.BEZIER; + var x = dfx, y = dfy; + for (var n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } + }; + CurveTimeline.prototype.getCurvePercent = function (frameIndex, percent) { + percent = spine.MathUtils.clamp(percent, 0, 1); + var curves = this.curves; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var type = curves[i]; + if (type == CurveTimeline.LINEAR) + return percent; + if (type == CurveTimeline.STEPPED) + return 0; + i++; + var x = 0; + for (var start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + x = curves[i]; + if (x >= percent) { + var prevX = void 0, prevY = void 0; + if (i == start) { + prevX = 0; + prevY = 0; + } + else { + prevX = curves[i - 2]; + prevY = curves[i - 1]; + } + return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + var y = curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1. + }; + CurveTimeline.LINEAR = 0; + CurveTimeline.STEPPED = 1; + CurveTimeline.BEZIER = 2; + CurveTimeline.BEZIER_SIZE = 10 * 2 - 1; + return CurveTimeline; + }()); + spine.CurveTimeline = CurveTimeline; + var RotateTimeline = (function (_super) { + __extends(RotateTimeline, _super); + function RotateTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount << 1); + } + /** Sets the time and angle of the specified keyframe. */ + RotateTimeline.prototype.setFrame = function (frameIndex, time, degrees) { + frameIndex <<= 1; + this.frames[frameIndex] = time; + this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; + }; + RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { + var amount_1 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation; + while (amount_1 > 180) + amount_1 -= 360; + while (amount_1 < -180) + amount_1 += 360; + bone.rotation += amount_1 * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); + var prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); + var amount = frames[frame + RotateTimeline.ROTATION] - prevRotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + amount = bone.data.rotation + (prevRotation + amount * percent) - bone.rotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + bone.rotation += amount * alpha; + }; + RotateTimeline.ENTRIES = 2; + RotateTimeline.PREV_TIME = -2; + RotateTimeline.PREV_ROTATION = -1; + RotateTimeline.ROTATION = 1; + return RotateTimeline; + }(CurveTimeline)); + spine.RotateTimeline = RotateTimeline; + var TranslateTimeline = (function (_super) { + __extends(TranslateTimeline, _super); + function TranslateTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + TranslateTimeline.prototype.setFrame = function (frameIndex, time, x, y) { + frameIndex *= TranslateTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TranslateTimeline.X] = x; + this.frames[frameIndex + TranslateTimeline.Y] = y; + }; + TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { + bone.x += (bone.data.x + frames[frames.length + TranslateTimeline.PREV_X] - bone.x) * alpha; + bone.y += (bone.data.y + frames[frames.length + TranslateTimeline.PREV_Y] - bone.y) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); + var prevX = frames[frame + TranslateTimeline.PREV_X]; + var prevY = frames[frame + TranslateTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); + bone.x += (bone.data.x + prevX + (frames[frame + TranslateTimeline.X] - prevX) * percent - bone.x) * alpha; + bone.y += (bone.data.y + prevY + (frames[frame + TranslateTimeline.Y] - prevY) * percent - bone.y) * alpha; + }; + TranslateTimeline.ENTRIES = 3; + TranslateTimeline.PREV_TIME = -3; + TranslateTimeline.PREV_X = -2; + TranslateTimeline.PREV_Y = -1; + TranslateTimeline.X = 1; + TranslateTimeline.Y = 2; + return TranslateTimeline; + }(CurveTimeline)); + spine.TranslateTimeline = TranslateTimeline; + var ScaleTimeline = (function (_super) { + __extends(ScaleTimeline, _super); + function ScaleTimeline(frameCount) { + _super.call(this, frameCount); + } + ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { + bone.scaleX += (bone.data.scaleX * frames[frames.length + ScaleTimeline.PREV_X] - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * frames[frames.length + ScaleTimeline.PREV_Y] - bone.scaleY) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); + var prevX = frames[frame + ScaleTimeline.PREV_X]; + var prevY = frames[frame + ScaleTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); + bone.scaleX += (bone.data.scaleX * (prevX + (frames[frame + ScaleTimeline.X] - prevX) * percent) - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * (prevY + (frames[frame + ScaleTimeline.Y] - prevY) * percent) - bone.scaleY) * alpha; + }; + return ScaleTimeline; + }(TranslateTimeline)); + spine.ScaleTimeline = ScaleTimeline; + var ShearTimeline = (function (_super) { + __extends(ShearTimeline, _super); + function ShearTimeline(frameCount) { + _super.call(this, frameCount); + } + ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { + bone.shearX += (bone.data.shearX + frames[frames.length + ShearTimeline.PREV_X] - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + frames[frames.length + ShearTimeline.PREV_Y] - bone.shearY) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); + var prevX = frames[frame + ShearTimeline.PREV_X]; + var prevY = frames[frame + ShearTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); + bone.shearX += (bone.data.shearX + (prevX + (frames[frame + ShearTimeline.X] - prevX) * percent) - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + (prevY + (frames[frame + ShearTimeline.Y] - prevY) * percent) - bone.shearY) * alpha; + }; + return ShearTimeline; + }(TranslateTimeline)); + spine.ShearTimeline = ShearTimeline; + var ColorTimeline = (function (_super) { + __extends(ColorTimeline, _super); + function ColorTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + ColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a) { + frameIndex *= ColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + ColorTimeline.R] = r; + this.frames[frameIndex + ColorTimeline.G] = g; + this.frames[frameIndex + ColorTimeline.B] = b; + this.frames[frameIndex + ColorTimeline.A] = a; + }; + ColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var r = 0, g = 0, b = 0, a = 0; + if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { + var i = frames.length; + r = frames[i + ColorTimeline.PREV_R]; + g = frames[i + ColorTimeline.PREV_G]; + b = frames[i + ColorTimeline.PREV_B]; + a = frames[i + ColorTimeline.PREV_A]; + } + else { + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); + r = frames[frame + ColorTimeline.PREV_R]; + g = frames[frame + ColorTimeline.PREV_G]; + b = frames[frame + ColorTimeline.PREV_B]; + a = frames[frame + ColorTimeline.PREV_A]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + ColorTimeline.R] - r) * percent; + g += (frames[frame + ColorTimeline.G] - g) * percent; + b += (frames[frame + ColorTimeline.B] - b) * percent; + a += (frames[frame + ColorTimeline.A] - a) * percent; + } + var color = skeleton.slots[this.slotIndex].color; + if (alpha < 1) + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + else + color.set(r, g, b, a); + }; + ColorTimeline.ENTRIES = 5; + ColorTimeline.PREV_TIME = -5; + ColorTimeline.PREV_R = -4; + ColorTimeline.PREV_G = -3; + ColorTimeline.PREV_B = -2; + ColorTimeline.PREV_A = -1; + ColorTimeline.R = 1; + ColorTimeline.G = 2; + ColorTimeline.B = 3; + ColorTimeline.A = 4; + return ColorTimeline; + }(CurveTimeline)); + spine.ColorTimeline = ColorTimeline; + var AttachmentTimeline = (function () { + function AttachmentTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.attachmentNames = new Array(frameCount); + } + AttachmentTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time and value of the specified keyframe. */ + AttachmentTimeline.prototype.setFrame = function (frameIndex, time, attachmentName) { + this.frames[frameIndex] = time; + this.attachmentNames[frameIndex] = attachmentName; + }; + AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frameIndex = 0; + if (time >= frames[frames.length - 1]) + frameIndex = frames.length - 1; + else + frameIndex = Animation.binarySearch(frames, time, 1) - 1; + var attachmentName = this.attachmentNames[frameIndex]; + skeleton.slots[this.slotIndex] + .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + }; + return AttachmentTimeline; + }()); + spine.AttachmentTimeline = AttachmentTimeline; + var EventTimeline = (function () { + function EventTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.events = new Array(frameCount); + } + EventTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time of the specified keyframe. */ + EventTimeline.prototype.setFrame = function (frameIndex, event) { + this.frames[frameIndex] = event.time; + this.events[frameIndex] = event; + }; + /** Fires events for frames > lastTime and <= time. */ + EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + if (firedEvents == null) + return; + var frames = this.frames; + var frameCount = this.frames.length; + if (lastTime > time) { + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha); + lastTime = -1; + } + else if (lastTime >= frames[frameCount - 1]) + return; + if (time < frames[0]) + return; // Time is before first frame. + var frame = 0; + if (lastTime < frames[0]) + frame = 0; + else { + frame = Animation.binarySearch(frames, lastTime); + var frameTime = frames[frame]; + while (frame > 0) { + if (frames[frame - 1] != frameTime) + break; + frame--; + } + } + for (; frame < frameCount && time >= frames[frame]; frame++) + firedEvents.push(this.events[frame]); + }; + return EventTimeline; + }()); + spine.EventTimeline = EventTimeline; + var DrawOrderTimeline = (function () { + function DrawOrderTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.drawOrders = new Array(frameCount); + } + DrawOrderTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + DrawOrderTimeline.prototype.setFrame = function (frameIndex, time, drawOrder) { + this.frames[frameIndex] = time; + this.drawOrders[frameIndex] = drawOrder; + }; + DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frame = 0; + if (time >= frames[frames.length - 1]) + frame = frames.length - 1; + else + frame = Animation.binarySearch(frames, time) - 1; + var drawOrder = skeleton.drawOrder; + var slots = skeleton.slots; + var drawOrderToSetupIndex = this.drawOrders[frame]; + if (drawOrderToSetupIndex == null) + spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); + else { + for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) + drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + } + }; + return DrawOrderTimeline; + }()); + spine.DrawOrderTimeline = DrawOrderTimeline; + var DeformTimeline = (function (_super) { + __extends(DeformTimeline, _super); + function DeformTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount); + this.frameVertices = new Array(frameCount); + } + /** Sets the time of the specified keyframe. */ + DeformTimeline.prototype.setFrame = function (frameIndex, time, vertices) { + this.frames[frameIndex] = time; + this.frameVertices[frameIndex] = vertices; + }; + DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var slot = skeleton.slots[this.slotIndex]; + var slotAttachment = slot.getAttachment(); + if (!(slotAttachment instanceof spine.VertexAttachment) || !slotAttachment.applyDeform(this.attachment)) + return; + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frameVertices = this.frameVertices; + var vertexCount = frameVertices[0].length; + var verticesArray = slot.attachmentVertices; + if (verticesArray.length != vertexCount) + alpha = 1; // Don't mix from uninitialized slot vertices. + var vertices = spine.Utils.setArraySize(verticesArray, vertexCount); + if (time >= frames[frames.length - 1]) { + var lastVertices = frameVertices[frames.length - 1]; + if (alpha < 1) { + for (var i = 0; i < vertexCount; i++) + vertices[i] += (lastVertices[i] - vertices[i]) * alpha; + } + else + spine.Utils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount); + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time); + var prevVertices = frameVertices[frame - 1]; + var nextVertices = frameVertices[frame]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); + if (alpha < 1) { + for (var i = 0; i < vertexCount; i++) { + var prev = prevVertices[i]; + vertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha; + } + } + else { + for (var i = 0; i < vertexCount; i++) { + var prev = prevVertices[i]; + vertices[i] = prev + (nextVertices[i] - prev) * percent; + } + } + }; + return DeformTimeline; + }(CurveTimeline)); + spine.DeformTimeline = DeformTimeline; + var IkConstraintTimeline = (function (_super) { + __extends(IkConstraintTimeline, _super); + function IkConstraintTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); + } + /** Sets the time, mix and bend direction of the specified keyframe. */ + IkConstraintTimeline.prototype.setFrame = function (frameIndex, time, mix, bendDirection) { + frameIndex *= IkConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; + this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; + }; + IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; + if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { + constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]); + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); + var mix = frames[frame + IkConstraintTimeline.PREV_MIX]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); + constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]); + }; + IkConstraintTimeline.ENTRIES = 3; + IkConstraintTimeline.PREV_TIME = -3; + IkConstraintTimeline.PREV_MIX = -2; + IkConstraintTimeline.PREV_BEND_DIRECTION = -1; + IkConstraintTimeline.MIX = 1; + IkConstraintTimeline.BEND_DIRECTION = 2; + return IkConstraintTimeline; + }(CurveTimeline)); + spine.IkConstraintTimeline = IkConstraintTimeline; + var TransformConstraintTimeline = (function (_super) { + __extends(TransformConstraintTimeline, _super); + function TransformConstraintTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); + } + /** Sets the time and mixes of the specified keyframe. */ + TransformConstraintTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { + frameIndex *= TransformConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; + this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; + this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; + }; + TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; + if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { + var i = frames.length; + constraint.rotateMix += (frames[i + TransformConstraintTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + TransformConstraintTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + constraint.scaleMix += (frames[i + TransformConstraintTimeline.PREV_SCALE] - constraint.scaleMix) * alpha; + constraint.shearMix += (frames[i + TransformConstraintTimeline.PREV_SHEAR] - constraint.shearMix) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); + var rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; + var translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; + var scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; + var shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; + constraint.rotateMix += (rotate + (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + constraint.scaleMix += (scale + (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent - constraint.scaleMix) * alpha; + constraint.shearMix += (shear + (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent - constraint.shearMix) * alpha; + }; + TransformConstraintTimeline.ENTRIES = 5; + TransformConstraintTimeline.PREV_TIME = -5; + TransformConstraintTimeline.PREV_ROTATE = -4; + TransformConstraintTimeline.PREV_TRANSLATE = -3; + TransformConstraintTimeline.PREV_SCALE = -2; + TransformConstraintTimeline.PREV_SHEAR = -1; + TransformConstraintTimeline.ROTATE = 1; + TransformConstraintTimeline.TRANSLATE = 2; + TransformConstraintTimeline.SCALE = 3; + TransformConstraintTimeline.SHEAR = 4; + return TransformConstraintTimeline; + }(CurveTimeline)); + spine.TransformConstraintTimeline = TransformConstraintTimeline; + var PathConstraintPositionTimeline = (function (_super) { + __extends(PathConstraintPositionTimeline, _super); + function PathConstraintPositionTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + PathConstraintPositionTimeline.prototype.setFrame = function (frameIndex, time, value) { + frameIndex *= PathConstraintPositionTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; + }; + PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) { + var i = frames.length; + constraint.position += (frames[i + PathConstraintPositionTimeline.PREV_VALUE] - constraint.position) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); + var position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); + constraint.position += (position + (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent - constraint.position) * alpha; + }; + PathConstraintPositionTimeline.ENTRIES = 2; + PathConstraintPositionTimeline.PREV_TIME = -2; + PathConstraintPositionTimeline.PREV_VALUE = -1; + PathConstraintPositionTimeline.VALUE = 1; + return PathConstraintPositionTimeline; + }(CurveTimeline)); + spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; + var PathConstraintSpacingTimeline = (function (_super) { + __extends(PathConstraintSpacingTimeline, _super); + function PathConstraintSpacingTimeline(frameCount) { + _super.call(this, frameCount); + } + PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) { + var i = frames.length; + constraint.spacing += (frames[i + PathConstraintSpacingTimeline.PREV_VALUE] - constraint.spacing) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); + var spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); + constraint.spacing += (spacing + (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent - constraint.spacing) * alpha; + }; + return PathConstraintSpacingTimeline; + }(PathConstraintPositionTimeline)); + spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; + var PathConstraintMixTimeline = (function (_super) { + __extends(PathConstraintMixTimeline, _super); + function PathConstraintMixTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); + } + /** Sets the time and mixes of the specified keyframe. */ + PathConstraintMixTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix) { + frameIndex *= PathConstraintMixTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; + }; + PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { + var i = frames.length; + constraint.rotateMix += (frames[i + PathConstraintMixTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + PathConstraintMixTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); + var rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; + var translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); + constraint.rotateMix += (rotate + (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + }; + PathConstraintMixTimeline.ENTRIES = 3; + PathConstraintMixTimeline.PREV_TIME = -3; + PathConstraintMixTimeline.PREV_ROTATE = -2; + PathConstraintMixTimeline.PREV_TRANSLATE = -1; + PathConstraintMixTimeline.ROTATE = 1; + PathConstraintMixTimeline.TRANSLATE = 2; + return PathConstraintMixTimeline; + }(CurveTimeline)); + spine.PathConstraintMixTimeline = PathConstraintMixTimeline; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var AnimationState = (function () { + function AnimationState(data) { + if (data === void 0) { data = null; } + this.tracks = new Array(); + this.events = new Array(); + this.listeners = new Array(); + this.timeScale = 1; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + } + AnimationState.prototype.update = function (delta) { + delta *= this.timeScale; + for (var i = 0; i < this.tracks.length; i++) { + var current = this.tracks[i]; + if (current == null) + continue; + var next = current.next; + if (next != null) { + var nextTime = current.lastTime - next.delay; + if (nextTime >= 0) { + var nextDelta = delta * next.timeScale; + next.time = nextTime + nextDelta; // For start event to see correct time. + current.time += delta * current.timeScale; // For end event to see correct time. + this.setCurrent(i, next); + next.time -= nextDelta; // Prevent increasing time twice, below. + current = next; + } + } + else if (!current.loop && current.lastTime >= current.endTime) { + // End non-looping animation when it reaches its end time and there is no next entry. + this.clearTrack(i); + continue; + } + current.time += delta * current.timeScale; + if (current.previous != null) { + var previousDelta = delta * current.previous.timeScale; + current.previous.time += previousDelta; + current.mixTime += previousDelta; + } + } + }; + AnimationState.prototype.apply = function (skeleton) { + var events = this.events; + var listenerCount = this.listeners.length; + for (var i = 0; i < this.tracks.length; i++) { + var current = this.tracks[i]; + if (current == null) + continue; + events.length = 0; + var time = current.time; + var lastTime = current.lastTime; + var endTime = current.endTime; + var loop = current.loop; + if (!loop && time > endTime) + time = endTime; + var previous = current.previous; + if (previous == null) + current.animation.mix(skeleton, lastTime, time, loop, events, current.mix); + else { + var previousTime = previous.time; + if (!previous.loop && previousTime > previous.endTime) + previousTime = previous.endTime; + previous.animation.apply(skeleton, previousTime, previousTime, previous.loop, null); + var alpha = current.mixTime / current.mixDuration * current.mix; + if (alpha >= 1) { + alpha = 1; + current.previous = null; + } + current.animation.mix(skeleton, lastTime, time, loop, events, alpha); + } + for (var ii = 0, nn = events.length; ii < nn; ii++) { + var event_1 = events[ii]; + if (current.listener != null) + current.listener.event(i, event_1); + for (var iii = 0; iii < listenerCount; iii++) + this.listeners[iii].event(i, event_1); + } + // Check if completed the animation or a loop iteration. + if (loop ? (lastTime % endTime > time % endTime) : (lastTime < endTime && time >= endTime)) { + var count = spine.MathUtils.toInt(time / endTime); + if (current.listener != null) + current.listener.complete(i, count); + for (var ii = 0, nn = this.listeners.length; ii < nn; ii++) + this.listeners[ii].complete(i, count); + } + current.lastTime = current.time; + } + }; + AnimationState.prototype.clearTracks = function () { + for (var i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + }; + AnimationState.prototype.clearTrack = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return; + var current = this.tracks[trackIndex]; + if (current == null) + return; + if (current.listener != null) + current.listener.end(trackIndex); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(trackIndex); + this.tracks[trackIndex] = null; + this.freeAll(current); + }; + AnimationState.prototype.freeAll = function (entry) { + while (entry != null) { + var next = entry.next; + entry = next; + } + }; + AnimationState.prototype.expandToIndex = function (index) { + if (index < this.tracks.length) + return this.tracks[index]; + spine.Utils.setArraySize(this.tracks, index - this.tracks.length + 1, null); + this.tracks.length = index + 1; + return null; + }; + AnimationState.prototype.setCurrent = function (index, entry) { + var current = this.expandToIndex(index); + if (current != null) { + var previous = current.previous; + current.previous = null; + if (current.listener != null) + current.listener.end(index); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(index); + entry.mixDuration = this.data.getMix(current.animation, entry.animation); + if (entry.mixDuration > 0) { + entry.mixTime = 0; + // If a mix is in progress, mix from the closest animation. + if (previous != null && current.mixTime / current.mixDuration < 0.5) { + entry.previous = previous; + previous = current; + } + else + entry.previous = current; + } + } + this.tracks[index] = entry; + if (entry.listener != null) + entry.listener.start(index); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].start(index); + }; + /** @see #setAnimation(int, Animation, boolean) */ + AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + }; + /** Set the current animation. Any queued animations are cleared. */ + AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { + var current = this.expandToIndex(trackIndex); + if (current != null) + this.freeAll(current.next); + var entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + this.setCurrent(trackIndex, entry); + return entry; + }; + /** {@link #addAnimation(int, Animation, boolean, float)} */ + AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + }; + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { + var entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + var last = this.expandToIndex(trackIndex); + if (last != null) { + while (last.next != null) + last = last.next; + last.next = entry; + } + else + this.tracks[trackIndex] = entry; + if (delay <= 0) { + if (last != null) + delay += last.endTime - this.data.getMix(last.animation, animation); + else + delay = 0; + } + entry.delay = delay; + return entry; + }; + /** @return May be null. */ + AnimationState.prototype.getCurrent = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return null; + return this.tracks[trackIndex]; + }; + /** Adds a listener to receive events for all animations. */ + AnimationState.prototype.addListener = function (listener) { + if (listener == null) + throw new Error("listener cannot be null."); + this.listeners.push(listener); + }; + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + AnimationState.prototype.removeListener = function (listener) { + var index = this.listeners.indexOf(listener); + if (index >= 0) + this.listeners.splice(index, 1); + }; + AnimationState.prototype.clearListeners = function () { + this.listeners.length = 0; + }; + return AnimationState; + }()); + spine.AnimationState = AnimationState; + var TrackEntry = (function () { + function TrackEntry() { + this.loop = false; + this.delay = 0; + this.time = 0; + this.lastTime = -1; + this.endTime = 0; + this.timeScale = 1; + this.mixTime = 0; + this.mixDuration = 0; + this.mix = 1; + } + TrackEntry.prototype.reset = function () { + this.next = null; + this.previous = null; + this.animation = null; + this.listener = null; + this.timeScale = 1; + this.lastTime = -1; // Trigger events on frame zero. + this.time = 0; + }; + /** Returns true if the current time is greater than the end time, regardless of looping. */ + TrackEntry.prototype.isComplete = function () { + return this.time >= this.endTime; + }; + return TrackEntry; + }()); + spine.TrackEntry = TrackEntry; + var AnimationStateAdapter = (function () { + function AnimationStateAdapter() { + } + AnimationStateAdapter.prototype.event = function (trackIndex, event) { + }; + AnimationStateAdapter.prototype.complete = function (trackIndex, loopCount) { + }; + AnimationStateAdapter.prototype.start = function (trackIndex) { + }; + AnimationStateAdapter.prototype.end = function (trackIndex) { + }; + return AnimationStateAdapter; + }()); + spine.AnimationStateAdapter = AnimationStateAdapter; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var AnimationStateData = (function () { + function AnimationStateData(skeletonData) { + this.animationToMixTime = {}; + this.defaultMix = 0; + if (skeletonData == null) + throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + AnimationStateData.prototype.setMix = function (fromName, toName, duration) { + var from = this.skeletonData.findAnimation(fromName); + if (from == null) + throw new Error("Animation not found: " + fromName); + var to = this.skeletonData.findAnimation(toName); + if (to == null) + throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + }; + AnimationStateData.prototype.setMixWith = function (from, to, duration) { + if (from == null) + throw new Error("from cannot be null."); + if (to == null) + throw new Error("to cannot be null."); + var key = from.name + to.name; + this.animationToMixTime[key] = duration; + }; + AnimationStateData.prototype.getMix = function (from, to) { + var key = from.name + to.name; + var value = this.animationToMixTime[key]; + return value === undefined ? this.defaultMix : value; + }; + return AnimationStateData; + }()); + spine.AnimationStateData = AnimationStateData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(spine.BlendMode || (spine.BlendMode = {})); + var BlendMode = spine.BlendMode; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Bone = (function () { + /** @param parent May be null. */ + function Bone(data, skeleton, parent) { + this.children = new Array(); + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 0; + this.scaleY = 0; + this.shearX = 0; + this.shearY = 0; + this.appliedRotation = 0; + this.a = 0; + this.b = 0; + this.worldX = 0; + this.c = 0; + this.d = 0; + this.worldY = 0; + this.worldSignX = 0; + this.worldSignY = 0; + this.sorted = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + Bone.prototype.update = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and this bone's local transform. */ + Bone.prototype.updateWorldTransform = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and the specified local transform. */ + Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { + this.appliedRotation = rotation; + var rotationY = rotation + 90 + shearY; + var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX, lb = spine.MathUtils.cosDeg(rotationY) * scaleY; + var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX, ld = spine.MathUtils.sinDeg(rotationY) * scaleY; + var parent = this.parent; + if (parent == null) { + var skeleton = this.skeleton; + if (skeleton.flipX) { + x = -x; + la = -la; + lb = -lb; + } + if (skeleton.flipY) { + y = -y; + lc = -lc; + ld = -ld; + } + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + this.worldX = x; + this.worldY = y; + this.worldSignX = spine.MathUtils.signum(scaleX); + this.worldSignY = spine.MathUtils.signum(scaleY); + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + this.worldSignX = parent.worldSignX * spine.MathUtils.signum(scaleX); + this.worldSignY = parent.worldSignY * spine.MathUtils.signum(scaleY); + if (this.data.inheritRotation && this.data.inheritScale) { + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else { + if (this.data.inheritRotation) { + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + var cos = spine.MathUtils.cosDeg(parent.appliedRotation), sin = spine.MathUtils.sinDeg(parent.appliedRotation); + var temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + if (!parent.data.inheritRotation) + break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else if (this.data.inheritScale) { + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + var cos = spine.MathUtils.cosDeg(parent.appliedRotation), sin = spine.MathUtils.sinDeg(parent.appliedRotation); + var psx = parent.scaleX, psy = parent.scaleY; + var za = cos * psx, zb = sin * psy, zc = sin * psx, zd = cos * psy; + var temp = pa * za + pb * zc; + pb = pb * zd - pa * zb; + pa = temp; + temp = pc * za + pd * zc; + pd = pd * zd - pc * zb; + pc = temp; + if (psx >= 0) + sin = -sin; + temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + if (!parent.data.inheritScale) + break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else { + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + } + if (this.skeleton.flipX) { + this.a = -this.a; + this.b = -this.b; + } + if (this.skeleton.flipY) { + this.c = -this.c; + this.d = -this.d; + } + } + }; + Bone.prototype.setToSetupPose = function () { + var data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + }; + Bone.prototype.getWorldRotationX = function () { + return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldRotationY = function () { + return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldScaleX = function () { + return Math.sqrt(this.a * this.a + this.b * this.b) * this.worldSignX; + }; + Bone.prototype.getWorldScaleY = function () { + return Math.sqrt(this.c * this.c + this.d * this.d) * this.worldSignY; + }; + Bone.prototype.worldToLocalRotationX = function () { + var parent = this.parent; + if (parent == null) + return this.rotation; + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, a = this.a, c = this.c; + return Math.atan2(pa * c - pc * a, pd * a - pb * c) * spine.MathUtils.radDeg; + }; + Bone.prototype.worldToLocalRotationY = function () { + var parent = this.parent; + if (parent == null) + return this.rotation; + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, b = this.b, d = this.d; + return Math.atan2(pa * d - pc * b, pd * b - pb * d) * spine.MathUtils.radDeg; + }; + Bone.prototype.rotateWorld = function (degrees) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + }; + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + Bone.prototype.updateLocalTransform = function () { + var parent = this.parent; + if (parent == null) { + this.x = this.worldX; + this.y = this.worldY; + this.rotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + this.scaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.scaleY = Math.sqrt(this.b * this.b + this.d * this.d); + var det = this.a * this.d - this.b * this.c; + this.shearX = 0; + this.shearY = Math.atan2(this.a * this.b + this.c * this.d, det) * spine.MathUtils.radDeg; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + var pid = 1 / (pa * pd - pb * pc); + var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.x = (dx * pd * pid - dy * pb * pid); + this.y = (dy * pa * pid - dx * pc * pid); + var ia = pid * pd; + var id = pid * pa; + var ib = pid * pb; + var ic = pid * pc; + var ra = ia * this.a - ib * this.c; + var rb = ia * this.b - ib * this.d; + var rc = id * this.c - ic * this.a; + var rd = id * this.d - ic * this.b; + this.shearX = 0; + this.scaleX = Math.sqrt(ra * ra + rc * rc); + if (this.scaleX > 0.0001) { + var det = ra * rd - rb * rc; + this.scaleY = det / this.scaleX; + this.shearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; + this.rotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; + } + else { + this.scaleX = 0; + this.scaleY = Math.sqrt(rb * rb + rd * rd); + this.shearY = 0; + this.rotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; + } + this.appliedRotation = this.rotation; + }; + Bone.prototype.worldToLocal = function (world) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var invDet = 1 / (a * d - b * c); + var x = world.x - this.worldX, y = world.y - this.worldY; + world.x = (x * d * invDet - y * b * invDet); + world.y = (y * a * invDet - x * c * invDet); + return world; + }; + Bone.prototype.localToWorld = function (local) { + var x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + }; + return Bone; + }()); + spine.Bone = Bone; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var BoneData = (function () { + function BoneData(index, name, parent) { + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 1; + this.scaleY = 1; + this.shearX = 0; + this.shearY = 0; + this.inheritRotation = true; + this.inheritScale = true; + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + return BoneData; + }()); + spine.BoneData = BoneData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Event = (function () { + function Event(time, data) { + if (data == null) + throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + return Event; + }()); + spine.Event = Event; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var EventData = (function () { + function EventData(name) { + this.name = name; + } + return EventData; + }()); + spine.EventData = EventData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var IkConstraint = (function () { + function IkConstraint(data, skeleton) { + this.mix = 1; + this.bendDirection = 0; + this.level = 0; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.bendDirection = data.bendDirection; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + IkConstraint.prototype.apply = function () { + this.update(); + }; + IkConstraint.prototype.update = function () { + var target = this.target; + var bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.mix); + break; + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix); + break; + } + }; + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + IkConstraint.prototype.apply1 = function (bone, targetX, targetY, alpha) { + var pp = bone.parent; + var id = 1 / (pp.a * pp.d - pp.b * pp.c); + var x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * pp.d - y * pp.b) * id - bone.x, ty = (y * pp.a - x * pp.c) * id - bone.y; + var rotationIK = Math.atan2(ty, tx) * spine.MathUtils.radDeg - bone.shearX - bone.rotation; + if (bone.scaleX < 0) + rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK < -180) + rotationIK += 360; + bone.updateWorldTransformWith(bone.x, bone.y, bone.rotation + rotationIK * alpha, bone.scaleX, bone.scaleY, bone.shearX, bone.shearY); + }; + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, alpha) { + if (alpha == 0) { + child.updateWorldTransform(); + return; + } + var px = parent.x, py = parent.y, psx = parent.scaleX, psy = parent.scaleY, csx = child.scaleX; + var os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } + else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } + else + os2 = 0; + var cx = child.x, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + var u = Math.abs(psx - psy) <= 0.0001; + if (!u) { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } + else { + cy = child.y; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } + var pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + var id = 1 / (a * d - b * c), x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + x = cwx - pp.worldX; + y = cwy - pp.worldY; + var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0; + outer: if (u) { + l2 *= psx; + var cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) + cos = -1; + else if (cos > 1) + cos = 1; + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } + else { + a = psx * l2; + b = psy * l2; + var aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + var c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + var q = Math.sqrt(d); + if (c1 < 0) + q = -q; + q = -(c1 + q) / 2; + var r0 = q / c2, r1 = c / q; + var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; + var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; + x = l1 + a; + d = x * x; + if (d > maxDist) { + maxAngle = 0; + maxDist = d; + maxX = x; + } + x = l1 - a; + d = x * x; + if (d < minDist) { + minAngle = spine.MathUtils.PI; + minDist = d; + minX = x; + } + var angle = Math.acos(-a * l1 / (aa - bb)); + x = a * Math.cos(angle) + l1; + y = b * Math.sin(angle); + d = x * x + y * y; + if (d < minDist) { + minAngle = angle; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = angle; + maxDist = d; + maxX = x; + maxY = y; + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } + else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + var os = Math.atan2(cy, cx) * s2; + var rotation = parent.rotation; + a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 < -180) + a1 += 360; + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.scaleX, parent.scaleY, 0, 0); + rotation = child.rotation; + a2 = ((a2 + os) * spine.MathUtils.radDeg - child.shearX) * s2 + os2 - rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 < -180) + a2 += 360; + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.scaleX, child.scaleY, child.shearX, child.shearY); + }; + return IkConstraint; + }()); + spine.IkConstraint = IkConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var IkConstraintData = (function () { + function IkConstraintData(name) { + this.bones = new Array(); + this.bendDirection = 1; + this.mix = 1; + this.name = name; + } + return IkConstraintData; + }()); + spine.IkConstraintData = IkConstraintData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathConstraint = (function () { + function PathConstraint(data, skeleton) { + this.position = 0; + this.spacing = 0; + this.rotateMix = 0; + this.translateMix = 0; + this.spaces = new Array(); + this.positions = new Array(); + this.world = new Array(); + this.curves = new Array(); + this.lengths = new Array(); + this.segments = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0, n = data.bones.length; i < n; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + } + PathConstraint.prototype.apply = function () { + this.update(); + }; + PathConstraint.prototype.update = function () { + var attachment = this.target.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) + return; + var rotateMix = this.rotateMix, translateMix = this.translateMix; + var translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) + return; + var data = this.data; + var spacingMode = data.spacingMode; + var lengthSpacing = spacingMode == spine.SpacingMode.Length; + var rotateMode = data.rotateMode; + var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; + var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + var bones = this.bones; + var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; + var spacing = this.spacing; + if (scale || lengthSpacing) { + if (scale) + lengths = spine.Utils.setArraySize(this.lengths, boneCount); + for (var i = 0, n = spacesCount - 1; i < n;) { + var bone = bones[i]; + var length_1 = bone.data.length, x = length_1 * bone.a, y = length_1 * bone.c; + length_1 = Math.sqrt(x * x + y * y); + if (scale) + lengths[i] = length_1; + spaces[++i] = lengthSpacing ? Math.max(0, length_1 + spacing) : spacing; + } + } + else { + for (var i = 1; i < spacesCount; i++) + spaces[i] = spacing; + } + var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent); + var skeleton = this.target.bone.skeleton; + var skeletonX = skeleton.x, skeletonY = skeleton.y; + var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + var tip = rotateMode == spine.RotateMode.Chain && offsetRotation == 0; + for (var i = 0, p = 3; i < boneCount; i++, p += 3) { + var bone = bones[i]; + bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; + bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; + var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + var length_2 = lengths[i]; + if (length_2 != 0) { + var s = (Math.sqrt(dx * dx + dy * dy) / length_2 - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a) - offsetRotation * spine.MathUtils.degRad; + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + var length_3 = bone.data.length; + boneX += (length_3 * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length_3 * (sin * a + cos * c) - dy) * rotateMix; + } + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + } + }; + PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents, percentPosition, percentSpacing) { + var target = this.target; + var position = this.position; + var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; + var closed = path.closed; + var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + if (!path.constantSpeed) { + var lengths = path.lengths; + curveCount -= closed ? 1 : 2; + var pathLength_1 = lengths[curveCount]; + if (percentPosition) + position *= pathLength_1; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength_1; + } + world = spine.Utils.setArraySize(this.world, 8); + for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength_1; + if (p < 0) + p += pathLength_1; + curve = 0; + } + else if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVerticesWith(target, 2, 4, world, 0); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength_1) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVerticesWith(target, verticesLength - 6, 4, world, 0); + } + this.addAfterPosition(p - pathLength_1, world, 0, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_4 = lengths[curve]; + if (p > length_4) + continue; + if (curve == 0) + p /= length_4; + else { + var prev = lengths[curve - 1]; + p = (p - prev) / (length_4 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVerticesWith(target, verticesLength - 4, 4, world, 0); + path.computeWorldVerticesWith(target, 0, 4, world, 4); + } + else + path.computeWorldVerticesWith(target, curve * 6 + 2, 8, world, 0); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + // World vertices. + if (closed) { + verticesLength += 2; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength - 4, world, 0); + path.computeWorldVerticesWith(target, 0, 2, world, verticesLength - 4); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } + else { + curveCount--; + verticesLength -= 4; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength, world, 0); + } + // Curve lengths. + var curves = spine.Utils.setArraySize(this.curves, curveCount); + var pathLength = 0; + var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (var i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) + position *= pathLength; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + var segments = this.segments; + var curveLength = 0; + for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength; + if (p < 0) + p += pathLength; + curve = 0; + } + else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_5 = curves[curve]; + if (p > length_5) + continue; + if (curve == 0) + p /= length_5; + else { + var prev = curves[curve - 1]; + p = (p - prev) / (length_5 - prev); + } + break; + } + // Curve segment lengths. + if (curve != prevCurve) { + prevCurve = curve; + var ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + // Weight by segment length. + p *= curveLength; + for (;; segment++) { + var length_6 = segments[segment]; + if (p > length_6) + continue; + if (segment == 0) + p /= length_6; + else { + var prev = segments[segment - 1]; + p = segment + (p - prev) / (length_6 - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + }; + PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { + var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { + var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (p == 0) + p = 0.0001; + var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) + out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + }; + PathConstraint.NONE = -1; + PathConstraint.BEFORE = -2; + PathConstraint.AFTER = -3; + return PathConstraint; + }()); + spine.PathConstraint = PathConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathConstraintData = (function () { + function PathConstraintData(name) { + this.bones = new Array(); + this.name = name; + } + return PathConstraintData; + }()); + spine.PathConstraintData = PathConstraintData; + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(spine.PositionMode || (spine.PositionMode = {})); + var PositionMode = spine.PositionMode; + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + })(spine.SpacingMode || (spine.SpacingMode = {})); + var SpacingMode = spine.SpacingMode; + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(spine.RotateMode || (spine.RotateMode = {})); + var RotateMode = spine.RotateMode; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Skeleton = (function () { + function Skeleton(data) { + this._updateCache = new Array(); + this.time = 0; + this.flipX = false; + this.flipY = false; + this.x = 0; + this.y = 0; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) { + var boneData = data.bones[i]; + var bone = void 0; + if (boneData.parent == null) + bone = new spine.Bone(boneData, this, null); + else { + var parent_1 = this.bones[boneData.parent.index]; + bone = new spine.Bone(boneData, this, parent_1); + parent_1.children.push(bone); + } + this.bones.push(bone); + } + this.slots = new Array(); + this.drawOrder = new Array(); + for (var i = 0; i < data.slots.length; i++) { + var slotData = data.slots[i]; + var bone = this.bones[slotData.boneData.index]; + var slot = new spine.Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + this.ikConstraints = new Array(); + this.ikConstraintsSorted = new Array(); + for (var i = 0; i < data.ikConstraints.length; i++) { + var ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); + } + this.transformConstraints = new Array(); + for (var i = 0; i < data.transformConstraints.length; i++) { + var transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); + } + this.pathConstraints = new Array(); + for (var i = 0; i < data.pathConstraints.length; i++) { + var pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); + } + this.color = new spine.Color(1, 1, 1, 1); + this.updateCache(); + } + Skeleton.prototype.updateCache = function () { + var updateCache = this._updateCache; + updateCache.length = 0; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].sorted = false; + // IK first, lowest hierarchy depth first. + var ikConstraints = this.ikConstraintsSorted; + ikConstraints.length = 0; + for (var i = 0; i < this.ikConstraints.length; i++) + ikConstraints.push(this.ikConstraints[i]); + var ikCount = ikConstraints.length; + for (var i = 0, level = 0, n = ikCount; i < n; i++) { + var ik = ikConstraints[i]; + var bone = ik.bones[0].parent; + for (level = 0; bone != null; level++) + bone = bone.parent; + ik.level = level; + } + for (var i = 1, ii = 0; i < ikCount; i++) { + var ik = ikConstraints[i]; + var level = ik.level; + for (ii = i - 1; ii >= 0; ii--) { + var other = ikConstraints[ii]; + if (other.level < level) + break; + ikConstraints[ii + 1] = other; + } + ikConstraints[ii + 1] = ik; + } + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + var target = constraint.target; + this.sortBone(target); + var constrained = constraint.bones; + var parent_2 = constrained[0]; + this.sortBone(parent_2); + updateCache.push(constraint); + this.sortReset(parent_2.children); + constrained[constrained.length - 1].sorted = true; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var slot = constraint.target; + var slotIndex = slot.data.index; + var slotBone = slot.bone; + if (this.skin != null) + this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) + this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (var ii = 0, nn = this.data.skins.length; ii < nn; ii++) + this.sortPathConstraintAttachment(this.data.skins[ii], slotIndex, slotBone); + var attachment = slot.getAttachment(); + if (attachment instanceof spine.PathAttachment) + this.sortPathConstraintAttachmentWith(attachment, slotBone); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + this.sortBone(constraint.target); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + for (var i = 0, n = bones.length; i < n; i++) + this.sortBone(bones[i]); + }; + Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { + var attachments = skin.attachments[slotIndex]; + if (!attachments) + return; + for (var key in attachments) { + this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + } + }; + Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { + if (!(attachment instanceof spine.PathAttachment)) + return; + var pathBones = attachment.bones; + if (pathBones == null) + this.sortBone(slotBone); + else { + var bones = this.bones; + for (var i = 0; i < pathBones.length; i++) { + var boneIndex = pathBones[i]; + this.sortBone(bones[boneIndex]); + } + } + }; + Skeleton.prototype.sortBone = function (bone) { + if (bone.sorted) + return; + var parent = bone.parent; + if (parent != null) + this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + }; + Skeleton.prototype.sortReset = function (bones) { + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.sorted) + this.sortReset(bone.children); + bone.sorted = false; + } + }; + /** Updates the world transform for each bone and applies constraints. */ + Skeleton.prototype.updateWorldTransform = function () { + var updateCache = this._updateCache; + for (var i = 0, n = updateCache.length; i < n; i++) + updateCache[i].update(); + }; + /** Sets the bones, constraints, and slots to their setup pose values. */ + Skeleton.prototype.setToSetupPose = function () { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + }; + /** Sets the bones and constraints to their setup pose values. */ + Skeleton.prototype.setBonesToSetupPose = function () { + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].setToSetupPose(); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + constraint.bendDirection = constraint.data.bendDirection; + constraint.mix = constraint.data.mix; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + var data = constraint.data; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + } + }; + Skeleton.prototype.setSlotsToSetupPose = function () { + var slots = this.slots; + spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (var i = 0, n = slots.length; i < n; i++) + slots[i].setToSetupPose(); + }; + /** @return May return null. */ + Skeleton.prototype.getRootBone = function () { + if (this.bones.length == 0) + return null; + return this.bones[0]; + }; + /** @return May be null. */ + Skeleton.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.data.name == boneName) + return bone; + } + return null; + }; + /** @return -1 if the bone was not found. */ + Skeleton.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name == boneName) + return i; + return -1; + }; + /** @return May be null. */ + Skeleton.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) + return slot; + } + return null; + }; + /** @return -1 if the bone was not found. */ + Skeleton.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name == slotName) + return i; + return -1; + }; + /** Sets a skin by name. + * @see #setSkin(Skin) */ + Skeleton.prototype.setSkinByName = function (skinName) { + var skin = this.data.findSkin(skinName); + if (skin == null) + throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + }; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + Skeleton.prototype.setSkin = function (newSkin) { + if (newSkin != null) { + if (this.skin != null) + newSkin.attachAll(this, this.skin); + else { + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var name_1 = slot.data.attachmentName; + if (name_1 != null) { + var attachment = newSkin.getAttachment(i, name_1); + if (attachment != null) + slot.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + }; + /** @return May be null. */ + Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + }; + /** @return May be null. */ + Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { + if (attachmentName == null) + throw new Error("attachmentName cannot be null."); + if (this.skin != null) { + var attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (attachment != null) + return attachment; + } + if (this.data.defaultSkin != null) + return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + }; + /** @param attachmentName May be null. */ + Skeleton.prototype.setAttachment = function (slotName, attachmentName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) { + var attachment = null; + if (attachmentName != null) { + attachment = this.getAttachment(i, attachmentName); + if (attachment == null) + throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + }; + /** @return May be null. */ + Skeleton.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) + return ikConstraint; + } + return null; + }; + /** @return May be null. */ + Skeleton.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** @return May be null. */ + Skeleton.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + Skeleton.prototype.getBounds = function (offset, size) { + if (offset == null) + throw new Error("offset cannot be null."); + if (size == null) + throw new Error("size cannot be null."); + var drawOrder = this.drawOrder; + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var vertices = null; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) + vertices = attachment.updateWorldVertices(slot, false); + else if (attachment instanceof spine.MeshAttachment) + vertices = attachment.updateWorldVertices(slot, true); + if (vertices != null) { + for (var ii = 0, nn = vertices.length; ii < nn; ii += 5) { + var x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + }; + Skeleton.prototype.update = function (delta) { + this.time += delta; + }; + return Skeleton; + }()); + spine.Skeleton = Skeleton; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonBounds = (function () { + function SkeletonBounds() { + this.minX = 0; + this.minY = 0; + this.maxX = 0; + this.maxY = 0; + this.boundingBoxes = new Array(); + this.polygons = new Array(); + this._polygonPool = new spine.Pool(function () { + return spine.Utils.newFloatArray(16); + }); + } + SkeletonBounds.prototype.update = function (skeleton, updateAabb) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + var boundingBoxes = this.boundingBoxes; + var polygons = this.polygons; + var polygonPool = this._polygonPool; + var slots = skeleton.slots; + var slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (var i = 0; i < slotCount; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.BoundingBoxAttachment) { + var boundingBox = attachment; + boundingBoxes.push(boundingBox); + var polygon = polygonPool.obtain(); + if (polygon.length != boundingBox.worldVerticesLength) { + polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); + } + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, polygon); + } + } + if (updateAabb) + this.aabbCompute(); + }; + SkeletonBounds.prototype.aabbCompute = function () { + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) { + var polygon = polygons[i]; + var vertices = polygon; + for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { + var x = vertices[ii]; + var y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + }; + /** Returns true if the axis aligned bounding box contains the point. */ + SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + }; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { + var minX = this.minX; + var minY = this.minY; + var maxX = this.maxX; + var maxY = this.maxY; + if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) + return false; + var m = (y2 - y1) / (x2 - x1); + var y = m * (minX - x1) + y1; + if (y > minY && y < maxY) + return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) + return true; + var x = (minY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + return false; + }; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + }; + /** 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. */ + SkeletonBounds.prototype.containsPoint = function (x, y) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains the point. */ + SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { + var vertices = polygon; + var nn = polygon.length; + var prevIndex = nn - 2; + var inside = false; + for (var ii = 0; ii < nn; ii += 2) { + var vertexY = vertices[ii + 1]; + var prevY = vertices[prevIndex + 1]; + if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { + var vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) + inside = !inside; + } + prevIndex = ii; + } + return inside; + }; + /** Returns the first bounding box attachment that contains any part of 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. */ + SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains any part of the line segment. */ + SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { + var vertices = polygon; + var nn = polygon.length; + var width12 = x1 - x2, height12 = y1 - y2; + var det1 = x1 * y2 - y1 * x2; + var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (var ii = 0; ii < nn; ii += 2) { + var x4 = vertices[ii], y4 = vertices[ii + 1]; + var det2 = x3 * y4 - y3 * x4; + var width34 = x3 - x4, height34 = y3 - y4; + var det3 = width12 * height34 - height12 * width34; + var x = (det1 * width34 - width12 * det2) / det3; + if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { + var y = (det1 * height34 - height12 * det2) / det3; + if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) + return true; + } + x3 = x4; + y3 = y4; + } + return false; + }; + /** Returns the polygon for the specified bounding box, or null. */ + SkeletonBounds.prototype.getPolygon = function (boundingBox) { + if (boundingBox == null) + throw new Error("boundingBox cannot be null."); + var index = this.boundingBoxes.indexOf(boundingBox); + return index == -1 ? null : this.polygons[index]; + }; + return SkeletonBounds; + }()); + spine.SkeletonBounds = SkeletonBounds; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonData = (function () { + function SkeletonData() { + this.bones = new Array(); // Ordered parents first. + this.slots = new Array(); // Setup pose draw order. + this.skins = new Array(); + this.events = new Array(); + this.animations = new Array(); + this.ikConstraints = new Array(); + this.transformConstraints = new Array(); + this.pathConstraints = new Array(); + } + SkeletonData.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.name == boneName) + return bone; + } + return null; + }; + SkeletonData.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].name == boneName) + return i; + return -1; + }; + SkeletonData.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.name == slotName) + return slot; + } + return null; + }; + SkeletonData.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].name == slotName) + return i; + return -1; + }; + SkeletonData.prototype.findSkin = function (skinName) { + if (skinName == null) + throw new Error("skinName cannot be null."); + var skins = this.skins; + for (var i = 0, n = skins.length; i < n; i++) { + var skin = skins[i]; + if (skin.name == skinName) + return skin; + } + return null; + }; + SkeletonData.prototype.findEvent = function (eventDataName) { + if (eventDataName == null) + throw new Error("eventDataName cannot be null."); + var events = this.events; + for (var i = 0, n = events.length; i < n; i++) { + var event_2 = events[i]; + if (event_2.name == eventDataName) + return event_2; + } + return null; + }; + SkeletonData.prototype.findAnimation = function (animationName) { + if (animationName == null) + throw new Error("animationName cannot be null."); + var animations = this.animations; + for (var i = 0, n = animations.length; i < n; i++) { + var animation = animations[i]; + if (animation.name == animationName) + return animation; + } + return null; + }; + SkeletonData.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraintIndex = function (pathConstraintName) { + if (pathConstraintName == null) + throw new Error("pathConstraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) + if (pathConstraints[i].name == pathConstraintName) + return i; + return -1; + }; + return SkeletonData; + }()); + spine.SkeletonData = SkeletonData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonJson = (function () { + function SkeletonJson(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonJson.prototype.readSkeletonData = function (json) { + var scale = this.scale; + var skeletonData = new spine.SkeletonData(); + var root = JSON.parse(json); + // Skeleton + var skeletonMap = root.skeleton; + if (skeletonMap != null) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.imagesPath = skeletonMap.images; + } + // Bones + if (root.bones) { + for (var i = 0; i < root.bones.length; i++) { + var boneMap = root.bones[i]; + var parent_3 = null; + var parentName = this.getValue(boneMap, "parent", null); + if (parentName != null) { + parent_3 = skeletonData.findBone(parentName); + if (parent_3 == null) + throw new Error("Parent bone not found: " + parentName); + } + var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_3); + data.length = this.getValue(boneMap, "length", 0) * scale; + data.x = this.getValue(boneMap, "x", 0) * scale; + data.y = this.getValue(boneMap, "y", 0) * scale; + data.rotation = this.getValue(boneMap, "rotation", 0); + data.scaleX = this.getValue(boneMap, "scaleX", 1); + data.scaleY = this.getValue(boneMap, "scaleY", 1); + data.shearX = this.getValue(boneMap, "shearX", 0); + data.shearY = this.getValue(boneMap, "shearY", 0); + data.inheritRotation = this.getValue(boneMap, "inheritRotation", true); + data.inheritScale = this.getValue(boneMap, "inheritScale", true); + skeletonData.bones.push(data); + } + } + // Slots. + if (root.slots) { + for (var i = 0; i < root.slots.length; i++) { + var slotMap = root.slots[i]; + var slotName = slotMap.name; + var boneName = slotMap.bone; + var boneData = skeletonData.findBone(boneName); + if (boneData == null) + throw new Error("Slot bone not found: " + boneName); + var data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); + var color = slotMap.color ? slotMap.color : null; + if (color != null) + data.color.setFromString(color); + data.attachmentName = this.getValue(slotMap, "attachment", null); + data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + } + // IK constraints + if (root.ik) { + for (var i = 0; i < root.ik.length; i++) { + var constraintMap = root.ik[i]; + var data = new spine.IkConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("IK bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("IK target bone not found: " + targetName); + data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.mix = constraintMap.mix ? constraintMap.mix : 1; + skeletonData.ikConstraints.push(data); + } + } + // Transform constraints. + if (root.transform) { + for (var i = 0; i < root.transform.length; i++) { + var constraintMap = root.transform[i]; + var data = new spine.TransformConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("Transform constraint target bone not found: " + targetName); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.offsetX = this.getValue(constraintMap, "x", 0) * scale; + data.offsetY = this.getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); + data.offsetShearY = this.getValue(constraintMap, "shearY", 0); + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); + data.shearMix = this.getValue(constraintMap, "shearMix", 1); + skeletonData.transformConstraints.push(data); + } + } + // Path constraints. + if (root.path) { + for (var i = 0; i < root.path.length; i++) { + var constraintMap = root.path[i]; + var data = new spine.PathConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + if (data.target == null) + throw new Error("Path target slot not found: " + targetName); + data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); + data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); + data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.position = this.getValue(constraintMap, "position", 0); + if (data.positionMode == spine.PositionMode.Fixed) + data.position *= scale; + data.spacing = this.getValue(constraintMap, "spacing", 0); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + data.spacing *= scale; + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + skeletonData.pathConstraints.push(data); + } + } + // Skins. + if (root.skins) { + for (var skinName in root.skins) { + var skinMap = root.skins[skinName]; + var skin = new spine.Skin(skinName); + for (var slotName in skinMap) { + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + var slotMap = skinMap[slotName]; + for (var entryName in slotMap) { + var attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName); + if (attachment != null) + skin.addAttachment(slotIndex, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name == "default") + skeletonData.defaultSkin = skin; + } + } + // Linked meshes. + for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (skin == null) + throw new Error("Skin not found: " + linkedMesh.skin); + var parent_4 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (parent_4 == null) + throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.setParentMesh(parent_4); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + // Events. + if (root.events) { + for (var eventName in root.events) { + var eventMap = root.events[eventName]; + var data = new spine.EventData(eventName); + data.intValue = this.getValue(eventMap, "int", 0); + data.floatValue = this.getValue(eventMap, "float", 0); + data.stringValue = this.getValue(eventMap, "string", null); + skeletonData.events.push(data); + } + } + // Animations. + if (root.animations) { + for (var animationName in root.animations) { + var animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + return skeletonData; + }; + SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name) { + var scale = this.scale; + name = this.getValue(map, "name", name); + var type = this.getValue(map, "type", "region"); + switch (type) { + case "region": { + var path = this.getValue(map, "path", name); + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (region == null) + return null; + region.path = path; + region.x = this.getValue(map, "x", 0) * scale; + region.y = this.getValue(map, "y", 0) * scale; + region.scaleX = this.getValue(map, "scaleX", 1); + region.scaleY = this.getValue(map, "scaleY", 1); + region.rotation = this.getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + var color = this.getValue(map, "color", null); + if (color != null) + region.color.setFromString(color); + region.updateOffset(); + return region; + } + case "boundingbox": { + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (box == null) + return null; + this.readVertices(map, box, map.vertexCount << 1); + return box; + } + case "mesh": + case "linkedmesh": { + var path = this.getValue(map, "path", name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) + return null; + mesh.path = path; + var color = this.getValue(map, "color", null); + if (color != null) + mesh.color.setFromString(color); + var parent_5 = this.getValue(map, "parent", null); + if (parent_5 != null) { + mesh.inheritDeform = this.getValue(map, "deform", true); + this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent_5)); + return mesh; + } + var uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.hullLength = this.getValue(map, "hull", 0) * 2; + return mesh; + } + case "path": { + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (path == null) + return null; + path.closed = this.getValue(map, "closed", false); + path.constantSpeed = this.getValue(map, "constantSpeed", true); + var vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + var lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (var i = 0; i < map.lengths.length; i++) + lengths[i++] = map.lengths[i] * scale; + path.lengths = lengths; + return path; + } + } + return null; + }; + SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { + var scale = this.scale; + attachment.worldVerticesLength = verticesLength; + var vertices = map.vertices; + if (verticesLength == vertices.length) { + if (scale != 1) { + for (var i = 0, n = vertices.length; i < n; i++) + vertices[i] *= scale; + } + attachment.vertices = spine.Utils.toFloatArray(vertices); + return; + } + var weights = new Array(); + var bones = new Array(); + for (var i = 0, n = vertices.length; i < n;) { + var boneCount = vertices[i++]; + bones.push(boneCount); + for (var nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = spine.Utils.toFloatArray(weights); + }; + SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { + var scale = this.scale; + var timelines = new Array(); + var duration = 0; + // Slot timelines. + if (map.slots) { + for (var slotName in map.slots) { + var slotMap = map.slots[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + if (timelineName == "color") { + var timeline = new spine.ColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var color = new spine.Color(); + color.setFromString(valueMap.color); + timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); + } + else if (timelineName = "attachment") { + var timeline = new spine.AttachmentTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex++, valueMap.time, valueMap.name); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + else + throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); + } + } + } + // Bone timelines. + if (map.bones) { + for (var boneName in map.bones) { + var boneMap = map.bones[boneName]; + var boneIndex = skeletonData.findBoneIndex(boneName); + if (boneIndex == -1) + throw new Error("Bone not found: " + boneName); + for (var timelineName in boneMap) { + var timelineMap = boneMap[timelineName]; + if (timelineName === "rotate") { + var timeline = new spine.RotateTimeline(timelineMap.length); + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, valueMap.angle); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); + } + else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "scale") + timeline = new spine.ScaleTimeline(timelineMap.length); + else if (timelineName === "shear") + timeline = new spine.ShearTimeline(timelineMap.length); + else { + timeline = new spine.TranslateTimeline(timelineMap.length); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var x = this.getValue(valueMap, "x", 0), y = this.getValue(valueMap, "y", 0); + timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); + } + else + throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); + } + } + } + // IK constraint timelines. + if (map.ik) { + for (var constraintName in map.ik) { + var constraintMap = map.ik[constraintName]; + var constraint = skeletonData.findIkConstraint(constraintName); + var timeline = new spine.IkConstraintTimeline(constraintMap.length); + timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "bendPositive", true) ? 1 : -1); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + } + // Transform constraint timelines. + if (map.transform) { + for (var constraintName in map.transform) { + var constraintMap = map.transform[constraintName]; + var constraint = skeletonData.findTransformConstraint(constraintName); + var timeline = new spine.TransformConstraintTimeline(constraintMap.length); + timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + } + // Path constraint timelines. + if (map.paths) { + for (var constraintName in map.paths) { + var constraintMap = map.paths[constraintName]; + var index = skeletonData.findPathConstraintIndex(constraintName); + if (index == -1) + throw new Error("Path constraint not found: " + constraintName); + var data = skeletonData.pathConstraints[index]; + for (var timelineName in constraintMap) { + var timelineMap = constraintMap[timelineName]; + if (timelineName === "position" || timelineName === "spacing") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "spacing") { + timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + timelineScale = scale; + } + else { + timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); + if (data.positionMode == spine.PositionMode.Fixed) + timelineScale = scale; + } + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + } + else if (timelineName === "mix") { + var timeline = new spine.PathConstraintMixTimeline(timelineMap.length); + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + } + } + } + } + // Deform timelines. + if (map.deform) { + for (var deformName in map.deform) { + var deformMap = map.deform[deformName]; + var skin = skeletonData.findSkin(deformName); + if (skin == null) + throw new Error("Skin not found: " + deformName); + for (var slotName in deformMap) { + var slotMap = deformMap[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotMap.name); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + var attachment = skin.getAttachment(slotIndex, timelineName); + if (attachment == null) + throw new Error("Deform attachment not found: " + timelineMap.name); + var weighted = attachment.bones != null; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var timeline = new spine.DeformTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + var frameIndex = 0; + for (var j = 0; j < timelineMap.length; j++) { + var valueMap = timelineMap[j]; + var deform = void 0; + var verticesValue = this.getValue(valueMap, "vertices", null); + if (verticesValue == null) + deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; + else { + deform = spine.Utils.newFloatArray(deformLength); + var start = this.getValue(valueMap, "offset", 0); + spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale != 1) { + for (var i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (var i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + timeline.setFrame(frameIndex, valueMap.time, deform); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + } + } + } + // Draw order timeline. + var drawOrderNode = map.drawOrder; + if (drawOrderNode == null) + drawOrderNode = map.draworder; + if (drawOrderNode != null) { + var timeline = new spine.DrawOrderTimeline(drawOrderNode.length); + var slotCount = skeletonData.slots.length; + var frameIndex = 0; + for (var j = 0; j < drawOrderNode.length; j++) { + var drawOrderMap = drawOrderNode[j]; + var drawOrder = null; + var offsets = this.getValue(drawOrderMap, "offsets", null); + if (offsets != null) { + drawOrder = spine.Utils.newArray(slotCount, -1); + var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var i = 0; i < offsets.length; i++) { + var offsetMap = offsets[i]; + var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + if (slotIndex == -1) + throw new Error("Slot not found: " + offsetMap.slot); + // Collect unchanged items. + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + // Collect remaining unchanged items. + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. + for (var i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] == -1) + drawOrder[i] = unchanged[--unchangedIndex]; + } + timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + // Event timeline. + if (map.events) { + var timeline = new spine.EventTimeline(map.events.length); + var frameIndex = 0; + for (var i = 0; i < map.events.length; i++) { + var eventMap = map.events[i]; + var eventData = skeletonData.findEvent(eventMap.name); + if (eventData == null) + throw new Error("Event not found: " + eventMap.name); + var event_3 = new spine.Event(eventMap.time, eventData); + event_3.intValue = this.getValue(eventMap, "int", eventData.intValue); + event_3.floatValue = this.getValue(eventMap, "float", eventData.floatValue); + event_3.stringValue = this.getValue(eventMap, "string", eventData.stringValue); + timeline.setFrame(frameIndex++, event_3); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (isNaN(duration)) { + throw new Error("Error while parsing animation, duration is NaN"); + } + skeletonData.animations.push(new spine.Animation(name, timelines, duration)); + }; + SkeletonJson.prototype.readCurve = function (map, timeline, frameIndex) { + if (!map.curve) + return; + if (map.curve === "stepped") + timeline.setStepped(frameIndex); + else if (Object.prototype.toString.call(map.curve) === '[object Array]') { + var curve = map.curve; + timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]); + } + }; + SkeletonJson.prototype.getValue = function (map, prop, defaultValue) { + return map[prop] !== undefined ? map[prop] : defaultValue; + }; + SkeletonJson.blendModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "normal") + return spine.BlendMode.Normal; + if (str == "additive") + return spine.BlendMode.Additive; + if (str == "multiply") + return spine.BlendMode.Multiply; + if (str == "screen") + return spine.BlendMode.Screen; + throw new Error("Unknown blend mode: " + str); + }; + SkeletonJson.positionModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "fixed") + return spine.PositionMode.Fixed; + if (str == "percent") + return spine.PositionMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.spacingModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "length") + return spine.SpacingMode.Length; + if (str == "fixed") + return spine.SpacingMode.Fixed; + if (str == "percent") + return spine.SpacingMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.rotateModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "tangent") + return spine.RotateMode.Tangent; + if (str == "chain") + return spine.RotateMode.Chain; + if (str == "chainscale") + return spine.RotateMode.ChainScale; + throw new Error("Unknown rotate mode: " + str); + }; + return SkeletonJson; + }()); + spine.SkeletonJson = SkeletonJson; + var LinkedMesh = (function () { + function LinkedMesh(mesh, skin, slotIndex, parent) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + } + return LinkedMesh; + }()); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Skin = (function () { + function Skin(name) { + this.attachments = new Array(); + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + Skin.prototype.addAttachment = function (slotIndex, name, attachment) { + if (attachment == null) + throw new Error("attachment cannot be null."); + var attachments = this.attachments; + if (slotIndex >= attachments.length) + attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) + attachments[slotIndex] = {}; + attachments[slotIndex][name] = attachment; + }; + /** @return May be null. */ + Skin.prototype.getAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + }; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + Skin.prototype.attachAll = function (skeleton, oldSkin) { + var slotIndex = 0; + for (var i = 0; i < skeleton.slots.length; i++) { + var slot = skeleton.slots[i]; + var slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + var dictionary = oldSkin.attachments[slotIndex]; + for (var key in dictionary) { + var skinAttachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + var attachment = this.getAttachment(slotIndex, name); + if (attachment != null) + slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + }; + return Skin; + }()); + spine.Skin = Skin; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Slot = (function () { + function Slot(data, bone) { + this.attachmentVertices = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (bone == null) + throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new spine.Color(); + this.setToSetupPose(); + } + /** @return May be null. */ + Slot.prototype.getAttachment = function () { + return this.attachment; + }; + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + Slot.prototype.setAttachment = function (attachment) { + if (this.attachment == attachment) + return; + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + this.attachmentVertices.length = 0; + }; + Slot.prototype.setAttachmentTime = function (time) { + this.attachmentTime = this.bone.skeleton.time - time; + }; + /** Returns the time since the attachment was set. */ + Slot.prototype.getAttachmentTime = function () { + return this.bone.skeleton.time - this.attachmentTime; + }; + Slot.prototype.setToSetupPose = function () { + this.color.setFromColor(this.data.color); + if (this.data.attachmentName == null) + this.attachment = null; + else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + }; + return Slot; + }()); + spine.Slot = Slot; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SlotData = (function () { + function SlotData(index, name, boneData) { + this.color = new spine.Color(1, 1, 1, 1); + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + if (boneData == null) + throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + return SlotData; + }()); + spine.SlotData = SlotData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TransformConstraint = (function () { + function TransformConstraint(data, skeleton) { + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.temp = new spine.Vector2(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this.scaleMix = data.scaleMix; + this.shearMix = data.shearMix; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + TransformConstraint.prototype.apply = function () { + this.update(); + }; + TransformConstraint.prototype.update = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (rotateMix > 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) - Math.atan2(c, a) + this.data.offsetRotation * spine.MathUtils.degRad; + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + if (translateMix > 0) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + } + if (scaleMix > 0) { + var bs = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + var ts = Math.sqrt(ta * ta + tc * tc); + var s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleX) * scaleMix) / bs : 0; + bone.a *= s; + bone.c *= s; + bs = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = Math.sqrt(tb * tb + td * td); + s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleY) * scaleMix) / bs : 0; + bone.b *= s; + bone.d *= s; + } + if (shearMix > 0) { + var b = bone.b, d = bone.d; + var by = Math.atan2(d, b); + var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r = by + (r + this.data.offsetShearY * spine.MathUtils.degRad) * shearMix; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + } + } + }; + return TransformConstraint; + }()); + spine.TransformConstraint = TransformConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TransformConstraintData = (function () { + function TransformConstraintData(name) { + this.bones = new Array(); + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.offsetRotation = 0; + this.offsetX = 0; + this.offsetY = 0; + this.offsetScaleX = 0; + this.offsetScaleY = 0; + this.offsetShearY = 0; + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return TransformConstraintData; + }()); + spine.TransformConstraintData = TransformConstraintData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Color = (function () { + function Color(r, g, b, a) { + if (r === void 0) { r = 0; } + if (g === void 0) { g = 0; } + if (b === void 0) { b = 0; } + if (a === void 0) { a = 0; } + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + Color.prototype.set = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.clamp(); + }; + Color.prototype.setFromColor = function (c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + }; + Color.prototype.setFromString = function (hex) { + hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255.0; + this.g = parseInt(hex.substr(2, 2), 16) / 255.0; + this.b = parseInt(hex.substr(4, 2), 16) / 255.0; + this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; + }; + Color.prototype.add = function (r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + this.clamp(); + }; + Color.prototype.clamp = function () { + if (this.r < 0) + this.r = 0; + else if (this.r > 1) + this.r = 1; + if (this.g < 0) + this.g = 0; + else if (this.g > 1) + this.g = 1; + if (this.b < 0) + this.b = 0; + else if (this.b > 1) + this.b = 1; + if (this.a < 0) + this.a = 0; + else if (this.a > 1) + this.a = 1; + return this; + }; + return Color; + }()); + spine.Color = Color; + var MathUtils = (function () { + function MathUtils() { + } + MathUtils.clamp = function (value, min, max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + }; + MathUtils.cosDeg = function (degrees) { + return Math.cos(degrees * MathUtils.degRad); + }; + MathUtils.sinDeg = function (degrees) { + return Math.sin(degrees * MathUtils.degRad); + }; + MathUtils.signum = function (value) { + return value >= 0 ? 1 : -1; + }; + MathUtils.toInt = function (x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + }; + MathUtils.PI = 3.1415927; + MathUtils.PI2 = MathUtils.PI * 2; + MathUtils.radiansToDegrees = 180 / MathUtils.PI; + MathUtils.radDeg = MathUtils.radiansToDegrees; + MathUtils.degreesToRadians = MathUtils.PI / 180; + MathUtils.degRad = MathUtils.degreesToRadians; + return MathUtils; + }()); + spine.MathUtils = MathUtils; + var Utils = (function () { + function Utils() { + } + Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { + for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + }; + Utils.setArraySize = function (array, size, value) { + if (value === void 0) { value = 0; } + var oldSize = array.length; + if (oldSize == size) + return array; + array.length = size; + if (oldSize < size) { + for (var i = oldSize; i < size; i++) + array[i] = value; + } + return array; + }; + Utils.newArray = function (size, defaultValue) { + var array = new Array(size); + for (var i = 0; i < size; i++) + array[i] = defaultValue; + return array; + }; + Utils.newFloatArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Float32Array(size); + } + else { + var array = new Array(size); + for (var i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + }; + Utils.toFloatArray = function (array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + }; + Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; + return Utils; + }()); + spine.Utils = Utils; + var Pool = (function () { + function Pool(instantiator) { + this._items = new Array(16); + this._instantiator = instantiator; + } + Pool.prototype.obtain = function () { + return this._items.length > 0 ? this._items.pop() : this._instantiator(); + }; + Pool.prototype.free = function (item) { + this._items.push(item); + }; + Pool.prototype.freeAll = function (items) { + for (var i = 0; i < items.length; i++) + this._items[i] = items[i]; + }; + Pool.prototype.clear = function () { + this._items.length = 0; + }; + return Pool; + }()); + spine.Pool = Pool; + var Vector2 = (function () { + function Vector2(x, y) { + if (x === void 0) { x = 0; } + if (y === void 0) { y = 0; } + this.x = x; + this.y = y; + } + Vector2.prototype.set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + return Vector2; + }()); + spine.Vector2 = Vector2; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Attachment = (function () { + function Attachment(name) { + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return Attachment; + }()); + spine.Attachment = Attachment; + var VertexAttachment = (function (_super) { + __extends(VertexAttachment, _super); + function VertexAttachment(name) { + _super.call(this, name); + this.worldVerticesLength = 0; + } + VertexAttachment.prototype.computeWorldVertices = function (slot, worldVertices) { + this.computeWorldVerticesWith(slot, 0, this.worldVerticesLength, worldVertices, 0); + }; + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + VertexAttachment.prototype.computeWorldVerticesWith = function (slot, start, count, worldVertices, offset) { + count += offset; + var skeleton = slot.bone.skeleton; + var x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices; + var bones = this.bones; + if (bones == null) { + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v_1 = start, w = offset; w < count; v_1 += 2, w += 2) { + var vx = vertices[v_1], vy = vertices[v_1 + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + var v = 0, skip = 0; + for (var i = 0; i < start; i += 2) { + var n = bones[v]; + v += n + 1; + skip += n; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = offset, b = skip * 3; w < count; w += 2) { + var wx = x, wy = y; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + else { + var deform = deformArray; + for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) { + var wx = x, wy = y; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + }; + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + VertexAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment; + }; + return VertexAttachment; + }(Attachment)); + spine.VertexAttachment = VertexAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + })(spine.AttachmentType || (spine.AttachmentType = {})); + var AttachmentType = spine.AttachmentType; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var BoundingBoxAttachment = (function (_super) { + __extends(BoundingBoxAttachment, _super); + function BoundingBoxAttachment(name) { + _super.call(this, name); + } + return BoundingBoxAttachment; + }(spine.VertexAttachment)); + spine.BoundingBoxAttachment = BoundingBoxAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var MeshAttachment = (function (_super) { + __extends(MeshAttachment, _super); + function MeshAttachment(name) { + _super.call(this, name); + this.color = new spine.Color(1, 1, 1, 1); + this.inheritDeform = false; + this.tempColor = new spine.Color(0, 0, 0, 0); + } + MeshAttachment.prototype.updateUVs = function () { + var regionUVs = this.regionUVs; + var verticesLength = regionUVs.length; + var worldVerticesLength = (verticesLength >> 1) * 8; + if (this.worldVertices == null || this.worldVertices.length != worldVerticesLength) + this.worldVertices = spine.Utils.newFloatArray(worldVerticesLength); + var u = 0, v = 0, width = 0, height = 0; + if (this.region == null) { + u = v = 0; + width = height = 1; + } + else { + u = this.region.u; + v = this.region.v; + width = this.region.u2 - u; + height = this.region.v2 - v; + } + if (this.region.rotate) { + for (var i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i + 1] * width; + this.worldVertices[w + 1] = v + height - regionUVs[i] * height; + } + } + else { + for (var i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i] * width; + this.worldVertices[w + 1] = v + regionUVs[i + 1] * height; + } + } + }; + /** @return The updated world vertices. */ + MeshAttachment.prototype.updateWorldVertices = function (slot, premultipliedAlpha) { + var skeleton = slot.bone.skeleton; + var skeletonColor = skeleton.color, slotColor = slot.color, meshColor = this.color; + var alpha = skeletonColor.a * slotColor.a * meshColor.a; + var multiplier = premultipliedAlpha ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * meshColor.r * multiplier, skeletonColor.g * slotColor.g * meshColor.g * multiplier, skeletonColor.b * slotColor.b * meshColor.b * multiplier, alpha); + var x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices, worldVertices = this.worldVertices; + var bones = this.bones; + if (bones == null) { + var verticesLength = vertices.length; + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v = 0, w = 0; v < verticesLength; v += 2, w += 8) { + var vx = vertices[v], vy = vertices[v + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + return worldVertices; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = 0, v = 0, b = 0, n = bones.length; v < n; w += 8) { + var wx = x, wy = y; + var nn = bones[v++] + v; + for (; v < nn; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + else { + var deform = deformArray; + for (var w = 0, v = 0, b = 0, f = 0, n = bones.length; v < n; w += 8) { + var wx = x, wy = y; + var nn = bones[v++] + v; + for (; v < nn; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + return worldVertices; + }; + MeshAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment || (this.inheritDeform && this._parentMesh == sourceAttachment); + }; + MeshAttachment.prototype.getParentMesh = function () { + return this._parentMesh; + }; + /** @param parentMesh May be null. */ + MeshAttachment.prototype.setParentMesh = function (parentMesh) { + this._parentMesh = parentMesh; + if (parentMesh != null) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + } + }; + return MeshAttachment; + }(spine.VertexAttachment)); + spine.MeshAttachment = MeshAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathAttachment = (function (_super) { + __extends(PathAttachment, _super); + function PathAttachment(name) { + _super.call(this, name); + this.closed = false; + this.constantSpeed = false; + } + return PathAttachment; + }(spine.VertexAttachment)); + spine.PathAttachment = PathAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var RegionAttachment = (function (_super) { + __extends(RegionAttachment, _super); + function RegionAttachment(name) { + _super.call(this, name); + this.x = 0; + this.y = 0; + this.scaleX = 1; + this.scaleY = 1; + this.rotation = 0; + this.width = 0; + this.height = 0; + this.color = new spine.Color(1, 1, 1, 1); + this.offset = spine.Utils.newFloatArray(8); + this.vertices = spine.Utils.newFloatArray(8 * 4); + this.tempColor = new spine.Color(1, 1, 1, 1); + } + RegionAttachment.prototype.setRegion = function (region) { + var vertices = this.vertices; + if (region.rotate) { + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v2; + vertices[RegionAttachment.U3] = region.u; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v; + vertices[RegionAttachment.U1] = region.u2; + vertices[RegionAttachment.V1] = region.v2; + } + else { + vertices[RegionAttachment.U1] = region.u; + vertices[RegionAttachment.V1] = region.v2; + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v; + vertices[RegionAttachment.U3] = region.u2; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v2; + } + }; + RegionAttachment.prototype.updateOffset = function () { + var regionScaleX = this.width / this.region.originalWidth * this.scaleX; + var regionScaleY = this.height / this.region.originalHeight * this.scaleY; + var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + var localX2 = localX + this.region.width * regionScaleX; + var localY2 = localY + this.region.height * regionScaleY; + var radians = this.rotation * Math.PI / 180; + var cos = Math.cos(radians); + var sin = Math.sin(radians); + var localXCos = localX * cos + this.x; + var localXSin = localX * sin; + var localYCos = localY * cos + this.y; + var localYSin = localY * sin; + var localX2Cos = localX2 * cos + this.x; + var localX2Sin = localX2 * sin; + var localY2Cos = localY2 * cos + this.y; + var localY2Sin = localY2 * sin; + var offset = this.offset; + offset[RegionAttachment.OX1] = localXCos - localYSin; + offset[RegionAttachment.OY1] = localYCos + localXSin; + offset[RegionAttachment.OX2] = localXCos - localY2Sin; + offset[RegionAttachment.OY2] = localY2Cos + localXSin; + offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; + offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; + offset[RegionAttachment.OX4] = localX2Cos - localYSin; + offset[RegionAttachment.OY4] = localYCos + localX2Sin; + }; + RegionAttachment.prototype.updateWorldVertices = function (slot, premultipliedAlpha) { + var skeleton = slot.bone.skeleton; + var skeletonColor = skeleton.color; + var slotColor = slot.color; + var regionColor = this.color; + var alpha = skeletonColor.a * slotColor.a * regionColor.a; + var multiplier = premultipliedAlpha ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); + var vertices = this.vertices; + var offset = this.offset; + var bone = slot.bone; + var x = skeleton.x + bone.worldX, y = skeleton.y + bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var offsetX = 0, offsetY = 0; + offsetX = offset[RegionAttachment.OX1]; + offsetY = offset[RegionAttachment.OY1]; + vertices[RegionAttachment.X1] = offsetX * a + offsetY * b + x; // br + vertices[RegionAttachment.Y1] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C1R] = color.r; + vertices[RegionAttachment.C1G] = color.g; + vertices[RegionAttachment.C1B] = color.b; + vertices[RegionAttachment.C1A] = color.a; + offsetX = offset[RegionAttachment.OX2]; + offsetY = offset[RegionAttachment.OY2]; + vertices[RegionAttachment.X2] = offsetX * a + offsetY * b + x; // bl + vertices[RegionAttachment.Y2] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C2R] = color.r; + vertices[RegionAttachment.C2G] = color.g; + vertices[RegionAttachment.C2B] = color.b; + vertices[RegionAttachment.C2A] = color.a; + offsetX = offset[RegionAttachment.OX3]; + offsetY = offset[RegionAttachment.OY3]; + vertices[RegionAttachment.X3] = offsetX * a + offsetY * b + x; // ul + vertices[RegionAttachment.Y3] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C3R] = color.r; + vertices[RegionAttachment.C3G] = color.g; + vertices[RegionAttachment.C3B] = color.b; + vertices[RegionAttachment.C3A] = color.a; + offsetX = offset[RegionAttachment.OX4]; + offsetY = offset[RegionAttachment.OY4]; + vertices[RegionAttachment.X4] = offsetX * a + offsetY * b + x; // ur + vertices[RegionAttachment.Y4] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C4R] = color.r; + vertices[RegionAttachment.C4G] = color.g; + vertices[RegionAttachment.C4B] = color.b; + vertices[RegionAttachment.C4A] = color.a; + return vertices; + }; + RegionAttachment.OX1 = 0; + RegionAttachment.OY1 = 1; + RegionAttachment.OX2 = 2; + RegionAttachment.OY2 = 3; + RegionAttachment.OX3 = 4; + RegionAttachment.OY3 = 5; + RegionAttachment.OX4 = 6; + RegionAttachment.OY4 = 7; + RegionAttachment.X1 = 0; + RegionAttachment.Y1 = 1; + RegionAttachment.C1R = 2; + RegionAttachment.C1G = 3; + RegionAttachment.C1B = 4; + RegionAttachment.C1A = 5; + RegionAttachment.U1 = 6; + RegionAttachment.V1 = 7; + RegionAttachment.X2 = 8; + RegionAttachment.Y2 = 9; + RegionAttachment.C2R = 10; + RegionAttachment.C2G = 11; + RegionAttachment.C2B = 12; + RegionAttachment.C2A = 13; + RegionAttachment.U2 = 14; + RegionAttachment.V2 = 15; + RegionAttachment.X3 = 16; + RegionAttachment.Y3 = 17; + RegionAttachment.C3R = 18; + RegionAttachment.C3G = 19; + RegionAttachment.C3B = 20; + RegionAttachment.C3A = 21; + RegionAttachment.U3 = 22; + RegionAttachment.V3 = 23; + RegionAttachment.X4 = 24; + RegionAttachment.Y4 = 25; + RegionAttachment.C4R = 26; + RegionAttachment.C4G = 27; + RegionAttachment.C4B = 28; + RegionAttachment.C4A = 29; + RegionAttachment.U4 = 30; + RegionAttachment.V4 = 31; + return RegionAttachment; + }(spine.Attachment)); + spine.RegionAttachment = RegionAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TextureRegion = (function () { + function TextureRegion() { + this.u = 0; + this.v = 0; + this.u2 = 0; + this.v2 = 0; + this.width = 0; + this.height = 0; + this.rotate = false; + this.offsetX = 0; + this.offsetY = 0; + this.originalWidth = 0; + this.originalHeight = 0; + } + return TextureRegion; + }()); + spine.TextureRegion = TextureRegion; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var AssetManager = (function () { + function AssetManager(gl) { + this._assets = {}; + this._errors = {}; + this._toLoad = 0; + this._loaded = 0; + this._gl = gl; + } + AssetManager.prototype.loadText = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + this._toLoad++; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + if (success) + success(path, request.responseText); + _this._assets[path] = request.responseText; + } + else { + if (error) + error(path, "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText); + _this._errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; + } + _this._toLoad--; + _this._loaded++; + } + }; + request.open("GET", path, true); + request.send(); + }; + AssetManager.prototype.loadTexture = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + this._toLoad++; + var img = new Image(); + img.src = path; + img.onload = function (ev) { + if (success) + success(path, img); + var texture = new webgl.Texture(_this._gl, img); + _this._assets[path] = texture; + _this._toLoad--; + _this._loaded++; + }; + img.onerror = function (ev) { + if (error) + error(path, "Couldn't load image " + path); + _this._errors[path] = "Couldn't load image " + path; + _this._toLoad--; + _this._loaded++; + }; + }; + AssetManager.prototype.get = function (path) { + return this._assets[path]; + }; + AssetManager.prototype.remove = function (path) { + var asset = this._assets[path]; + if (asset instanceof webgl.Texture) { + asset.dispose(); + } + this._assets[path] = null; + }; + AssetManager.prototype.removeAll = function () { + for (var key in this._assets) { + var asset = this._assets[key]; + if (asset instanceof webgl.Texture) + asset.dispose(); + } + this._assets = {}; + }; + AssetManager.prototype.isLoadingComplete = function () { + return this._toLoad == 0; + }; + AssetManager.prototype.toLoad = function () { + return this._toLoad; + }; + AssetManager.prototype.loaded = function () { + return this._loaded; + }; + AssetManager.prototype.dispose = function () { + this.removeAll(); + }; + AssetManager.prototype.hasErrors = function () { + return Object.keys(this._errors).length > 0; + }; + AssetManager.prototype.errors = function () { + return this._errors; + }; + return AssetManager; + }()); + webgl.AssetManager = AssetManager; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + webgl.M00 = 0; + webgl.M01 = 4; + webgl.M02 = 8; + webgl.M03 = 12; + webgl.M10 = 1; + webgl.M11 = 5; + webgl.M12 = 9; + webgl.M13 = 13; + webgl.M20 = 2; + webgl.M21 = 6; + webgl.M22 = 10; + webgl.M23 = 14; + webgl.M30 = 3; + webgl.M31 = 7; + webgl.M32 = 11; + webgl.M33 = 15; + var Matrix4 = (function () { + function Matrix4() { + this.temp = new Float32Array(16); + this.values = new Float32Array(16); + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M11] = 1; + v[webgl.M22] = 1; + v[webgl.M33] = 1; + } + Matrix4.prototype.set = function (values) { + this.values.set(values); + return this; + }; + Matrix4.prototype.transpose = function () { + var t = this.temp; + var v = this.values; + t[webgl.M00] = v[webgl.M00]; + t[webgl.M01] = v[webgl.M10]; + t[webgl.M02] = v[webgl.M20]; + t[webgl.M03] = v[webgl.M30]; + t[webgl.M10] = v[webgl.M01]; + t[webgl.M11] = v[webgl.M11]; + t[webgl.M12] = v[webgl.M21]; + t[webgl.M13] = v[webgl.M31]; + t[webgl.M20] = v[webgl.M02]; + t[webgl.M21] = v[webgl.M12]; + t[webgl.M22] = v[webgl.M22]; + t[webgl.M23] = v[webgl.M32]; + t[webgl.M30] = v[webgl.M03]; + t[webgl.M31] = v[webgl.M13]; + t[webgl.M32] = v[webgl.M23]; + t[webgl.M33] = v[webgl.M33]; + return this.set(t); + }; + Matrix4.prototype.identity = function () { + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M01] = 0; + v[webgl.M02] = 0; + v[webgl.M03] = 0; + v[webgl.M10] = 0; + v[webgl.M11] = 1; + v[webgl.M12] = 0; + v[webgl.M13] = 0; + v[webgl.M20] = 0; + v[webgl.M21] = 0; + v[webgl.M22] = 1; + v[webgl.M23] = 0; + v[webgl.M30] = 0; + v[webgl.M31] = 0; + v[webgl.M32] = 0; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.invert = function () { + var v = this.values; + var t = this.temp; + var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + if (l_det == 0) + throw new Error("non-invertible matrix"); + var inv_det = 1.0 / l_det; + t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] + - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] + + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] + - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] + + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] + + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] + - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; + t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; + t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; + t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] + - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; + v[webgl.M00] = t[webgl.M00] * inv_det; + v[webgl.M01] = t[webgl.M01] * inv_det; + v[webgl.M02] = t[webgl.M02] * inv_det; + v[webgl.M03] = t[webgl.M03] * inv_det; + v[webgl.M10] = t[webgl.M10] * inv_det; + v[webgl.M11] = t[webgl.M11] * inv_det; + v[webgl.M12] = t[webgl.M12] * inv_det; + v[webgl.M13] = t[webgl.M13] * inv_det; + v[webgl.M20] = t[webgl.M20] * inv_det; + v[webgl.M21] = t[webgl.M21] * inv_det; + v[webgl.M22] = t[webgl.M22] * inv_det; + v[webgl.M23] = t[webgl.M23] * inv_det; + v[webgl.M30] = t[webgl.M30] * inv_det; + v[webgl.M31] = t[webgl.M31] * inv_det; + v[webgl.M32] = t[webgl.M32] * inv_det; + v[webgl.M33] = t[webgl.M33] * inv_det; + return this; + }; + Matrix4.prototype.determinant = function () { + var v = this.values; + return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + }; + Matrix4.prototype.translate = function (x, y, z) { + var v = this.values; + v[webgl.M03] += x; + v[webgl.M13] += y; + v[webgl.M23] += z; + return this; + }; + Matrix4.prototype.copy = function () { + return new Matrix4().set(this.values); + }; + Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { + this.identity(); + var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); + var l_a1 = (far + near) / (near - far); + var l_a2 = (2 * far * near) / (near - far); + var v = this.values; + v[webgl.M00] = l_fd / aspectRatio; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = l_fd; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = l_a1; + v[webgl.M32] = -1; + v[webgl.M03] = 0; + v[webgl.M13] = 0; + v[webgl.M23] = l_a2; + v[webgl.M33] = 0; + return this; + }; + Matrix4.prototype.ortho2d = function (x, y, width, height) { + return this.ortho(x, x + width, y, y + height, 0, 1); + }; + Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { + this.identity(); + var x_orth = 2 / (right - left); + var y_orth = 2 / (top - bottom); + var z_orth = -2 / (far - near); + var tx = -(right + left) / (right - left); + var ty = -(top + bottom) / (top - bottom); + var tz = -(far + near) / (far - near); + var v = this.values; + v[webgl.M00] = x_orth; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = y_orth; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = z_orth; + v[webgl.M32] = 0; + v[webgl.M03] = tx; + v[webgl.M13] = ty; + v[webgl.M23] = tz; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.multiply = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; + t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; + t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; + t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; + t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; + t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; + t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; + t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; + t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; + t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; + t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; + t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; + t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; + t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; + t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; + t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; + return this.set(this.temp); + }; + Matrix4.prototype.multiplyLeft = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; + t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; + t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; + t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; + t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; + t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; + t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; + t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; + t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; + t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; + t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; + t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; + t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; + t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; + t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; + t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; + return this.set(this.temp); + }; + return Matrix4; + }()); + webgl.Matrix4 = Matrix4; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Mesh = (function () { + function Mesh(gl, _attributes, maxVertices, maxIndices) { + this._attributes = _attributes; + this._verticesLength = 0; + this._dirtyVertices = false; + this._indicesLength = 0; + this._dirtyIndices = false; + this._elementsPerVertex = 0; + this._gl = gl; + this._elementsPerVertex = 0; + for (var i = 0; i < _attributes.length; i++) { + this._elementsPerVertex += _attributes[i].numElements; + } + this._vertices = new Float32Array(maxVertices * this._elementsPerVertex); + this._indices = new Uint16Array(maxIndices); + } + Mesh.prototype.attributes = function () { return this._attributes; }; + Mesh.prototype.maxVertices = function () { return this._vertices.length / this._elementsPerVertex; }; + Mesh.prototype.numVertices = function () { return this._verticesLength / this._elementsPerVertex; }; + Mesh.prototype.setVerticesLength = function (length) { + this._dirtyVertices = true; + this._verticesLength = length; + }; + Mesh.prototype.vertices = function () { return this._vertices; }; + Mesh.prototype.maxIndices = function () { return this._indices.length; }; + Mesh.prototype.numIndices = function () { return this._indicesLength; }; + Mesh.prototype.setIndicesLength = function (length) { + this._dirtyIndices = true; + this._indicesLength = length; + }; + Mesh.prototype.indices = function () { return this._indices; }; + ; + Mesh.prototype.setVertices = function (vertices) { + this._dirtyVertices = true; + if (vertices.length > this._vertices.length) + throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); + this._vertices.set(vertices, 0); + this._verticesLength = vertices.length; + }; + Mesh.prototype.setIndices = function (indices) { + this._dirtyIndices = true; + if (indices.length > this._indices.length) + throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); + this._indices.set(indices, 0); + this._indicesLength = indices.length; + }; + Mesh.prototype.draw = function (shader, primitiveType) { + this.drawWithOffset(shader, primitiveType, 0, this._indicesLength > 0 ? this._indicesLength : this._verticesLength); + }; + Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { + var gl = this._gl; + if (this._dirtyVertices || this._dirtyIndices) + this.update(); + this.bind(shader); + if (this._indicesLength > 0) + gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); + else + gl.drawArrays(primitiveType, offset, count); + this.unbind(shader); + }; + Mesh.prototype.bind = function (shader) { + var gl = this._gl; + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + var offset = 0; + for (var i = 0; i < this._attributes.length; i++) { + var attrib = this._attributes[i]; + var location_1 = shader.getAttributeLocation(attrib.name); + gl.enableVertexAttribArray(location_1); + gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this._elementsPerVertex * 4, offset * 4); + offset += attrib.numElements; + } + if (this._indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + }; + Mesh.prototype.unbind = function (shader) { + var gl = this._gl; + for (var i = 0; i < this._attributes.length; i++) { + var attrib = this._attributes[i]; + var location_2 = shader.getAttributeLocation(attrib.name); + gl.disableVertexAttribArray(location_2); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + if (this._indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + }; + Mesh.prototype.update = function () { + var gl = this._gl; + if (this._dirtyVertices) { + if (!this._verticesBuffer) { + this._verticesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this._vertices.subarray(0, this._verticesLength), gl.STATIC_DRAW); + this._dirtyVertices = false; + } + if (this._dirtyIndices) { + if (!this._indicesBuffer) { + this._indicesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this._indices.subarray(0, this._indicesLength), gl.STATIC_DRAW); + this._dirtyIndices = false; + } + }; + Mesh.prototype.dispose = function () { + var gl = this._gl; + gl.deleteBuffer(this._verticesBuffer); + gl.deleteBuffer(this._indicesBuffer); + }; + return Mesh; + }()); + webgl.Mesh = Mesh; + var VertexAttribute = (function () { + function VertexAttribute(name, type, numElements) { + this.name = name; + this.type = type; + this.numElements = numElements; + } + return VertexAttribute; + }()); + webgl.VertexAttribute = VertexAttribute; + var Position2Attribute = (function (_super) { + __extends(Position2Attribute, _super); + function Position2Attribute() { + _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2); + } + return Position2Attribute; + }(VertexAttribute)); + webgl.Position2Attribute = Position2Attribute; + var Position3Attribute = (function (_super) { + __extends(Position3Attribute, _super); + function Position3Attribute() { + _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3); + } + return Position3Attribute; + }(VertexAttribute)); + webgl.Position3Attribute = Position3Attribute; + var TexCoordAttribute = (function (_super) { + __extends(TexCoordAttribute, _super); + function TexCoordAttribute(unit) { + if (unit === void 0) { unit = 0; } + _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2); + } + return TexCoordAttribute; + }(VertexAttribute)); + webgl.TexCoordAttribute = TexCoordAttribute; + var ColorAttribute = (function (_super) { + __extends(ColorAttribute, _super); + function ColorAttribute() { + _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4); + } + return ColorAttribute; + }(VertexAttribute)); + webgl.ColorAttribute = ColorAttribute; + (function (VertexAttributeType) { + VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; + })(webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); + var VertexAttributeType = webgl.VertexAttributeType; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var PolygonBatcher = (function () { + function PolygonBatcher(gl, maxVertices) { + if (maxVertices === void 0) { maxVertices = 10920; } + this._drawing = false; + this._shader = null; + this._lastTexture = null; + this._verticesLength = 0; + this._indicesLength = 0; + this._srcBlend = WebGLRenderingContext.SRC_ALPHA; + this._dstBlend = WebGLRenderingContext.ONE_MINUS_SRC_ALPHA; + if (maxVertices > 10920) + throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this._gl = gl; + this._mesh = new webgl.Mesh(gl, [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()], maxVertices, maxVertices * 3); + } + PolygonBatcher.prototype.begin = function (shader) { + var gl = this._gl; + if (this._drawing) + throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); + this._drawCalls = 0; + this._shader = shader; + this._lastTexture = null; + this._drawing = true; + gl.enable(gl.BLEND); + gl.blendFunc(this._srcBlend, this._dstBlend); + }; + PolygonBatcher.prototype.setBlendMode = function (srcBlend, dstBlend) { + var gl = this._gl; + this._srcBlend = srcBlend; + this._dstBlend = dstBlend; + if (this._drawing) { + this.flush(); + gl.blendFunc(this._srcBlend, this._dstBlend); + } + }; + PolygonBatcher.prototype.draw = function (texture, vertices, indices) { + if (texture != this._lastTexture) { + this.flush(); + this._lastTexture = texture; + texture.bind(); + } + else if (this._verticesLength + vertices.length > this._mesh.vertices().length || + this._indicesLength + indices.length > this._mesh.indices().length) { + this.flush(); + } + var indexStart = this._mesh.numVertices(); + this._mesh.vertices().set(vertices, this._verticesLength); + this._verticesLength += vertices.length; + this._mesh.setVerticesLength(this._verticesLength); + var indicesArray = this._mesh.indices(); + for (var i = this._indicesLength, j = 0; j < indices.length; i++, j++) + indicesArray[i] = indices[j] + indexStart; + this._indicesLength += indices.length; + this._mesh.setIndicesLength(this._indicesLength); + }; + PolygonBatcher.prototype.flush = function () { + var gl = this._gl; + if (this._verticesLength == 0) + return; + this._mesh.draw(this._shader, gl.TRIANGLES); + this._verticesLength = 0; + this._indicesLength = 0; + this._mesh.setVerticesLength(0); + this._mesh.setIndicesLength(0); + this._drawCalls++; + }; + PolygonBatcher.prototype.end = function () { + var gl = this._gl; + if (!this._drawing) + throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); + if (this._verticesLength > 0 || this._indicesLength > 0) + this.flush(); + this._shader = null; + this._lastTexture = null; + this._drawing = false; + gl.disable(gl.BLEND); + }; + PolygonBatcher.prototype.drawCalls = function () { return this._drawCalls; }; + return PolygonBatcher; + }()); + webgl.PolygonBatcher = PolygonBatcher; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Shader = (function () { + function Shader(gl, _vertexShader, _fragmentShader) { + this._vertexShader = _vertexShader; + this._fragmentShader = _fragmentShader; + this._vs = null; + this._fs = null; + this._program = null; + this._tmp2x2 = new Float32Array(2 * 2); + this._tmp3x3 = new Float32Array(3 * 3); + this._tmp4x4 = new Float32Array(4 * 4); + this._gl = gl; + this.compile(); + } + Shader.prototype.program = function () { return this._program; }; + Shader.prototype.vertexShader = function () { return this._vertexShader; }; + Shader.prototype.fragmentShader = function () { return this._fragmentShader; }; + Shader.prototype.compile = function () { + var gl = this._gl; + try { + this._vs = this.compileShader(gl.VERTEX_SHADER, this._vertexShader); + this._fs = this.compileShader(gl.FRAGMENT_SHADER, this._fragmentShader); + this._program = this.compileProgram(this._vs, this._fs); + } + catch (e) { + this.dispose(); + throw e; + } + }; + Shader.prototype.compileShader = function (type, source) { + var gl = this._gl; + var shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); + gl.deleteShader(shader); + throw new Error(error); + } + return shader; + }; + Shader.prototype.compileProgram = function (vs, fs) { + var gl = this._gl; + var program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); + gl.deleteProgram(program); + throw new Error(error); + } + return program; + }; + Shader.prototype.bind = function () { + this._gl.useProgram(this._program); + }; + Shader.prototype.unbind = function () { + this._gl.useProgram(null); + }; + Shader.prototype.setUniformi = function (uniform, value) { + this._gl.uniform1i(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniformf = function (uniform, value) { + this._gl.uniform1f(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniform2f = function (uniform, value, value2) { + this._gl.uniform2f(this.getUniformLocation(uniform), value, value2); + }; + Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { + this._gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); + }; + Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { + this._gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); + }; + Shader.prototype.setUniform2x2f = function (uniform, value) { + var gl = this._gl; + this._tmp2x2.set(value); + gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this._tmp2x2); + }; + Shader.prototype.setUniform3x3f = function (uniform, value) { + var gl = this._gl; + this._tmp3x3.set(value); + gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this._tmp3x3); + }; + Shader.prototype.setUniform4x4f = function (uniform, value) { + var gl = this._gl; + this._tmp4x4.set(value); + gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this._tmp4x4); + }; + Shader.prototype.getUniformLocation = function (uniform) { + var gl = this._gl; + var location = gl.getUniformLocation(this._program, uniform); + if (!location) + throw new Error("Couldn't find location for uniform " + uniform); + return location; + }; + Shader.prototype.getAttributeLocation = function (attribute) { + var gl = this._gl; + var location = gl.getAttribLocation(this._program, attribute); + if (location == -1) + throw new Error("Couldn't find location for attribute " + attribute); + return location; + }; + Shader.prototype.dispose = function () { + var gl = this._gl; + if (this._vs) { + gl.deleteShader(this._vs); + this._vs = null; + } + if (this._fs) { + gl.deleteShader(this._fs); + this._fs = null; + } + if (this._program) { + gl.deleteProgram(this._program); + this._program = null; + } + }; + Shader.newColoredTextured = function (gl) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; + return new Shader(gl, vs, fs); + }; + Shader.newColored = function (gl) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; + return new Shader(gl, vs, fs); + }; + Shader.MVP_MATRIX = "u_projTrans"; + Shader.POSITION = "a_position"; + Shader.COLOR = "a_color"; + Shader.TEXCOORDS = "a_texCoords"; + Shader.SAMPLER = "u_texture"; + return Shader; + }()); + webgl.Shader = Shader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var SkeletonRenderer = (function () { + function SkeletonRenderer(gl) { + this.premultipliedAlpha = false; + this._gl = gl; + } + SkeletonRenderer.prototype.draw = function (batcher, skeleton) { + var premultipliedAlpha = this.premultipliedAlpha; + var blendMode = null; + var vertices = null; + var triangles = null; + var drawOrder = skeleton.drawOrder; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var attachment = slot.getAttachment(); + var texture = null; + if (attachment instanceof spine.RegionAttachment) { + var region = attachment; + vertices = region.updateWorldVertices(slot, premultipliedAlpha); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + texture = region.region.renderObject.texture; + } + else if (attachment instanceof spine.MeshAttachment) { + var mesh = attachment; + vertices = mesh.updateWorldVertices(slot, premultipliedAlpha); + triangles = mesh.triangles; + texture = mesh.region.renderObject.texture; + } + if (texture != null) { + var slotBlendMode = slot.data.blendMode; + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batcher.setBlendMode(webgl.getSourceGLBlendMode(this._gl, blendMode, premultipliedAlpha), webgl.getDestGLBlendMode(this._gl, blendMode)); + } + batcher.draw(texture, vertices, triangles); + } + } + }; + SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + return SkeletonRenderer; + }()); + webgl.SkeletonRenderer = SkeletonRenderer; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Texture = (function () { + function Texture(gl, image, useMipMaps) { + if (useMipMaps === void 0) { useMipMaps = false; } + this._boundUnit = 0; + this._gl = gl; + this._texture = gl.createTexture(); + this._image = image; + this.update(useMipMaps); + } + Texture.prototype.getImage = function () { + return this._image; + }; + Texture.prototype.setFilters = function (minFilter, magFilter) { + var gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); + }; + Texture.prototype.setWraps = function (uWrap, vWrap) { + var gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); + }; + Texture.prototype.update = function (useMipMaps) { + var gl = this._gl; + this.bind(); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (useMipMaps) + gl.generateMipmap(gl.TEXTURE_2D); + }; + Texture.prototype.bind = function (unit) { + if (unit === void 0) { unit = 0; } + var gl = this._gl; + this._boundUnit = unit; + gl.activeTexture(gl.TEXTURE0 + unit); + gl.bindTexture(gl.TEXTURE_2D, this._texture); + }; + Texture.prototype.unbind = function () { + var gl = this._gl; + gl.activeTexture(gl.TEXTURE0 + this._boundUnit); + gl.bindTexture(gl.TEXTURE_2D, null); + }; + Texture.prototype.dispose = function () { + var gl = this._gl; + gl.deleteTexture(this._texture); + }; + Texture.filterFromString = function (text) { + switch (text.toLowerCase()) { + case "nearest": return TextureFilter.Nearest; + case "linear": return TextureFilter.Linear; + case "mipmap": return TextureFilter.MipMap; + case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; + case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; + case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; + case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; + default: throw new Error("Unknown texture filter " + text); + } + }; + Texture.wrapFromString = function (text) { + switch (text.toLowerCase()) { + case "mirroredtepeat": return TextureWrap.MirroredRepeat; + case "clamptoedge": return TextureWrap.ClampToEdge; + case "repeat": return TextureWrap.Repeat; + default: throw new Error("Unknown texture wrap " + text); + } + }; + return Texture; + }()); + webgl.Texture = Texture; + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = WebGLRenderingContext.NEAREST] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = WebGLRenderingContext.LINEAR] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = WebGLRenderingContext.NEAREST_MIPMAP_NEAREST] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = WebGLRenderingContext.LINEAR_MIPMAP_NEAREST] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = WebGLRenderingContext.NEAREST_MIPMAP_LINEAR] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR] = "MipMapLinearLinear"; + })(webgl.TextureFilter || (webgl.TextureFilter = {})); + var TextureFilter = webgl.TextureFilter; + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = WebGLRenderingContext.MIRRORED_REPEAT] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = WebGLRenderingContext.CLAMP_TO_EDGE] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = WebGLRenderingContext.REPEAT] = "Repeat"; + })(webgl.TextureWrap || (webgl.TextureWrap = {})); + var TextureWrap = webgl.TextureWrap; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var TextureAtlas = (function () { + function TextureAtlas(atlasText, textureLoader) { + this.pages = new Array(); + this.regions = new Array(); + this.load(atlasText, textureLoader); + } + TextureAtlas.prototype.load = function (atlasText, textureLoader) { + if (textureLoader == null) + throw new Error("textureLoader cannot be null."); + var reader = new TextureAtlasReader(atlasText); + var tuple = new Array(4); + var page = null; + while (true) { + var line = reader.readLine(); + if (line == null) + break; + line = line.trim(); + if (line.length == 0) + page = null; + else if (!page) { + page = new TextureAtlasPage(); + page.name = line; + if (reader.readTuple(tuple) == 2) { + page.width = parseInt(tuple[0]); + page.height = parseInt(tuple[1]); + reader.readTuple(tuple); + } + // page.format = Format[tuple[0]]; we don't need format in WebGL + reader.readTuple(tuple); + page.minFilter = webgl.Texture.filterFromString(tuple[0]); + page.magFilter = webgl.Texture.filterFromString(tuple[1]); + var direction = reader.readValue(); + page.uWrap = webgl.TextureWrap.ClampToEdge; + page.vWrap = webgl.TextureWrap.ClampToEdge; + if (direction == "x") + page.uWrap = webgl.TextureWrap.Repeat; + else if (direction == "y") + page.vWrap = webgl.TextureWrap.Repeat; + else if (direction == "xy") + page.uWrap = page.vWrap = webgl.TextureWrap.Repeat; + page.texture = textureLoader(line); + page.texture.setFilters(page.minFilter, page.magFilter); + page.texture.setWraps(page.uWrap, page.vWrap); + page.width = page.texture.getImage().width; + page.height = page.texture.getImage().height; + this.pages.push(page); + } + else { + var region = new TextureAtlasRegion(); + region.name = line; + region.page = page; + region.rotate = reader.readValue() == "true"; + reader.readTuple(tuple); + var x = parseInt(tuple[0]); + var y = parseInt(tuple[1]); + reader.readTuple(tuple); + var width = parseInt(tuple[0]); + var height = parseInt(tuple[1]); + region.u = x / page.width; + region.v = y / page.height; + if (region.rotate) { + region.u2 = (x + height) / page.width; + region.v2 = (y + width) / page.height; + } + else { + region.u2 = (x + width) / page.width; + region.v2 = (y + height) / page.height; + } + region.x = x; + region.y = y; + region.width = Math.abs(width); + region.height = Math.abs(height); + if (reader.readTuple(tuple) == 4) { + // region.splits = new Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + if (reader.readTuple(tuple) == 4) { + //region.pads = Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + reader.readTuple(tuple); + } + } + region.originalWidth = parseInt(tuple[0]); + region.originalHeight = parseInt(tuple[1]); + reader.readTuple(tuple); + region.offsetX = parseInt(tuple[0]); + region.offsetY = parseInt(tuple[1]); + region.index = parseInt(reader.readValue()); + region.texture = page.texture; + this.regions.push(region); + } + } + }; + TextureAtlas.prototype.findRegion = function (name) { + for (var i = 0; i < this.regions.length; i++) { + if (this.regions[i].name == name) { + return this.regions[i]; + } + } + return null; + }; + TextureAtlas.prototype.dispose = function () { + for (var i = 0; i < this.pages.length; i++) { + this.pages[i].texture.dispose(); + } + }; + return TextureAtlas; + }()); + webgl.TextureAtlas = TextureAtlas; + var TextureAtlasReader = (function () { + function TextureAtlasReader(text) { + this.index = 0; + this.lines = text.split(/\r\n|\r|\n/); + } + TextureAtlasReader.prototype.readLine = function () { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + }; + TextureAtlasReader.prototype.readValue = function () { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + return line.substring(colon + 1).trim(); + }; + TextureAtlasReader.prototype.readTuple = function (tuple) { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + var i = 0, lastMatch = colon + 1; + for (; i < 3; i++) { + var comma = line.indexOf(",", lastMatch); + if (comma == -1) + break; + tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + } + tuple[i] = line.substring(lastMatch).trim(); + return i + 1; + }; + return TextureAtlasReader; + }()); + var TextureAtlasPage = (function () { + function TextureAtlasPage() { + } + return TextureAtlasPage; + }()); + webgl.TextureAtlasPage = TextureAtlasPage; + var TextureAtlasRegion = (function (_super) { + __extends(TextureAtlasRegion, _super); + function TextureAtlasRegion() { + _super.apply(this, arguments); + } + return TextureAtlasRegion; + }(spine.TextureRegion)); + webgl.TextureAtlasRegion = TextureAtlasRegion; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var TextureAtlasAttachmentLoader = (function () { + function TextureAtlasAttachmentLoader(atlas) { + this.atlas = atlas; + } + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) + throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + var attachment = new spine.RegionAttachment(name); + attachment.setRegion(region); + attachment.region = region; + return attachment; + }; + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) + throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + var attachment = new spine.MeshAttachment(name); + attachment.region = region; + return attachment; + }; + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { + return new spine.BoundingBoxAttachment(name); + }; + /** @return May be null to not load an attachment */ + TextureAtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { + return new spine.PathAttachment(name); + }; + return TextureAtlasAttachmentLoader; + }()); + webgl.TextureAtlasAttachmentLoader = TextureAtlasAttachmentLoader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Vector3 = (function () { + function Vector3() { + this.x = 0; + this.y = 0; + this.z = 0; + } + Vector3.prototype.set = function (x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + }; + Vector3.prototype.add = function (v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + }; + Vector3.prototype.sub = function (v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + }; + Vector3.prototype.scale = function (s) { + this.x *= s; + this.y *= s; + this.z *= s; + return this; + }; + Vector3.prototype.normalize = function () { + var len = this.length(); + if (len == 0) + return this; + len = 1 / len; + this.x *= len; + this.y *= len; + this.z *= len; + return this; + }; + Vector3.prototype.cross = function (v) { + return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); + }; + Vector3.prototype.multiply = function (matrix) { + var l_mat = matrix.values; + return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); + }; + Vector3.prototype.project = function (matrix) { + var l_mat = matrix.values; + var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); + return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); + }; + Vector3.prototype.dot = function (v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + }; + Vector3.prototype.length = function () { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + }; + Vector3.prototype.distance = function (v) { + var a = v.x - this.x; + var b = v.y - this.y; + var c = v.z - this.z; + return Math.sqrt(a * a + b * b + c * c); + }; + return Vector3; + }()); + webgl.Vector3 = Vector3; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + function getSourceGLBlendMode(gl, blendMode, premultipliedAlpha) { + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + switch (blendMode) { + case spine.BlendMode.Normal: return premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + case spine.BlendMode.Additive: return premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + case spine.BlendMode.Multiply: return gl.DST_COLOR; + case spine.BlendMode.Screen: return gl.ONE; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + webgl.getSourceGLBlendMode = getSourceGLBlendMode; + function getDestGLBlendMode(gl, blendMode) { + switch (blendMode) { + case spine.BlendMode.Normal: return gl.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Additive: return gl.ONE; + case spine.BlendMode.Multiply: return gl.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Screen: return gl.ONE_MINUS_SRC_ALPHA; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + webgl.getDestGLBlendMode = getDestGLBlendMode; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SpineWidget = (function () { + function SpineWidget(element, config) { + var _this = this; + this._mvp = new spine.webgl.Matrix4(); + this._paused = false; + this._lastFrameTime = Date.now() / 1000.0; + this._backgroundColor = new spine.Color(); + this._loaded = false; + if (!element) + throw new Error("Please provide a DOM element, e.g. document.getElementById('myelement')"); + if (!config) + throw new Error("Please provide a configuration, specifying at least the json file, atlas file and animation name"); + var elementId = element; + if (typeof (element) === "string") + element = document.getElementById(element); + if (element == null) + throw new Error("Element " + elementId + " does not exist"); + this.validateConfig(config); + var canvas = this.canvas = document.createElement("canvas"); + element.appendChild(canvas); + canvas.width = config.width; + canvas.height = config.height; + var webglConfig = { alpha: false }; + var gl = this.gl = (canvas.getContext("webgl", webglConfig) || canvas.getContext("experimental-webgl", webglConfig)); + this._shader = spine.webgl.Shader.newColoredTextured(gl); + this._batcher = new spine.webgl.PolygonBatcher(gl); + this._mvp.ortho2d(0, 0, 639, 479); + this._skeletonRenderer = new spine.webgl.SkeletonRenderer(gl); + var assets = this._assetManager = new spine.webgl.AssetManager(gl); + assets.loadText(config.atlas); + assets.loadText(config.json); + assets.loadTexture(config.atlas.replace(".atlas", ".png")); + requestAnimationFrame(function () { _this.load(); }); + } + SpineWidget.prototype.validateConfig = function (config) { + if (!config.atlas) + throw new Error("Please specify config.atlas"); + if (!config.json) + throw new Error("Please specify config.json"); + if (!config.animation) + throw new Error("Please specify config.animationName"); + if (!config.scale) + config.scale = 1.0; + if (!config.skin) + config.skin = "default"; + if (config.loop === undefined) + config.loop = true; + if (!config.y) + config.y = 20; + if (!config.width) + config.width = 640; + if (!config.height) + config.height = 480; + if (!config.x) + config.x = config.width / 2; + if (!config.backgroundColor) + config.backgroundColor = "#555555"; + if (!config.imagesPath) { + var index = config.atlas.lastIndexOf("/"); + if (index != -1) { + config.imagesPath = config.atlas.substr(0, index) + "/"; + } + else { + config.imagesPath = ""; + } + } + if (!config.premultipliedAlpha === undefined) + config.premultipliedAlpha = false; + this._backgroundColor.setFromString(config.backgroundColor); + this._config = config; + }; + SpineWidget.prototype.load = function () { + var _this = this; + var assetManager = this._assetManager; + var imagesPath = this._config.imagesPath; + var config = this._config; + if (assetManager.isLoadingComplete()) { + if (assetManager.hasErrors()) { + if (config.error) + config.error(this, "Failed to load assets: " + JSON.stringify(assetManager.errors)); + else + throw new Error("Failed to load assets: " + JSON.stringify(assetManager.errors)); + } + var atlas = new spine.webgl.TextureAtlas(this._assetManager.get(this._config.atlas), function (path) { + return assetManager.get(imagesPath + path); + }); + var atlasLoader = new spine.webgl.TextureAtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + // Set the scale to apply during parsing, parse the file, and create a new skeleton. + skeletonJson.scale = config.scale; + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(config.json)); + var skeleton = this.skeleton = new spine.Skeleton(skeletonData); + skeleton.x = config.x; + skeleton.y = config.y; + skeleton.setSkinByName(config.skin); + var animationState = this.state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + animationState.setAnimation(0, config.animation, true); + if (config.success) + config.success(this); + this._loaded = true; + requestAnimationFrame(function () { _this.render(); }); + } + else + requestAnimationFrame(function () { _this.load(); }); + }; + SpineWidget.prototype.render = function () { + var _this = this; + var now = Date.now() / 1000; + var delta = now - this._lastFrameTime; + if (delta > 0.1) + delta = 0; + this._lastFrameTime = now; + var gl = this.gl; + var color = this._backgroundColor; + gl.clearColor(color.r, color.g, color.b, color.a); + gl.clear(gl.COLOR_BUFFER_BIT); + // Apply the animation state based on the delta time. + var state = this.state; + var skeleton = this.skeleton; + var premultipliedAlpha = this._config.premultipliedAlpha; + state.update(delta); + state.apply(skeleton); + skeleton.updateWorldTransform(); + // Bind the shader and set the texture and model-view-projection matrix. + var shader = this._shader; + shader.bind(); + shader.setUniformi(spine.webgl.Shader.SAMPLER, 0); + shader.setUniform4x4f(spine.webgl.Shader.MVP_MATRIX, this._mvp.values); + // Start the batch and tell the SkeletonRenderer to render the active skeleton. + var batcher = this._batcher; + var skeletonRenderer = this._skeletonRenderer; + batcher.begin(shader); + skeletonRenderer.premultipliedAlpha = premultipliedAlpha; + skeletonRenderer.draw(batcher, skeleton); + batcher.end(); + shader.unbind(); + if (!this._paused) + requestAnimationFrame(function () { _this.render(); }); + }; + SpineWidget.prototype.pause = function () { + this._paused = true; + }; + SpineWidget.prototype.play = function () { + var _this = this; + this._paused = false; + requestAnimationFrame(function () { _this.render(); }); + }; + SpineWidget.prototype.isPlaying = function () { + return !this._paused; + }; + SpineWidget.prototype.setAnimation = function (animationName) { + if (!this._loaded) + throw new Error("Widget isn't loaded yet"); + this.skeleton.setToSetupPose(); + this.state.setAnimation(0, animationName, this._config.loop); + }; + SpineWidget.loadWidgets = function () { + var widgets = document.getElementsByClassName("spine-widget"); + for (var i = 0; i < widgets.length; i++) { + SpineWidget.loadWidget(widgets[i]); + } + }; + SpineWidget.loadWidget = function (widget) { + var config = new SpineWidgetConfig(); + config.atlas = widget.getAttribute("data-atlas"); + config.json = widget.getAttribute("data-json"); + config.animation = widget.getAttribute("data-animation"); + if (widget.getAttribute("data-images-path")) + config.imagesPath = widget.getAttribute("data-images-path"); + if (widget.getAttribute("data-skin")) + config.skin = widget.getAttribute("data-skin"); + if (widget.getAttribute("data-loop")) + config.loop = widget.getAttribute("data-loop") === "true"; + if (widget.getAttribute("data-scale")) + config.scale = parseFloat(widget.getAttribute("data-scale")); + if (widget.getAttribute("data-x")) + config.x = parseFloat(widget.getAttribute("data-x")); + if (widget.getAttribute("data-y")) + config.x = parseFloat(widget.getAttribute("data-y")); + if (widget.getAttribute("data-width")) + config.width = parseInt(widget.getAttribute("data-width")); + if (widget.getAttribute("data-height")) + config.height = parseInt(widget.getAttribute("data-height")); + if (widget.getAttribute("data-background-color")) + config.backgroundColor = widget.getAttribute("data-background-color"); + if (widget.getAttribute("data-premultiplied-alpha")) + config.premultipliedAlpha = widget.getAttribute("data-premultiplied-alpha") === "true"; + new spine.SpineWidget(widget, config); + }; + SpineWidget.ready = function () { + if (SpineWidget.pageLoaded) + return; + SpineWidget.pageLoaded = true; + SpineWidget.loadWidgets(); + }; + SpineWidget.setupDOMListener = function () { + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", SpineWidget.ready, false); + window.addEventListener("load", SpineWidget.ready, false); + } + else { + document.attachEvent("onreadystatechange", function readyStateChange() { + if (document.readyState === "complete") + SpineWidget.ready(); + }); + window.attachEvent("onload", SpineWidget.ready); + } + }; + SpineWidget.pageLoaded = false; + return SpineWidget; + }()); + spine.SpineWidget = SpineWidget; + var SpineWidgetConfig = (function () { + function SpineWidgetConfig() { + this.skin = "default"; + this.loop = true; + this.scale = 1.0; + this.x = 0; + this.y = 0; + this.width = 640; + this.height = 480; + this.backgroundColor = "#555555"; + this.premultipliedAlpha = false; + } + return SpineWidgetConfig; + }()); + spine.SpineWidgetConfig = SpineWidgetConfig; +})(spine || (spine = {})); +spine.SpineWidget.setupDOMListener(); +//# sourceMappingURL=spine-core.js.map \ No newline at end of file diff --git a/spine-ts/build/spine-core.js.map b/spine-ts/build/spine-core.js.map new file mode 100644 index 000000000..ed2079071 --- /dev/null +++ b/spine-ts/build/spine-core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spine-core.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/BlendMode.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/AttachmentType.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/attachments/TextureRegion.ts","../webgl/src/AssetManager.ts","../webgl/src/Matrix4.ts","../webgl/src/Mesh.ts","../webgl/src/PolygonBatcher.ts","../webgl/src/Shader.ts","../webgl/src/SkeletonRenderer.ts","../webgl/src/Texture.ts","../webgl/src/TextureAtlas.ts","../webgl/src/TextureAtlasAttachmentLoader.ts","../webgl/src/Vector3.ts","../webgl/src/WebGL.ts","../widget/src/Widget.ts"],"names":[],"mappings":"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AAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAChH,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,6BAAW,GAAX;gBACC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC3G,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG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CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,8BAAY,GAAZ,UAAc,MAAe;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,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"} \ No newline at end of file diff --git a/spine-ts/build/spine-webgl.d.ts b/spine-ts/build/spine-webgl.d.ts new file mode 100644 index 000000000..bab571348 --- /dev/null +++ b/spine-ts/build/spine-webgl.d.ts @@ -0,0 +1,2502 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Animation { + name: string; + timelines: Array; + duration: number; + constructor(name: string, timelines: Array, duration: number); + apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array): void; + mix(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number): void; + static binarySearch(values: ArrayLike, target: number, step?: number): number; + static linearSearch(values: ArrayLike, target: number, step: number): number; + } + interface Timeline { + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + abstract class CurveTimeline implements Timeline { + static LINEAR: number; + static STEPPED: number; + static BEZIER: number; + static BEZIER_SIZE: number; + private curves; + constructor(frameCount: number); + getFrameCount(): number; + setLinear(frameIndex: number): void; + setStepped(frameIndex: number): void; + getCurveType(frameIndex: number): number; + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + getCurvePercent(frameIndex: number, percent: number): number; + abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class RotateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATION: number; + static ROTATION: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and angle of the specified keyframe. */ + setFrame(frameIndex: number, time: number, degrees: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class TranslateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_X: number; + static PREV_Y: number; + static X: number; + static Y: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ScaleTimeline extends TranslateTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ShearTimeline extends TranslateTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static R: number; + static G: number; + static B: number; + static A: number; + slotIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class AttachmentTimeline implements Timeline { + slotIndex: number; + frames: ArrayLike; + attachmentNames: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class EventTimeline implements Timeline { + frames: ArrayLike; + events: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time of the specified keyframe. */ + setFrame(frameIndex: number, event: Event): void; + /** Fires events for frames > lastTime and <= time. */ + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class DrawOrderTimeline implements Timeline { + frames: ArrayLike; + drawOrders: Array>; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + setFrame(frameIndex: number, time: number, drawOrder: Array): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class DeformTimeline extends CurveTimeline { + frames: ArrayLike; + frameVertices: Array>; + slotIndex: number; + attachment: VertexAttachment; + constructor(frameCount: number); + /** Sets the time of the specified keyframe. */ + setFrame(frameIndex: number, time: number, vertices: ArrayLike): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class IkConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_MIX: number; + static PREV_BEND_DIRECTION: number; + static MIX: number; + static BEND_DIRECTION: number; + ikConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time, mix and bend direction of the specified keyframe. */ + setFrame(frameIndex: number, time: number, mix: number, bendDirection: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class TransformConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static PREV_SCALE: number; + static PREV_SHEAR: number; + static ROTATE: number; + static TRANSLATE: number; + static SCALE: number; + static SHEAR: number; + transformConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and mixes of the specified keyframe. */ + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintPositionTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_VALUE: number; + static VALUE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, value: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintMixTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static ROTATE: number; + static TRANSLATE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and mixes of the specified keyframe. */ + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class AnimationState { + data: AnimationStateData; + tracks: TrackEntry[]; + events: Event[]; + listeners: AnimationStateListener[]; + timeScale: number; + constructor(data?: AnimationStateData); + update(delta: number): void; + apply(skeleton: Skeleton): void; + clearTracks(): void; + clearTrack(trackIndex: number): void; + freeAll(entry: TrackEntry): void; + expandToIndex(index: number): TrackEntry; + setCurrent(index: number, entry: TrackEntry): void; + /** @see #setAnimation(int, Animation, boolean) */ + setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; + /** Set the current animation. Any queued animations are cleared. */ + setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; + /** {@link #addAnimation(int, Animation, boolean, float)} */ + addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; + /** @return May be null. */ + getCurrent(trackIndex: number): TrackEntry; + /** Adds a listener to receive events for all animations. */ + addListener(listener: AnimationStateListener): void; + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + removeListener(listener: AnimationStateListener): void; + clearListeners(): void; + } + class TrackEntry { + next: TrackEntry; + previous: TrackEntry; + animation: Animation; + loop: boolean; + delay: number; + time: number; + lastTime: number; + endTime: number; + timeScale: number; + mixTime: number; + mixDuration: number; + listener: AnimationStateListener; + mix: number; + reset(): void; + /** Returns true if the current time is greater than the end time, regardless of looping. */ + isComplete(): boolean; + } + abstract class AnimationStateAdapter implements AnimationStateListener { + event(trackIndex: number, event: Event): void; + complete(trackIndex: number, loopCount: number): void; + start(trackIndex: number): void; + end(trackIndex: number): void; + } + interface AnimationStateListener { + /** Invoked when the current animation triggers an event. */ + event(trackIndex: number, event: Event): void; + /** Invoked when the current animation has completed. + * @param loopCount The number of times the animation reached the end. */ + complete(trackIndex: number, loopCount: number): void; + /** Invoked just after the current animation is set. */ + start(trackIndex: number): void; + /** Invoked just before the current animation is replaced. */ + end(trackIndex: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class AnimationStateData { + skeletonData: SkeletonData; + animationToMixTime: Map; + defaultMix: number; + constructor(skeletonData: SkeletonData); + setMix(fromName: string, toName: string, duration: number): void; + setMixWith(from: Animation, to: Animation, duration: number): void; + getMix(from: Animation, to: Animation): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + enum BlendMode { + Normal = 0, + Additive = 1, + Multiply = 2, + Screen = 3, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Bone implements Updatable { + data: BoneData; + skeleton: Skeleton; + parent: Bone; + children: Bone[]; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + appliedRotation: number; + a: number; + b: number; + worldX: number; + c: number; + d: number; + worldY: number; + worldSignX: number; + worldSignY: number; + sorted: boolean; + /** @param parent May be null. */ + constructor(data: BoneData, skeleton: Skeleton, parent: Bone); + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + update(): void; + /** Computes the world transform using the parent bone and this bone's local transform. */ + updateWorldTransform(): void; + /** Computes the world transform using the parent bone and the specified local transform. */ + updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; + setToSetupPose(): void; + getWorldRotationX(): number; + getWorldRotationY(): number; + getWorldScaleX(): number; + getWorldScaleY(): number; + worldToLocalRotationX(): number; + worldToLocalRotationY(): number; + rotateWorld(degrees: number): void; + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + updateLocalTransform(): void; + worldToLocal(world: Vector2): Vector2; + localToWorld(local: Vector2): Vector2; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class BoneData { + index: number; + name: string; + parent: BoneData; + length: number; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + inheritRotation: boolean; + inheritScale: boolean; + constructor(index: number, name: string, parent: BoneData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + constructor(time: number, data: EventData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class IkConstraint implements Updatable { + data: IkConstraintData; + bones: Array; + target: Bone; + mix: number; + bendDirection: number; + level: number; + constructor(data: IkConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + apply1(bone: Bone, targetX: number, targetY: number, alpha: number): void; + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class IkConstraintData { + name: string; + bones: BoneData[]; + target: BoneData; + bendDirection: number; + mix: number; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathConstraint implements Updatable { + static NONE: number; + static BEFORE: number; + static AFTER: number; + data: PathConstraintData; + bones: Array; + target: Slot; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + spaces: number[]; + positions: number[]; + world: number[]; + curves: number[]; + lengths: number[]; + segments: number[]; + constructor(data: PathConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; + addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathConstraintData { + name: string; + bones: BoneData[]; + target: SlotData; + positionMode: PositionMode; + spacingMode: SpacingMode; + rotateMode: RotateMode; + offsetRotation: number; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + constructor(name: string); + } + enum PositionMode { + Fixed = 0, + Percent = 1, + } + enum SpacingMode { + Length = 0, + Fixed = 1, + Percent = 2, + } + enum RotateMode { + Tangent = 0, + Chain = 1, + ChainScale = 2, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Skeleton { + data: SkeletonData; + bones: Array; + slots: Array; + drawOrder: Array; + ikConstraints: Array; + ikConstraintsSorted: Array; + transformConstraints: Array; + pathConstraints: Array; + _updateCache: Updatable[]; + skin: Skin; + color: Color; + time: number; + flipX: boolean; + flipY: boolean; + x: number; + y: number; + constructor(data: SkeletonData); + updateCache(): void; + sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; + sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; + sortBone(bone: Bone): void; + sortReset(bones: Array): void; + /** Updates the world transform for each bone and applies constraints. */ + updateWorldTransform(): void; + /** Sets the bones, constraints, and slots to their setup pose values. */ + setToSetupPose(): void; + /** Sets the bones and constraints to their setup pose values. */ + setBonesToSetupPose(): void; + setSlotsToSetupPose(): void; + /** @return May return null. */ + getRootBone(): Bone; + /** @return May be null. */ + findBone(boneName: string): Bone; + /** @return -1 if the bone was not found. */ + findBoneIndex(boneName: string): number; + /** @return May be null. */ + findSlot(slotName: string): Slot; + /** @return -1 if the bone was not found. */ + findSlotIndex(slotName: string): number; + /** Sets a skin by name. + * @see #setSkin(Skin) */ + setSkinByName(skinName: string): void; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + setSkin(newSkin: Skin): void; + /** @return May be null. */ + getAttachmentByName(slotName: string, attachmentName: string): Attachment; + /** @return May be null. */ + getAttachment(slotIndex: number, attachmentName: string): Attachment; + /** @param attachmentName May be null. */ + setAttachment(slotName: string, attachmentName: string): void; + /** @return May be null. */ + findIkConstraint(constraintName: string): IkConstraint; + /** @return May be null. */ + findTransformConstraint(constraintName: string): TransformConstraint; + /** @return May be null. */ + findPathConstraint(constraintName: string): PathConstraint; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + getBounds(offset: Vector2, size: Vector2): void; + update(delta: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonBounds { + minX: number; + minY: number; + maxX: number; + maxY: number; + boundingBoxes: BoundingBoxAttachment[]; + polygons: ArrayLike[]; + private _polygonPool; + update(skeleton: Skeleton, updateAabb: boolean): void; + aabbCompute(): void; + /** Returns true if the axis aligned bounding box contains the point. */ + aabbContainsPoint(x: number, y: number): boolean; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; + /** 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. */ + containsPoint(x: number, y: number): BoundingBoxAttachment; + /** Returns true if the polygon contains the point. */ + containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; + /** Returns the first bounding box attachment that contains any part of 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. */ + intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; + /** Returns true if the polygon contains any part of the line segment. */ + intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns the polygon for the specified bounding box, or null. */ + getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonData { + name: string; + bones: BoneData[]; + slots: SlotData[]; + skins: Skin[]; + defaultSkin: Skin; + events: EventData[]; + animations: Animation[]; + ikConstraints: IkConstraintData[]; + transformConstraints: TransformConstraintData[]; + pathConstraints: PathConstraintData[]; + width: number; + height: number; + version: string; + hash: string; + imagesPath: string; + findBone(boneName: string): BoneData; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): SlotData; + findSlotIndex(slotName: string): number; + findSkin(skinName: string): Skin; + findEvent(eventDataName: string): EventData; + findAnimation(animationName: string): Animation; + findIkConstraint(constraintName: string): IkConstraintData; + findTransformConstraint(constraintName: string): TransformConstraintData; + findPathConstraint(constraintName: string): PathConstraintData; + findPathConstraintIndex(pathConstraintName: string): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonJson { + attachmentLoader: AttachmentLoader; + scale: number; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(json: string): SkeletonData; + readAttachment(map: any, skin: Skin, slotIndex: number, name: string): Attachment; + readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; + readAnimation(map: any, name: string, skeletonData: SkeletonData): void; + readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; + getValue(map: any, prop: string, defaultValue: any): any; + static blendModeFromString(str: string): BlendMode; + static positionModeFromString(str: string): PositionMode; + static spacingModeFromString(str: string): SpacingMode; + static rotateModeFromString(str: string): RotateMode; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Skin { + name: string; + attachments: Map[]; + constructor(name: string); + addAttachment(slotIndex: number, name: string, attachment: Attachment): void; + /** @return May be null. */ + getAttachment(slotIndex: number, name: string): Attachment; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + attachAll(skeleton: Skeleton, oldSkin: Skin): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Slot { + data: SlotData; + bone: Bone; + color: Color; + private attachment; + private attachmentTime; + attachmentVertices: number[]; + constructor(data: SlotData, bone: Bone); + /** @return May be null. */ + getAttachment(): Attachment; + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + setAttachment(attachment: Attachment): void; + setAttachmentTime(time: number): void; + /** Returns the time since the attachment was set. */ + getAttachmentTime(): number; + setToSetupPose(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SlotData { + index: number; + name: string; + boneData: BoneData; + color: Color; + attachmentName: string; + blendMode: BlendMode; + constructor(index: number, name: string, boneData: BoneData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TransformConstraint implements Updatable { + data: TransformConstraintData; + bones: Array; + target: Bone; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + temp: Vector2; + constructor(data: TransformConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TransformConstraintData { + name: string; + bones: BoneData[]; + target: BoneData; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + offsetRotation: number; + offsetX: number; + offsetY: number; + offsetScaleX: number; + offsetScaleY: number; + offsetShearY: number; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface Updatable { + update(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface Map { + [key: string]: T; + } + interface Disposable { + dispose(): void; + } + class Color { + r: number; + g: number; + b: number; + a: number; + constructor(r?: number, g?: number, b?: number, a?: number); + set(r: number, g: number, b: number, a: number): void; + setFromColor(c: Color): void; + setFromString(hex: string): void; + add(r: number, g: number, b: number, a: number): void; + clamp(): this; + } + class MathUtils { + static PI: number; + static PI2: number; + static radiansToDegrees: number; + static radDeg: number; + static degreesToRadians: number; + static degRad: number; + static clamp(value: number, min: number, max: number): number; + static cosDeg(degrees: number): number; + static sinDeg(degrees: number): number; + static signum(value: number): number; + static toInt(x: number): number; + } + class Utils { + static SUPPORTS_TYPED_ARRAYS: boolean; + static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; + static setArraySize(array: Array, size: number, value?: any): Array; + static newArray(size: number, defaultValue: T): Array; + static newFloatArray(size: number): ArrayLike; + static toFloatArray(array: Array): Float32Array | number[]; + } + class Pool { + private _items; + private _instantiator; + constructor(instantiator: () => T); + obtain(): T; + free(item: T): void; + freeAll(items: ArrayLike): void; + clear(): void; + } + class Vector2 { + x: number; + y: number; + constructor(x?: number, y?: number); + set(x: number, y: number): Vector2; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + abstract class Attachment { + name: string; + constructor(name: string); + } + abstract class VertexAttachment extends Attachment { + bones: Array; + vertices: ArrayLike; + worldVerticesLength: number; + constructor(name: string); + computeWorldVertices(slot: Slot, worldVertices: ArrayLike): void; + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + computeWorldVerticesWith(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number): void; + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + applyDeform(sourceAttachment: VertexAttachment): boolean; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface AttachmentLoader { + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + enum AttachmentType { + Region = 0, + BoundingBox = 1, + Mesh = 2, + LinkedMesh = 3, + Path = 4, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class BoundingBoxAttachment extends VertexAttachment { + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class MeshAttachment extends VertexAttachment { + region: TextureRegion; + path: string; + regionUVs: ArrayLike; + worldVertices: ArrayLike; + triangles: Array; + color: Color; + hullLength: number; + private _parentMesh; + inheritDeform: boolean; + tempColor: Color; + constructor(name: string); + updateUVs(): void; + /** @return The updated world vertices. */ + updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike; + applyDeform(sourceAttachment: VertexAttachment): boolean; + getParentMesh(): MeshAttachment; + /** @param parentMesh May be null. */ + setParentMesh(parentMesh: MeshAttachment): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathAttachment extends VertexAttachment { + lengths: Array; + closed: boolean; + constantSpeed: boolean; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class RegionAttachment extends Attachment { + static OX1: number; + static OY1: number; + static OX2: number; + static OY2: number; + static OX3: number; + static OY3: number; + static OX4: number; + static OY4: number; + static X1: number; + static Y1: number; + static C1R: number; + static C1G: number; + static C1B: number; + static C1A: number; + static U1: number; + static V1: number; + static X2: number; + static Y2: number; + static C2R: number; + static C2G: number; + static C2B: number; + static C2A: number; + static U2: number; + static V2: number; + static X3: number; + static Y3: number; + static C3R: number; + static C3G: number; + static C3B: number; + static C3A: number; + static U3: number; + static V3: number; + static X4: number; + static Y4: number; + static C4R: number; + static C4G: number; + static C4B: number; + static C4A: number; + static U4: number; + static V4: number; + x: number; + y: number; + scaleX: number; + scaleY: number; + rotation: number; + width: number; + height: number; + color: Color; + path: string; + rendererObject: any; + region: TextureRegion; + offset: ArrayLike; + vertices: ArrayLike; + tempColor: Color; + constructor(name: string); + setRegion(region: TextureRegion): void; + updateOffset(): void; + updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TextureRegion { + renderObject: any; + u: number; + v: number; + u2: number; + v2: number; + width: number; + height: number; + rotate: boolean; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class AssetManager implements Disposable { + private _gl; + private _assets; + private _errors; + private _toLoad; + private _loaded; + constructor(gl: WebGLRenderingContext); + loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; + loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + get(path: string): string | Texture; + remove(path: string): void; + removeAll(): void; + isLoadingComplete(): boolean; + toLoad(): number; + loaded(): number; + dispose(): void; + hasErrors(): boolean; + errors(): Map; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + const M00: number; + const M01: number; + const M02: number; + const M03: number; + const M10: number; + const M11: number; + const M12: number; + const M13: number; + const M20: number; + const M21: number; + const M22: number; + const M23: number; + const M30: number; + const M31: number; + const M32: number; + const M33: number; + class Matrix4 { + temp: Float32Array; + values: Float32Array; + constructor(); + set(values: ArrayLike): Matrix4; + transpose(): Matrix4; + identity(): Matrix4; + invert(): Matrix4; + determinant(): number; + translate(x: number, y: number, z: number): Matrix4; + copy(): Matrix4; + projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; + ortho2d(x: number, y: number, width: number, height: number): Matrix4; + ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; + multiply(matrix: Matrix4): Matrix4; + multiplyLeft(matrix: Matrix4): Matrix4; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Mesh implements Disposable { + private _attributes; + private _gl; + private _vertices; + private _verticesBuffer; + private _verticesLength; + private _dirtyVertices; + private _indices; + private _indicesBuffer; + private _indicesLength; + private _dirtyIndices; + private _elementsPerVertex; + attributes(): VertexAttribute[]; + maxVertices(): number; + numVertices(): number; + setVerticesLength(length: number): void; + vertices(): Float32Array; + maxIndices(): number; + numIndices(): number; + setIndicesLength(length: number): void; + indices(): Uint16Array; + constructor(gl: WebGLRenderingContext, _attributes: VertexAttribute[], maxVertices: number, maxIndices: number); + setVertices(vertices: Array): void; + setIndices(indices: Array): void; + draw(shader: Shader, primitiveType: number): void; + drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; + bind(shader: Shader): void; + unbind(shader: Shader): void; + private update(); + dispose(): void; + } + class VertexAttribute { + name: string; + type: VertexAttributeType; + numElements: number; + constructor(name: string, type: VertexAttributeType, numElements: number); + } + class Position2Attribute extends VertexAttribute { + constructor(); + } + class Position3Attribute extends VertexAttribute { + constructor(); + } + class TexCoordAttribute extends VertexAttribute { + constructor(unit?: number); + } + class ColorAttribute extends VertexAttribute { + constructor(); + } + enum VertexAttributeType { + Float = 0, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class PolygonBatcher { + private _gl; + private _drawCalls; + private _drawing; + private _mesh; + private _shader; + private _lastTexture; + private _verticesLength; + private _indicesLength; + private _srcBlend; + private _dstBlend; + constructor(gl: WebGLRenderingContext, maxVertices?: number); + begin(shader: Shader): void; + setBlendMode(srcBlend: number, dstBlend: number): void; + draw(texture: Texture, vertices: ArrayLike, indices: Array): void; + private flush(); + end(): void; + drawCalls(): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Shader implements Disposable { + private _vertexShader; + private _fragmentShader; + static MVP_MATRIX: string; + static POSITION: string; + static COLOR: string; + static TEXCOORDS: string; + static SAMPLER: string; + private _gl; + private _vs; + private _fs; + private _program; + private _tmp2x2; + private _tmp3x3; + private _tmp4x4; + program(): WebGLProgram; + vertexShader(): string; + fragmentShader(): string; + constructor(gl: WebGLRenderingContext, _vertexShader: string, _fragmentShader: string); + private compile(); + private compileShader(type, source); + private compileProgram(vs, fs); + bind(): void; + unbind(): void; + setUniformi(uniform: string, value: number): void; + setUniformf(uniform: string, value: number): void; + setUniform2f(uniform: string, value: number, value2: number): void; + setUniform3f(uniform: string, value: number, value2: number, value3: number): void; + setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; + setUniform2x2f(uniform: string, value: ArrayLike): void; + setUniform3x3f(uniform: string, value: ArrayLike): void; + setUniform4x4f(uniform: string, value: ArrayLike): void; + getUniformLocation(uniform: string): WebGLUniformLocation; + getAttributeLocation(attribute: string): number; + dispose(): void; + static newColoredTextured(gl: WebGLRenderingContext): Shader; + static newColored(gl: WebGLRenderingContext): Shader; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class SkeletonRenderer { + static QUAD_TRIANGLES: number[]; + premultipliedAlpha: boolean; + private _gl; + constructor(gl: WebGLRenderingContext); + draw(batcher: PolygonBatcher, skeleton: Skeleton): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Texture implements Disposable { + private _gl; + private _texture; + private _image; + private _boundUnit; + constructor(gl: WebGLRenderingContext, image: HTMLImageElement, useMipMaps?: boolean); + getImage(): HTMLImageElement; + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + update(useMipMaps: boolean): void; + bind(unit?: number): void; + unbind(): void; + dispose(): void; + static filterFromString(text: string): TextureFilter; + static wrapFromString(text: string): TextureWrap; + } + enum TextureFilter { + Nearest, + Linear, + MipMap, + MipMapNearestNearest, + MipMapLinearNearest, + MipMapNearestLinear, + MipMapLinearLinear, + } + enum TextureWrap { + MirroredRepeat, + ClampToEdge, + Repeat, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class TextureAtlas implements Disposable { + pages: TextureAtlasPage[]; + regions: TextureAtlasRegion[]; + constructor(atlasText: string, textureLoader: (path: string) => Texture); + private load(atlasText, textureLoader); + findRegion(name: string): TextureAtlasRegion; + dispose(): void; + } + class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + } + class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + index: number; + rotate: boolean; + texture: Texture; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class TextureAtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + constructor(atlas: TextureAtlas); + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Vector3 { + x: number; + y: number; + z: number; + set(x: number, y: number, z: number): Vector3; + add(v: Vector3): Vector3; + sub(v: Vector3): Vector3; + scale(s: number): Vector3; + normalize(): Vector3; + cross(v: Vector3): Vector3; + multiply(matrix: Matrix4): Vector3; + project(matrix: Matrix4): Vector3; + dot(v: Vector3): number; + length(): number; + distance(v: Vector3): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + function getSourceGLBlendMode(gl: WebGLRenderingContext, blendMode: BlendMode, premultipliedAlpha?: boolean): number; + function getDestGLBlendMode(gl: WebGLRenderingContext, blendMode: BlendMode): number; +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SpineWidget { + skeleton: Skeleton; + state: AnimationState; + gl: WebGLRenderingContext; + canvas: HTMLCanvasElement; + private _config; + private _assetManager; + private _shader; + private _batcher; + private _mvp; + private _skeletonRenderer; + private _paused; + private _lastFrameTime; + private _backgroundColor; + private _loaded; + constructor(element: Element | string, config: SpineWidgetConfig); + private validateConfig(config); + private load(); + private render(); + pause(): void; + play(): void; + isPlaying(): boolean; + setAnimation(animationName: string): void; + static loadWidgets(): void; + static loadWidget(widget: Element): void; + static pageLoaded: boolean; + private static ready(); + static setupDOMListener(): void; + } + class SpineWidgetConfig { + json: string; + atlas: string; + animation: string; + imagesPath: string; + skin: string; + loop: boolean; + scale: number; + x: number; + y: number; + width: number; + height: number; + backgroundColor: string; + premultipliedAlpha: boolean; + success: (widget: SpineWidget) => void; + error: (widget: SpineWidget, msg: string) => void; + } +} diff --git a/spine-ts/build/spine-webgl.js b/spine-ts/build/spine-webgl.js new file mode 100644 index 000000000..e81a4184e --- /dev/null +++ b/spine-ts/build/spine-webgl.js @@ -0,0 +1,6877 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var spine; +(function (spine) { + var Animation = (function () { + function Animation(name, timelines, duration) { + if (name == null) + throw new Error("name cannot be null."); + if (timelines == null) + throw new Error("timelines cannot be null."); + this.name = name; + this.timelines = timelines; + this.duration = duration; + } + Animation.prototype.apply = function (skeleton, lastTime, time, loop, events) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, 1); + }; + Animation.prototype.mix = function (skeleton, lastTime, time, loop, events, alpha) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha); + }; + Animation.binarySearch = function (values, target, step) { + if (step === void 0) { step = 1; } + var low = 0; + var high = values.length / step - 2; + if (high == 0) + return step; + var current = high >>> 1; + while (true) { + if (values[(current + 1) * step] <= target) + low = current + 1; + else + high = current; + if (low == high) + return (low + 1) * step; + current = (low + high) >>> 1; + } + }; + Animation.linearSearch = function (values, target, step) { + for (var i = 0, last = values.length - step; i <= last; i += step) + if (values[i] > target) + return i; + return -1; + }; + return Animation; + }()); + spine.Animation = Animation; + var CurveTimeline = (function () { + function CurveTimeline(frameCount) { + if (frameCount <= 0) + throw new Error("frameCount must be > 0: " + frameCount); + this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); + } + CurveTimeline.prototype.getFrameCount = function () { + return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; + }; + CurveTimeline.prototype.setLinear = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; + }; + CurveTimeline.prototype.setStepped = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; + }; + CurveTimeline.prototype.getCurveType = function (frameIndex) { + var index = frameIndex * CurveTimeline.BEZIER_SIZE; + if (index == this.curves.length) + return CurveTimeline.LINEAR; + var type = this.curves[index]; + if (type == CurveTimeline.LINEAR) + return CurveTimeline.LINEAR; + if (type == CurveTimeline.STEPPED) + return CurveTimeline.STEPPED; + return CurveTimeline.BEZIER; + }; + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + CurveTimeline.prototype.setCurve = function (frameIndex, cx1, cy1, cx2, cy2) { + var tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; + var dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; + var ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; + var dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var curves = this.curves; + curves[i++] = CurveTimeline.BEZIER; + var x = dfx, y = dfy; + for (var n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } + }; + CurveTimeline.prototype.getCurvePercent = function (frameIndex, percent) { + percent = spine.MathUtils.clamp(percent, 0, 1); + var curves = this.curves; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var type = curves[i]; + if (type == CurveTimeline.LINEAR) + return percent; + if (type == CurveTimeline.STEPPED) + return 0; + i++; + var x = 0; + for (var start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + x = curves[i]; + if (x >= percent) { + var prevX = void 0, prevY = void 0; + if (i == start) { + prevX = 0; + prevY = 0; + } + else { + prevX = curves[i - 2]; + prevY = curves[i - 1]; + } + return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + var y = curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1. + }; + CurveTimeline.LINEAR = 0; + CurveTimeline.STEPPED = 1; + CurveTimeline.BEZIER = 2; + CurveTimeline.BEZIER_SIZE = 10 * 2 - 1; + return CurveTimeline; + }()); + spine.CurveTimeline = CurveTimeline; + var RotateTimeline = (function (_super) { + __extends(RotateTimeline, _super); + function RotateTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount << 1); + } + /** Sets the time and angle of the specified keyframe. */ + RotateTimeline.prototype.setFrame = function (frameIndex, time, degrees) { + frameIndex <<= 1; + this.frames[frameIndex] = time; + this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; + }; + RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { + var amount_1 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation; + while (amount_1 > 180) + amount_1 -= 360; + while (amount_1 < -180) + amount_1 += 360; + bone.rotation += amount_1 * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); + var prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); + var amount = frames[frame + RotateTimeline.ROTATION] - prevRotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + amount = bone.data.rotation + (prevRotation + amount * percent) - bone.rotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + bone.rotation += amount * alpha; + }; + RotateTimeline.ENTRIES = 2; + RotateTimeline.PREV_TIME = -2; + RotateTimeline.PREV_ROTATION = -1; + RotateTimeline.ROTATION = 1; + return RotateTimeline; + }(CurveTimeline)); + spine.RotateTimeline = RotateTimeline; + var TranslateTimeline = (function (_super) { + __extends(TranslateTimeline, _super); + function TranslateTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + TranslateTimeline.prototype.setFrame = function (frameIndex, time, x, y) { + frameIndex *= TranslateTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TranslateTimeline.X] = x; + this.frames[frameIndex + TranslateTimeline.Y] = y; + }; + TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { + bone.x += (bone.data.x + frames[frames.length + TranslateTimeline.PREV_X] - bone.x) * alpha; + bone.y += (bone.data.y + frames[frames.length + TranslateTimeline.PREV_Y] - bone.y) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); + var prevX = frames[frame + TranslateTimeline.PREV_X]; + var prevY = frames[frame + TranslateTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); + bone.x += (bone.data.x + prevX + (frames[frame + TranslateTimeline.X] - prevX) * percent - bone.x) * alpha; + bone.y += (bone.data.y + prevY + (frames[frame + TranslateTimeline.Y] - prevY) * percent - bone.y) * alpha; + }; + TranslateTimeline.ENTRIES = 3; + TranslateTimeline.PREV_TIME = -3; + TranslateTimeline.PREV_X = -2; + TranslateTimeline.PREV_Y = -1; + TranslateTimeline.X = 1; + TranslateTimeline.Y = 2; + return TranslateTimeline; + }(CurveTimeline)); + spine.TranslateTimeline = TranslateTimeline; + var ScaleTimeline = (function (_super) { + __extends(ScaleTimeline, _super); + function ScaleTimeline(frameCount) { + _super.call(this, frameCount); + } + ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { + bone.scaleX += (bone.data.scaleX * frames[frames.length + ScaleTimeline.PREV_X] - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * frames[frames.length + ScaleTimeline.PREV_Y] - bone.scaleY) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); + var prevX = frames[frame + ScaleTimeline.PREV_X]; + var prevY = frames[frame + ScaleTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); + bone.scaleX += (bone.data.scaleX * (prevX + (frames[frame + ScaleTimeline.X] - prevX) * percent) - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * (prevY + (frames[frame + ScaleTimeline.Y] - prevY) * percent) - bone.scaleY) * alpha; + }; + return ScaleTimeline; + }(TranslateTimeline)); + spine.ScaleTimeline = ScaleTimeline; + var ShearTimeline = (function (_super) { + __extends(ShearTimeline, _super); + function ShearTimeline(frameCount) { + _super.call(this, frameCount); + } + ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { + bone.shearX += (bone.data.shearX + frames[frames.length + ShearTimeline.PREV_X] - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + frames[frames.length + ShearTimeline.PREV_Y] - bone.shearY) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); + var prevX = frames[frame + ShearTimeline.PREV_X]; + var prevY = frames[frame + ShearTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); + bone.shearX += (bone.data.shearX + (prevX + (frames[frame + ShearTimeline.X] - prevX) * percent) - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + (prevY + (frames[frame + ShearTimeline.Y] - prevY) * percent) - bone.shearY) * alpha; + }; + return ShearTimeline; + }(TranslateTimeline)); + spine.ShearTimeline = ShearTimeline; + var ColorTimeline = (function (_super) { + __extends(ColorTimeline, _super); + function ColorTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + ColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a) { + frameIndex *= ColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + ColorTimeline.R] = r; + this.frames[frameIndex + ColorTimeline.G] = g; + this.frames[frameIndex + ColorTimeline.B] = b; + this.frames[frameIndex + ColorTimeline.A] = a; + }; + ColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var r = 0, g = 0, b = 0, a = 0; + if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { + var i = frames.length; + r = frames[i + ColorTimeline.PREV_R]; + g = frames[i + ColorTimeline.PREV_G]; + b = frames[i + ColorTimeline.PREV_B]; + a = frames[i + ColorTimeline.PREV_A]; + } + else { + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); + r = frames[frame + ColorTimeline.PREV_R]; + g = frames[frame + ColorTimeline.PREV_G]; + b = frames[frame + ColorTimeline.PREV_B]; + a = frames[frame + ColorTimeline.PREV_A]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + ColorTimeline.R] - r) * percent; + g += (frames[frame + ColorTimeline.G] - g) * percent; + b += (frames[frame + ColorTimeline.B] - b) * percent; + a += (frames[frame + ColorTimeline.A] - a) * percent; + } + var color = skeleton.slots[this.slotIndex].color; + if (alpha < 1) + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + else + color.set(r, g, b, a); + }; + ColorTimeline.ENTRIES = 5; + ColorTimeline.PREV_TIME = -5; + ColorTimeline.PREV_R = -4; + ColorTimeline.PREV_G = -3; + ColorTimeline.PREV_B = -2; + ColorTimeline.PREV_A = -1; + ColorTimeline.R = 1; + ColorTimeline.G = 2; + ColorTimeline.B = 3; + ColorTimeline.A = 4; + return ColorTimeline; + }(CurveTimeline)); + spine.ColorTimeline = ColorTimeline; + var AttachmentTimeline = (function () { + function AttachmentTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.attachmentNames = new Array(frameCount); + } + AttachmentTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time and value of the specified keyframe. */ + AttachmentTimeline.prototype.setFrame = function (frameIndex, time, attachmentName) { + this.frames[frameIndex] = time; + this.attachmentNames[frameIndex] = attachmentName; + }; + AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frameIndex = 0; + if (time >= frames[frames.length - 1]) + frameIndex = frames.length - 1; + else + frameIndex = Animation.binarySearch(frames, time, 1) - 1; + var attachmentName = this.attachmentNames[frameIndex]; + skeleton.slots[this.slotIndex] + .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + }; + return AttachmentTimeline; + }()); + spine.AttachmentTimeline = AttachmentTimeline; + var EventTimeline = (function () { + function EventTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.events = new Array(frameCount); + } + EventTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time of the specified keyframe. */ + EventTimeline.prototype.setFrame = function (frameIndex, event) { + this.frames[frameIndex] = event.time; + this.events[frameIndex] = event; + }; + /** Fires events for frames > lastTime and <= time. */ + EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + if (firedEvents == null) + return; + var frames = this.frames; + var frameCount = this.frames.length; + if (lastTime > time) { + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha); + lastTime = -1; + } + else if (lastTime >= frames[frameCount - 1]) + return; + if (time < frames[0]) + return; // Time is before first frame. + var frame = 0; + if (lastTime < frames[0]) + frame = 0; + else { + frame = Animation.binarySearch(frames, lastTime); + var frameTime = frames[frame]; + while (frame > 0) { + if (frames[frame - 1] != frameTime) + break; + frame--; + } + } + for (; frame < frameCount && time >= frames[frame]; frame++) + firedEvents.push(this.events[frame]); + }; + return EventTimeline; + }()); + spine.EventTimeline = EventTimeline; + var DrawOrderTimeline = (function () { + function DrawOrderTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.drawOrders = new Array(frameCount); + } + DrawOrderTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + DrawOrderTimeline.prototype.setFrame = function (frameIndex, time, drawOrder) { + this.frames[frameIndex] = time; + this.drawOrders[frameIndex] = drawOrder; + }; + DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frame = 0; + if (time >= frames[frames.length - 1]) + frame = frames.length - 1; + else + frame = Animation.binarySearch(frames, time) - 1; + var drawOrder = skeleton.drawOrder; + var slots = skeleton.slots; + var drawOrderToSetupIndex = this.drawOrders[frame]; + if (drawOrderToSetupIndex == null) + spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); + else { + for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) + drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + } + }; + return DrawOrderTimeline; + }()); + spine.DrawOrderTimeline = DrawOrderTimeline; + var DeformTimeline = (function (_super) { + __extends(DeformTimeline, _super); + function DeformTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount); + this.frameVertices = new Array(frameCount); + } + /** Sets the time of the specified keyframe. */ + DeformTimeline.prototype.setFrame = function (frameIndex, time, vertices) { + this.frames[frameIndex] = time; + this.frameVertices[frameIndex] = vertices; + }; + DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var slot = skeleton.slots[this.slotIndex]; + var slotAttachment = slot.getAttachment(); + if (!(slotAttachment instanceof spine.VertexAttachment) || !slotAttachment.applyDeform(this.attachment)) + return; + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frameVertices = this.frameVertices; + var vertexCount = frameVertices[0].length; + var verticesArray = slot.attachmentVertices; + if (verticesArray.length != vertexCount) + alpha = 1; // Don't mix from uninitialized slot vertices. + var vertices = spine.Utils.setArraySize(verticesArray, vertexCount); + if (time >= frames[frames.length - 1]) { + var lastVertices = frameVertices[frames.length - 1]; + if (alpha < 1) { + for (var i = 0; i < vertexCount; i++) + vertices[i] += (lastVertices[i] - vertices[i]) * alpha; + } + else + spine.Utils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount); + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time); + var prevVertices = frameVertices[frame - 1]; + var nextVertices = frameVertices[frame]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); + if (alpha < 1) { + for (var i = 0; i < vertexCount; i++) { + var prev = prevVertices[i]; + vertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha; + } + } + else { + for (var i = 0; i < vertexCount; i++) { + var prev = prevVertices[i]; + vertices[i] = prev + (nextVertices[i] - prev) * percent; + } + } + }; + return DeformTimeline; + }(CurveTimeline)); + spine.DeformTimeline = DeformTimeline; + var IkConstraintTimeline = (function (_super) { + __extends(IkConstraintTimeline, _super); + function IkConstraintTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); + } + /** Sets the time, mix and bend direction of the specified keyframe. */ + IkConstraintTimeline.prototype.setFrame = function (frameIndex, time, mix, bendDirection) { + frameIndex *= IkConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; + this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; + }; + IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; + if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { + constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]); + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); + var mix = frames[frame + IkConstraintTimeline.PREV_MIX]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); + constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]); + }; + IkConstraintTimeline.ENTRIES = 3; + IkConstraintTimeline.PREV_TIME = -3; + IkConstraintTimeline.PREV_MIX = -2; + IkConstraintTimeline.PREV_BEND_DIRECTION = -1; + IkConstraintTimeline.MIX = 1; + IkConstraintTimeline.BEND_DIRECTION = 2; + return IkConstraintTimeline; + }(CurveTimeline)); + spine.IkConstraintTimeline = IkConstraintTimeline; + var TransformConstraintTimeline = (function (_super) { + __extends(TransformConstraintTimeline, _super); + function TransformConstraintTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); + } + /** Sets the time and mixes of the specified keyframe. */ + TransformConstraintTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { + frameIndex *= TransformConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; + this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; + this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; + }; + TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; + if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { + var i = frames.length; + constraint.rotateMix += (frames[i + TransformConstraintTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + TransformConstraintTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + constraint.scaleMix += (frames[i + TransformConstraintTimeline.PREV_SCALE] - constraint.scaleMix) * alpha; + constraint.shearMix += (frames[i + TransformConstraintTimeline.PREV_SHEAR] - constraint.shearMix) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); + var rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; + var translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; + var scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; + var shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; + constraint.rotateMix += (rotate + (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + constraint.scaleMix += (scale + (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent - constraint.scaleMix) * alpha; + constraint.shearMix += (shear + (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent - constraint.shearMix) * alpha; + }; + TransformConstraintTimeline.ENTRIES = 5; + TransformConstraintTimeline.PREV_TIME = -5; + TransformConstraintTimeline.PREV_ROTATE = -4; + TransformConstraintTimeline.PREV_TRANSLATE = -3; + TransformConstraintTimeline.PREV_SCALE = -2; + TransformConstraintTimeline.PREV_SHEAR = -1; + TransformConstraintTimeline.ROTATE = 1; + TransformConstraintTimeline.TRANSLATE = 2; + TransformConstraintTimeline.SCALE = 3; + TransformConstraintTimeline.SHEAR = 4; + return TransformConstraintTimeline; + }(CurveTimeline)); + spine.TransformConstraintTimeline = TransformConstraintTimeline; + var PathConstraintPositionTimeline = (function (_super) { + __extends(PathConstraintPositionTimeline, _super); + function PathConstraintPositionTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + PathConstraintPositionTimeline.prototype.setFrame = function (frameIndex, time, value) { + frameIndex *= PathConstraintPositionTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; + }; + PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) { + var i = frames.length; + constraint.position += (frames[i + PathConstraintPositionTimeline.PREV_VALUE] - constraint.position) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); + var position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); + constraint.position += (position + (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent - constraint.position) * alpha; + }; + PathConstraintPositionTimeline.ENTRIES = 2; + PathConstraintPositionTimeline.PREV_TIME = -2; + PathConstraintPositionTimeline.PREV_VALUE = -1; + PathConstraintPositionTimeline.VALUE = 1; + return PathConstraintPositionTimeline; + }(CurveTimeline)); + spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; + var PathConstraintSpacingTimeline = (function (_super) { + __extends(PathConstraintSpacingTimeline, _super); + function PathConstraintSpacingTimeline(frameCount) { + _super.call(this, frameCount); + } + PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) { + var i = frames.length; + constraint.spacing += (frames[i + PathConstraintSpacingTimeline.PREV_VALUE] - constraint.spacing) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); + var spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); + constraint.spacing += (spacing + (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent - constraint.spacing) * alpha; + }; + return PathConstraintSpacingTimeline; + }(PathConstraintPositionTimeline)); + spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; + var PathConstraintMixTimeline = (function (_super) { + __extends(PathConstraintMixTimeline, _super); + function PathConstraintMixTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); + } + /** Sets the time and mixes of the specified keyframe. */ + PathConstraintMixTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix) { + frameIndex *= PathConstraintMixTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; + }; + PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { + var i = frames.length; + constraint.rotateMix += (frames[i + PathConstraintMixTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + PathConstraintMixTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); + var rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; + var translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); + constraint.rotateMix += (rotate + (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + }; + PathConstraintMixTimeline.ENTRIES = 3; + PathConstraintMixTimeline.PREV_TIME = -3; + PathConstraintMixTimeline.PREV_ROTATE = -2; + PathConstraintMixTimeline.PREV_TRANSLATE = -1; + PathConstraintMixTimeline.ROTATE = 1; + PathConstraintMixTimeline.TRANSLATE = 2; + return PathConstraintMixTimeline; + }(CurveTimeline)); + spine.PathConstraintMixTimeline = PathConstraintMixTimeline; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var AnimationState = (function () { + function AnimationState(data) { + if (data === void 0) { data = null; } + this.tracks = new Array(); + this.events = new Array(); + this.listeners = new Array(); + this.timeScale = 1; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + } + AnimationState.prototype.update = function (delta) { + delta *= this.timeScale; + for (var i = 0; i < this.tracks.length; i++) { + var current = this.tracks[i]; + if (current == null) + continue; + var next = current.next; + if (next != null) { + var nextTime = current.lastTime - next.delay; + if (nextTime >= 0) { + var nextDelta = delta * next.timeScale; + next.time = nextTime + nextDelta; // For start event to see correct time. + current.time += delta * current.timeScale; // For end event to see correct time. + this.setCurrent(i, next); + next.time -= nextDelta; // Prevent increasing time twice, below. + current = next; + } + } + else if (!current.loop && current.lastTime >= current.endTime) { + // End non-looping animation when it reaches its end time and there is no next entry. + this.clearTrack(i); + continue; + } + current.time += delta * current.timeScale; + if (current.previous != null) { + var previousDelta = delta * current.previous.timeScale; + current.previous.time += previousDelta; + current.mixTime += previousDelta; + } + } + }; + AnimationState.prototype.apply = function (skeleton) { + var events = this.events; + var listenerCount = this.listeners.length; + for (var i = 0; i < this.tracks.length; i++) { + var current = this.tracks[i]; + if (current == null) + continue; + events.length = 0; + var time = current.time; + var lastTime = current.lastTime; + var endTime = current.endTime; + var loop = current.loop; + if (!loop && time > endTime) + time = endTime; + var previous = current.previous; + if (previous == null) + current.animation.mix(skeleton, lastTime, time, loop, events, current.mix); + else { + var previousTime = previous.time; + if (!previous.loop && previousTime > previous.endTime) + previousTime = previous.endTime; + previous.animation.apply(skeleton, previousTime, previousTime, previous.loop, null); + var alpha = current.mixTime / current.mixDuration * current.mix; + if (alpha >= 1) { + alpha = 1; + current.previous = null; + } + current.animation.mix(skeleton, lastTime, time, loop, events, alpha); + } + for (var ii = 0, nn = events.length; ii < nn; ii++) { + var event_1 = events[ii]; + if (current.listener != null) + current.listener.event(i, event_1); + for (var iii = 0; iii < listenerCount; iii++) + this.listeners[iii].event(i, event_1); + } + // Check if completed the animation or a loop iteration. + if (loop ? (lastTime % endTime > time % endTime) : (lastTime < endTime && time >= endTime)) { + var count = spine.MathUtils.toInt(time / endTime); + if (current.listener != null) + current.listener.complete(i, count); + for (var ii = 0, nn = this.listeners.length; ii < nn; ii++) + this.listeners[ii].complete(i, count); + } + current.lastTime = current.time; + } + }; + AnimationState.prototype.clearTracks = function () { + for (var i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + }; + AnimationState.prototype.clearTrack = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return; + var current = this.tracks[trackIndex]; + if (current == null) + return; + if (current.listener != null) + current.listener.end(trackIndex); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(trackIndex); + this.tracks[trackIndex] = null; + this.freeAll(current); + }; + AnimationState.prototype.freeAll = function (entry) { + while (entry != null) { + var next = entry.next; + entry = next; + } + }; + AnimationState.prototype.expandToIndex = function (index) { + if (index < this.tracks.length) + return this.tracks[index]; + spine.Utils.setArraySize(this.tracks, index - this.tracks.length + 1, null); + this.tracks.length = index + 1; + return null; + }; + AnimationState.prototype.setCurrent = function (index, entry) { + var current = this.expandToIndex(index); + if (current != null) { + var previous = current.previous; + current.previous = null; + if (current.listener != null) + current.listener.end(index); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(index); + entry.mixDuration = this.data.getMix(current.animation, entry.animation); + if (entry.mixDuration > 0) { + entry.mixTime = 0; + // If a mix is in progress, mix from the closest animation. + if (previous != null && current.mixTime / current.mixDuration < 0.5) { + entry.previous = previous; + previous = current; + } + else + entry.previous = current; + } + } + this.tracks[index] = entry; + if (entry.listener != null) + entry.listener.start(index); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].start(index); + }; + /** @see #setAnimation(int, Animation, boolean) */ + AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + }; + /** Set the current animation. Any queued animations are cleared. */ + AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { + var current = this.expandToIndex(trackIndex); + if (current != null) + this.freeAll(current.next); + var entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + this.setCurrent(trackIndex, entry); + return entry; + }; + /** {@link #addAnimation(int, Animation, boolean, float)} */ + AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + }; + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { + var entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + var last = this.expandToIndex(trackIndex); + if (last != null) { + while (last.next != null) + last = last.next; + last.next = entry; + } + else + this.tracks[trackIndex] = entry; + if (delay <= 0) { + if (last != null) + delay += last.endTime - this.data.getMix(last.animation, animation); + else + delay = 0; + } + entry.delay = delay; + return entry; + }; + /** @return May be null. */ + AnimationState.prototype.getCurrent = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return null; + return this.tracks[trackIndex]; + }; + /** Adds a listener to receive events for all animations. */ + AnimationState.prototype.addListener = function (listener) { + if (listener == null) + throw new Error("listener cannot be null."); + this.listeners.push(listener); + }; + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + AnimationState.prototype.removeListener = function (listener) { + var index = this.listeners.indexOf(listener); + if (index >= 0) + this.listeners.splice(index, 1); + }; + AnimationState.prototype.clearListeners = function () { + this.listeners.length = 0; + }; + return AnimationState; + }()); + spine.AnimationState = AnimationState; + var TrackEntry = (function () { + function TrackEntry() { + this.loop = false; + this.delay = 0; + this.time = 0; + this.lastTime = -1; + this.endTime = 0; + this.timeScale = 1; + this.mixTime = 0; + this.mixDuration = 0; + this.mix = 1; + } + TrackEntry.prototype.reset = function () { + this.next = null; + this.previous = null; + this.animation = null; + this.listener = null; + this.timeScale = 1; + this.lastTime = -1; // Trigger events on frame zero. + this.time = 0; + }; + /** Returns true if the current time is greater than the end time, regardless of looping. */ + TrackEntry.prototype.isComplete = function () { + return this.time >= this.endTime; + }; + return TrackEntry; + }()); + spine.TrackEntry = TrackEntry; + var AnimationStateAdapter = (function () { + function AnimationStateAdapter() { + } + AnimationStateAdapter.prototype.event = function (trackIndex, event) { + }; + AnimationStateAdapter.prototype.complete = function (trackIndex, loopCount) { + }; + AnimationStateAdapter.prototype.start = function (trackIndex) { + }; + AnimationStateAdapter.prototype.end = function (trackIndex) { + }; + return AnimationStateAdapter; + }()); + spine.AnimationStateAdapter = AnimationStateAdapter; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var AnimationStateData = (function () { + function AnimationStateData(skeletonData) { + this.animationToMixTime = {}; + this.defaultMix = 0; + if (skeletonData == null) + throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + AnimationStateData.prototype.setMix = function (fromName, toName, duration) { + var from = this.skeletonData.findAnimation(fromName); + if (from == null) + throw new Error("Animation not found: " + fromName); + var to = this.skeletonData.findAnimation(toName); + if (to == null) + throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + }; + AnimationStateData.prototype.setMixWith = function (from, to, duration) { + if (from == null) + throw new Error("from cannot be null."); + if (to == null) + throw new Error("to cannot be null."); + var key = from.name + to.name; + this.animationToMixTime[key] = duration; + }; + AnimationStateData.prototype.getMix = function (from, to) { + var key = from.name + to.name; + var value = this.animationToMixTime[key]; + return value === undefined ? this.defaultMix : value; + }; + return AnimationStateData; + }()); + spine.AnimationStateData = AnimationStateData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(spine.BlendMode || (spine.BlendMode = {})); + var BlendMode = spine.BlendMode; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Bone = (function () { + /** @param parent May be null. */ + function Bone(data, skeleton, parent) { + this.children = new Array(); + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 0; + this.scaleY = 0; + this.shearX = 0; + this.shearY = 0; + this.appliedRotation = 0; + this.a = 0; + this.b = 0; + this.worldX = 0; + this.c = 0; + this.d = 0; + this.worldY = 0; + this.worldSignX = 0; + this.worldSignY = 0; + this.sorted = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + Bone.prototype.update = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and this bone's local transform. */ + Bone.prototype.updateWorldTransform = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and the specified local transform. */ + Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { + this.appliedRotation = rotation; + var rotationY = rotation + 90 + shearY; + var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX, lb = spine.MathUtils.cosDeg(rotationY) * scaleY; + var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX, ld = spine.MathUtils.sinDeg(rotationY) * scaleY; + var parent = this.parent; + if (parent == null) { + var skeleton = this.skeleton; + if (skeleton.flipX) { + x = -x; + la = -la; + lb = -lb; + } + if (skeleton.flipY) { + y = -y; + lc = -lc; + ld = -ld; + } + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + this.worldX = x; + this.worldY = y; + this.worldSignX = spine.MathUtils.signum(scaleX); + this.worldSignY = spine.MathUtils.signum(scaleY); + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + this.worldSignX = parent.worldSignX * spine.MathUtils.signum(scaleX); + this.worldSignY = parent.worldSignY * spine.MathUtils.signum(scaleY); + if (this.data.inheritRotation && this.data.inheritScale) { + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else { + if (this.data.inheritRotation) { + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + var cos = spine.MathUtils.cosDeg(parent.appliedRotation), sin = spine.MathUtils.sinDeg(parent.appliedRotation); + var temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + if (!parent.data.inheritRotation) + break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else if (this.data.inheritScale) { + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + var cos = spine.MathUtils.cosDeg(parent.appliedRotation), sin = spine.MathUtils.sinDeg(parent.appliedRotation); + var psx = parent.scaleX, psy = parent.scaleY; + var za = cos * psx, zb = sin * psy, zc = sin * psx, zd = cos * psy; + var temp = pa * za + pb * zc; + pb = pb * zd - pa * zb; + pa = temp; + temp = pc * za + pd * zc; + pd = pd * zd - pc * zb; + pc = temp; + if (psx >= 0) + sin = -sin; + temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + if (!parent.data.inheritScale) + break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else { + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + } + if (this.skeleton.flipX) { + this.a = -this.a; + this.b = -this.b; + } + if (this.skeleton.flipY) { + this.c = -this.c; + this.d = -this.d; + } + } + }; + Bone.prototype.setToSetupPose = function () { + var data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + }; + Bone.prototype.getWorldRotationX = function () { + return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldRotationY = function () { + return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldScaleX = function () { + return Math.sqrt(this.a * this.a + this.b * this.b) * this.worldSignX; + }; + Bone.prototype.getWorldScaleY = function () { + return Math.sqrt(this.c * this.c + this.d * this.d) * this.worldSignY; + }; + Bone.prototype.worldToLocalRotationX = function () { + var parent = this.parent; + if (parent == null) + return this.rotation; + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, a = this.a, c = this.c; + return Math.atan2(pa * c - pc * a, pd * a - pb * c) * spine.MathUtils.radDeg; + }; + Bone.prototype.worldToLocalRotationY = function () { + var parent = this.parent; + if (parent == null) + return this.rotation; + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, b = this.b, d = this.d; + return Math.atan2(pa * d - pc * b, pd * b - pb * d) * spine.MathUtils.radDeg; + }; + Bone.prototype.rotateWorld = function (degrees) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + }; + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + Bone.prototype.updateLocalTransform = function () { + var parent = this.parent; + if (parent == null) { + this.x = this.worldX; + this.y = this.worldY; + this.rotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + this.scaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.scaleY = Math.sqrt(this.b * this.b + this.d * this.d); + var det = this.a * this.d - this.b * this.c; + this.shearX = 0; + this.shearY = Math.atan2(this.a * this.b + this.c * this.d, det) * spine.MathUtils.radDeg; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + var pid = 1 / (pa * pd - pb * pc); + var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.x = (dx * pd * pid - dy * pb * pid); + this.y = (dy * pa * pid - dx * pc * pid); + var ia = pid * pd; + var id = pid * pa; + var ib = pid * pb; + var ic = pid * pc; + var ra = ia * this.a - ib * this.c; + var rb = ia * this.b - ib * this.d; + var rc = id * this.c - ic * this.a; + var rd = id * this.d - ic * this.b; + this.shearX = 0; + this.scaleX = Math.sqrt(ra * ra + rc * rc); + if (this.scaleX > 0.0001) { + var det = ra * rd - rb * rc; + this.scaleY = det / this.scaleX; + this.shearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; + this.rotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; + } + else { + this.scaleX = 0; + this.scaleY = Math.sqrt(rb * rb + rd * rd); + this.shearY = 0; + this.rotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; + } + this.appliedRotation = this.rotation; + }; + Bone.prototype.worldToLocal = function (world) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var invDet = 1 / (a * d - b * c); + var x = world.x - this.worldX, y = world.y - this.worldY; + world.x = (x * d * invDet - y * b * invDet); + world.y = (y * a * invDet - x * c * invDet); + return world; + }; + Bone.prototype.localToWorld = function (local) { + var x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + }; + return Bone; + }()); + spine.Bone = Bone; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var BoneData = (function () { + function BoneData(index, name, parent) { + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 1; + this.scaleY = 1; + this.shearX = 0; + this.shearY = 0; + this.inheritRotation = true; + this.inheritScale = true; + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + return BoneData; + }()); + spine.BoneData = BoneData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Event = (function () { + function Event(time, data) { + if (data == null) + throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + return Event; + }()); + spine.Event = Event; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var EventData = (function () { + function EventData(name) { + this.name = name; + } + return EventData; + }()); + spine.EventData = EventData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var IkConstraint = (function () { + function IkConstraint(data, skeleton) { + this.mix = 1; + this.bendDirection = 0; + this.level = 0; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.bendDirection = data.bendDirection; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + IkConstraint.prototype.apply = function () { + this.update(); + }; + IkConstraint.prototype.update = function () { + var target = this.target; + var bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.mix); + break; + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix); + break; + } + }; + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + IkConstraint.prototype.apply1 = function (bone, targetX, targetY, alpha) { + var pp = bone.parent; + var id = 1 / (pp.a * pp.d - pp.b * pp.c); + var x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * pp.d - y * pp.b) * id - bone.x, ty = (y * pp.a - x * pp.c) * id - bone.y; + var rotationIK = Math.atan2(ty, tx) * spine.MathUtils.radDeg - bone.shearX - bone.rotation; + if (bone.scaleX < 0) + rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK < -180) + rotationIK += 360; + bone.updateWorldTransformWith(bone.x, bone.y, bone.rotation + rotationIK * alpha, bone.scaleX, bone.scaleY, bone.shearX, bone.shearY); + }; + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, alpha) { + if (alpha == 0) { + child.updateWorldTransform(); + return; + } + var px = parent.x, py = parent.y, psx = parent.scaleX, psy = parent.scaleY, csx = child.scaleX; + var os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } + else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } + else + os2 = 0; + var cx = child.x, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + var u = Math.abs(psx - psy) <= 0.0001; + if (!u) { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } + else { + cy = child.y; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } + var pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + var id = 1 / (a * d - b * c), x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + x = cwx - pp.worldX; + y = cwy - pp.worldY; + var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0; + outer: if (u) { + l2 *= psx; + var cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) + cos = -1; + else if (cos > 1) + cos = 1; + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } + else { + a = psx * l2; + b = psy * l2; + var aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + var c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + var q = Math.sqrt(d); + if (c1 < 0) + q = -q; + q = -(c1 + q) / 2; + var r0 = q / c2, r1 = c / q; + var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; + var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; + x = l1 + a; + d = x * x; + if (d > maxDist) { + maxAngle = 0; + maxDist = d; + maxX = x; + } + x = l1 - a; + d = x * x; + if (d < minDist) { + minAngle = spine.MathUtils.PI; + minDist = d; + minX = x; + } + var angle = Math.acos(-a * l1 / (aa - bb)); + x = a * Math.cos(angle) + l1; + y = b * Math.sin(angle); + d = x * x + y * y; + if (d < minDist) { + minAngle = angle; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = angle; + maxDist = d; + maxX = x; + maxY = y; + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } + else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + var os = Math.atan2(cy, cx) * s2; + var rotation = parent.rotation; + a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 < -180) + a1 += 360; + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.scaleX, parent.scaleY, 0, 0); + rotation = child.rotation; + a2 = ((a2 + os) * spine.MathUtils.radDeg - child.shearX) * s2 + os2 - rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 < -180) + a2 += 360; + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.scaleX, child.scaleY, child.shearX, child.shearY); + }; + return IkConstraint; + }()); + spine.IkConstraint = IkConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var IkConstraintData = (function () { + function IkConstraintData(name) { + this.bones = new Array(); + this.bendDirection = 1; + this.mix = 1; + this.name = name; + } + return IkConstraintData; + }()); + spine.IkConstraintData = IkConstraintData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathConstraint = (function () { + function PathConstraint(data, skeleton) { + this.position = 0; + this.spacing = 0; + this.rotateMix = 0; + this.translateMix = 0; + this.spaces = new Array(); + this.positions = new Array(); + this.world = new Array(); + this.curves = new Array(); + this.lengths = new Array(); + this.segments = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0, n = data.bones.length; i < n; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + } + PathConstraint.prototype.apply = function () { + this.update(); + }; + PathConstraint.prototype.update = function () { + var attachment = this.target.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) + return; + var rotateMix = this.rotateMix, translateMix = this.translateMix; + var translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) + return; + var data = this.data; + var spacingMode = data.spacingMode; + var lengthSpacing = spacingMode == spine.SpacingMode.Length; + var rotateMode = data.rotateMode; + var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; + var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + var bones = this.bones; + var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; + var spacing = this.spacing; + if (scale || lengthSpacing) { + if (scale) + lengths = spine.Utils.setArraySize(this.lengths, boneCount); + for (var i = 0, n = spacesCount - 1; i < n;) { + var bone = bones[i]; + var length_1 = bone.data.length, x = length_1 * bone.a, y = length_1 * bone.c; + length_1 = Math.sqrt(x * x + y * y); + if (scale) + lengths[i] = length_1; + spaces[++i] = lengthSpacing ? Math.max(0, length_1 + spacing) : spacing; + } + } + else { + for (var i = 1; i < spacesCount; i++) + spaces[i] = spacing; + } + var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent); + var skeleton = this.target.bone.skeleton; + var skeletonX = skeleton.x, skeletonY = skeleton.y; + var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + var tip = rotateMode == spine.RotateMode.Chain && offsetRotation == 0; + for (var i = 0, p = 3; i < boneCount; i++, p += 3) { + var bone = bones[i]; + bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; + bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; + var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + var length_2 = lengths[i]; + if (length_2 != 0) { + var s = (Math.sqrt(dx * dx + dy * dy) / length_2 - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a) - offsetRotation * spine.MathUtils.degRad; + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + var length_3 = bone.data.length; + boneX += (length_3 * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length_3 * (sin * a + cos * c) - dy) * rotateMix; + } + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + } + }; + PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents, percentPosition, percentSpacing) { + var target = this.target; + var position = this.position; + var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; + var closed = path.closed; + var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + if (!path.constantSpeed) { + var lengths = path.lengths; + curveCount -= closed ? 1 : 2; + var pathLength_1 = lengths[curveCount]; + if (percentPosition) + position *= pathLength_1; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength_1; + } + world = spine.Utils.setArraySize(this.world, 8); + for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength_1; + if (p < 0) + p += pathLength_1; + curve = 0; + } + else if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVerticesWith(target, 2, 4, world, 0); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength_1) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVerticesWith(target, verticesLength - 6, 4, world, 0); + } + this.addAfterPosition(p - pathLength_1, world, 0, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_4 = lengths[curve]; + if (p > length_4) + continue; + if (curve == 0) + p /= length_4; + else { + var prev = lengths[curve - 1]; + p = (p - prev) / (length_4 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVerticesWith(target, verticesLength - 4, 4, world, 0); + path.computeWorldVerticesWith(target, 0, 4, world, 4); + } + else + path.computeWorldVerticesWith(target, curve * 6 + 2, 8, world, 0); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + // World vertices. + if (closed) { + verticesLength += 2; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength - 4, world, 0); + path.computeWorldVerticesWith(target, 0, 2, world, verticesLength - 4); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } + else { + curveCount--; + verticesLength -= 4; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength, world, 0); + } + // Curve lengths. + var curves = spine.Utils.setArraySize(this.curves, curveCount); + var pathLength = 0; + var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (var i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) + position *= pathLength; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + var segments = this.segments; + var curveLength = 0; + for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength; + if (p < 0) + p += pathLength; + curve = 0; + } + else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_5 = curves[curve]; + if (p > length_5) + continue; + if (curve == 0) + p /= length_5; + else { + var prev = curves[curve - 1]; + p = (p - prev) / (length_5 - prev); + } + break; + } + // Curve segment lengths. + if (curve != prevCurve) { + prevCurve = curve; + var ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + // Weight by segment length. + p *= curveLength; + for (;; segment++) { + var length_6 = segments[segment]; + if (p > length_6) + continue; + if (segment == 0) + p /= length_6; + else { + var prev = segments[segment - 1]; + p = segment + (p - prev) / (length_6 - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + }; + PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { + var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { + var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (p == 0) + p = 0.0001; + var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) + out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + }; + PathConstraint.NONE = -1; + PathConstraint.BEFORE = -2; + PathConstraint.AFTER = -3; + return PathConstraint; + }()); + spine.PathConstraint = PathConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathConstraintData = (function () { + function PathConstraintData(name) { + this.bones = new Array(); + this.name = name; + } + return PathConstraintData; + }()); + spine.PathConstraintData = PathConstraintData; + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(spine.PositionMode || (spine.PositionMode = {})); + var PositionMode = spine.PositionMode; + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + })(spine.SpacingMode || (spine.SpacingMode = {})); + var SpacingMode = spine.SpacingMode; + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(spine.RotateMode || (spine.RotateMode = {})); + var RotateMode = spine.RotateMode; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Skeleton = (function () { + function Skeleton(data) { + this._updateCache = new Array(); + this.time = 0; + this.flipX = false; + this.flipY = false; + this.x = 0; + this.y = 0; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) { + var boneData = data.bones[i]; + var bone = void 0; + if (boneData.parent == null) + bone = new spine.Bone(boneData, this, null); + else { + var parent_1 = this.bones[boneData.parent.index]; + bone = new spine.Bone(boneData, this, parent_1); + parent_1.children.push(bone); + } + this.bones.push(bone); + } + this.slots = new Array(); + this.drawOrder = new Array(); + for (var i = 0; i < data.slots.length; i++) { + var slotData = data.slots[i]; + var bone = this.bones[slotData.boneData.index]; + var slot = new spine.Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + this.ikConstraints = new Array(); + this.ikConstraintsSorted = new Array(); + for (var i = 0; i < data.ikConstraints.length; i++) { + var ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); + } + this.transformConstraints = new Array(); + for (var i = 0; i < data.transformConstraints.length; i++) { + var transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); + } + this.pathConstraints = new Array(); + for (var i = 0; i < data.pathConstraints.length; i++) { + var pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); + } + this.color = new spine.Color(1, 1, 1, 1); + this.updateCache(); + } + Skeleton.prototype.updateCache = function () { + var updateCache = this._updateCache; + updateCache.length = 0; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].sorted = false; + // IK first, lowest hierarchy depth first. + var ikConstraints = this.ikConstraintsSorted; + ikConstraints.length = 0; + for (var i = 0; i < this.ikConstraints.length; i++) + ikConstraints.push(this.ikConstraints[i]); + var ikCount = ikConstraints.length; + for (var i = 0, level = 0, n = ikCount; i < n; i++) { + var ik = ikConstraints[i]; + var bone = ik.bones[0].parent; + for (level = 0; bone != null; level++) + bone = bone.parent; + ik.level = level; + } + for (var i = 1, ii = 0; i < ikCount; i++) { + var ik = ikConstraints[i]; + var level = ik.level; + for (ii = i - 1; ii >= 0; ii--) { + var other = ikConstraints[ii]; + if (other.level < level) + break; + ikConstraints[ii + 1] = other; + } + ikConstraints[ii + 1] = ik; + } + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + var target = constraint.target; + this.sortBone(target); + var constrained = constraint.bones; + var parent_2 = constrained[0]; + this.sortBone(parent_2); + updateCache.push(constraint); + this.sortReset(parent_2.children); + constrained[constrained.length - 1].sorted = true; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var slot = constraint.target; + var slotIndex = slot.data.index; + var slotBone = slot.bone; + if (this.skin != null) + this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) + this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (var ii = 0, nn = this.data.skins.length; ii < nn; ii++) + this.sortPathConstraintAttachment(this.data.skins[ii], slotIndex, slotBone); + var attachment = slot.getAttachment(); + if (attachment instanceof spine.PathAttachment) + this.sortPathConstraintAttachmentWith(attachment, slotBone); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + this.sortBone(constraint.target); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + for (var i = 0, n = bones.length; i < n; i++) + this.sortBone(bones[i]); + }; + Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { + var attachments = skin.attachments[slotIndex]; + if (!attachments) + return; + for (var key in attachments) { + this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + } + }; + Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { + if (!(attachment instanceof spine.PathAttachment)) + return; + var pathBones = attachment.bones; + if (pathBones == null) + this.sortBone(slotBone); + else { + var bones = this.bones; + for (var i = 0; i < pathBones.length; i++) { + var boneIndex = pathBones[i]; + this.sortBone(bones[boneIndex]); + } + } + }; + Skeleton.prototype.sortBone = function (bone) { + if (bone.sorted) + return; + var parent = bone.parent; + if (parent != null) + this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + }; + Skeleton.prototype.sortReset = function (bones) { + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.sorted) + this.sortReset(bone.children); + bone.sorted = false; + } + }; + /** Updates the world transform for each bone and applies constraints. */ + Skeleton.prototype.updateWorldTransform = function () { + var updateCache = this._updateCache; + for (var i = 0, n = updateCache.length; i < n; i++) + updateCache[i].update(); + }; + /** Sets the bones, constraints, and slots to their setup pose values. */ + Skeleton.prototype.setToSetupPose = function () { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + }; + /** Sets the bones and constraints to their setup pose values. */ + Skeleton.prototype.setBonesToSetupPose = function () { + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].setToSetupPose(); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + constraint.bendDirection = constraint.data.bendDirection; + constraint.mix = constraint.data.mix; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + var data = constraint.data; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + } + }; + Skeleton.prototype.setSlotsToSetupPose = function () { + var slots = this.slots; + spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (var i = 0, n = slots.length; i < n; i++) + slots[i].setToSetupPose(); + }; + /** @return May return null. */ + Skeleton.prototype.getRootBone = function () { + if (this.bones.length == 0) + return null; + return this.bones[0]; + }; + /** @return May be null. */ + Skeleton.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.data.name == boneName) + return bone; + } + return null; + }; + /** @return -1 if the bone was not found. */ + Skeleton.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name == boneName) + return i; + return -1; + }; + /** @return May be null. */ + Skeleton.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) + return slot; + } + return null; + }; + /** @return -1 if the bone was not found. */ + Skeleton.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name == slotName) + return i; + return -1; + }; + /** Sets a skin by name. + * @see #setSkin(Skin) */ + Skeleton.prototype.setSkinByName = function (skinName) { + var skin = this.data.findSkin(skinName); + if (skin == null) + throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + }; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + Skeleton.prototype.setSkin = function (newSkin) { + if (newSkin != null) { + if (this.skin != null) + newSkin.attachAll(this, this.skin); + else { + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var name_1 = slot.data.attachmentName; + if (name_1 != null) { + var attachment = newSkin.getAttachment(i, name_1); + if (attachment != null) + slot.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + }; + /** @return May be null. */ + Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + }; + /** @return May be null. */ + Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { + if (attachmentName == null) + throw new Error("attachmentName cannot be null."); + if (this.skin != null) { + var attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (attachment != null) + return attachment; + } + if (this.data.defaultSkin != null) + return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + }; + /** @param attachmentName May be null. */ + Skeleton.prototype.setAttachment = function (slotName, attachmentName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) { + var attachment = null; + if (attachmentName != null) { + attachment = this.getAttachment(i, attachmentName); + if (attachment == null) + throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + }; + /** @return May be null. */ + Skeleton.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) + return ikConstraint; + } + return null; + }; + /** @return May be null. */ + Skeleton.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** @return May be null. */ + Skeleton.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + Skeleton.prototype.getBounds = function (offset, size) { + if (offset == null) + throw new Error("offset cannot be null."); + if (size == null) + throw new Error("size cannot be null."); + var drawOrder = this.drawOrder; + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var vertices = null; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) + vertices = attachment.updateWorldVertices(slot, false); + else if (attachment instanceof spine.MeshAttachment) + vertices = attachment.updateWorldVertices(slot, true); + if (vertices != null) { + for (var ii = 0, nn = vertices.length; ii < nn; ii += 5) { + var x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + }; + Skeleton.prototype.update = function (delta) { + this.time += delta; + }; + return Skeleton; + }()); + spine.Skeleton = Skeleton; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonBounds = (function () { + function SkeletonBounds() { + this.minX = 0; + this.minY = 0; + this.maxX = 0; + this.maxY = 0; + this.boundingBoxes = new Array(); + this.polygons = new Array(); + this._polygonPool = new spine.Pool(function () { + return spine.Utils.newFloatArray(16); + }); + } + SkeletonBounds.prototype.update = function (skeleton, updateAabb) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + var boundingBoxes = this.boundingBoxes; + var polygons = this.polygons; + var polygonPool = this._polygonPool; + var slots = skeleton.slots; + var slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (var i = 0; i < slotCount; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.BoundingBoxAttachment) { + var boundingBox = attachment; + boundingBoxes.push(boundingBox); + var polygon = polygonPool.obtain(); + if (polygon.length != boundingBox.worldVerticesLength) { + polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); + } + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, polygon); + } + } + if (updateAabb) + this.aabbCompute(); + }; + SkeletonBounds.prototype.aabbCompute = function () { + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) { + var polygon = polygons[i]; + var vertices = polygon; + for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { + var x = vertices[ii]; + var y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + }; + /** Returns true if the axis aligned bounding box contains the point. */ + SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + }; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { + var minX = this.minX; + var minY = this.minY; + var maxX = this.maxX; + var maxY = this.maxY; + if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) + return false; + var m = (y2 - y1) / (x2 - x1); + var y = m * (minX - x1) + y1; + if (y > minY && y < maxY) + return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) + return true; + var x = (minY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + return false; + }; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + }; + /** 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. */ + SkeletonBounds.prototype.containsPoint = function (x, y) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains the point. */ + SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { + var vertices = polygon; + var nn = polygon.length; + var prevIndex = nn - 2; + var inside = false; + for (var ii = 0; ii < nn; ii += 2) { + var vertexY = vertices[ii + 1]; + var prevY = vertices[prevIndex + 1]; + if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { + var vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) + inside = !inside; + } + prevIndex = ii; + } + return inside; + }; + /** Returns the first bounding box attachment that contains any part of 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. */ + SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains any part of the line segment. */ + SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { + var vertices = polygon; + var nn = polygon.length; + var width12 = x1 - x2, height12 = y1 - y2; + var det1 = x1 * y2 - y1 * x2; + var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (var ii = 0; ii < nn; ii += 2) { + var x4 = vertices[ii], y4 = vertices[ii + 1]; + var det2 = x3 * y4 - y3 * x4; + var width34 = x3 - x4, height34 = y3 - y4; + var det3 = width12 * height34 - height12 * width34; + var x = (det1 * width34 - width12 * det2) / det3; + if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { + var y = (det1 * height34 - height12 * det2) / det3; + if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) + return true; + } + x3 = x4; + y3 = y4; + } + return false; + }; + /** Returns the polygon for the specified bounding box, or null. */ + SkeletonBounds.prototype.getPolygon = function (boundingBox) { + if (boundingBox == null) + throw new Error("boundingBox cannot be null."); + var index = this.boundingBoxes.indexOf(boundingBox); + return index == -1 ? null : this.polygons[index]; + }; + return SkeletonBounds; + }()); + spine.SkeletonBounds = SkeletonBounds; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonData = (function () { + function SkeletonData() { + this.bones = new Array(); // Ordered parents first. + this.slots = new Array(); // Setup pose draw order. + this.skins = new Array(); + this.events = new Array(); + this.animations = new Array(); + this.ikConstraints = new Array(); + this.transformConstraints = new Array(); + this.pathConstraints = new Array(); + } + SkeletonData.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.name == boneName) + return bone; + } + return null; + }; + SkeletonData.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].name == boneName) + return i; + return -1; + }; + SkeletonData.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.name == slotName) + return slot; + } + return null; + }; + SkeletonData.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].name == slotName) + return i; + return -1; + }; + SkeletonData.prototype.findSkin = function (skinName) { + if (skinName == null) + throw new Error("skinName cannot be null."); + var skins = this.skins; + for (var i = 0, n = skins.length; i < n; i++) { + var skin = skins[i]; + if (skin.name == skinName) + return skin; + } + return null; + }; + SkeletonData.prototype.findEvent = function (eventDataName) { + if (eventDataName == null) + throw new Error("eventDataName cannot be null."); + var events = this.events; + for (var i = 0, n = events.length; i < n; i++) { + var event_2 = events[i]; + if (event_2.name == eventDataName) + return event_2; + } + return null; + }; + SkeletonData.prototype.findAnimation = function (animationName) { + if (animationName == null) + throw new Error("animationName cannot be null."); + var animations = this.animations; + for (var i = 0, n = animations.length; i < n; i++) { + var animation = animations[i]; + if (animation.name == animationName) + return animation; + } + return null; + }; + SkeletonData.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraintIndex = function (pathConstraintName) { + if (pathConstraintName == null) + throw new Error("pathConstraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) + if (pathConstraints[i].name == pathConstraintName) + return i; + return -1; + }; + return SkeletonData; + }()); + spine.SkeletonData = SkeletonData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonJson = (function () { + function SkeletonJson(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonJson.prototype.readSkeletonData = function (json) { + var scale = this.scale; + var skeletonData = new spine.SkeletonData(); + var root = JSON.parse(json); + // Skeleton + var skeletonMap = root.skeleton; + if (skeletonMap != null) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.imagesPath = skeletonMap.images; + } + // Bones + if (root.bones) { + for (var i = 0; i < root.bones.length; i++) { + var boneMap = root.bones[i]; + var parent_3 = null; + var parentName = this.getValue(boneMap, "parent", null); + if (parentName != null) { + parent_3 = skeletonData.findBone(parentName); + if (parent_3 == null) + throw new Error("Parent bone not found: " + parentName); + } + var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_3); + data.length = this.getValue(boneMap, "length", 0) * scale; + data.x = this.getValue(boneMap, "x", 0) * scale; + data.y = this.getValue(boneMap, "y", 0) * scale; + data.rotation = this.getValue(boneMap, "rotation", 0); + data.scaleX = this.getValue(boneMap, "scaleX", 1); + data.scaleY = this.getValue(boneMap, "scaleY", 1); + data.shearX = this.getValue(boneMap, "shearX", 0); + data.shearY = this.getValue(boneMap, "shearY", 0); + data.inheritRotation = this.getValue(boneMap, "inheritRotation", true); + data.inheritScale = this.getValue(boneMap, "inheritScale", true); + skeletonData.bones.push(data); + } + } + // Slots. + if (root.slots) { + for (var i = 0; i < root.slots.length; i++) { + var slotMap = root.slots[i]; + var slotName = slotMap.name; + var boneName = slotMap.bone; + var boneData = skeletonData.findBone(boneName); + if (boneData == null) + throw new Error("Slot bone not found: " + boneName); + var data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); + var color = slotMap.color ? slotMap.color : null; + if (color != null) + data.color.setFromString(color); + data.attachmentName = this.getValue(slotMap, "attachment", null); + data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + } + // IK constraints + if (root.ik) { + for (var i = 0; i < root.ik.length; i++) { + var constraintMap = root.ik[i]; + var data = new spine.IkConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("IK bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("IK target bone not found: " + targetName); + data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.mix = constraintMap.mix ? constraintMap.mix : 1; + skeletonData.ikConstraints.push(data); + } + } + // Transform constraints. + if (root.transform) { + for (var i = 0; i < root.transform.length; i++) { + var constraintMap = root.transform[i]; + var data = new spine.TransformConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("Transform constraint target bone not found: " + targetName); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.offsetX = this.getValue(constraintMap, "x", 0) * scale; + data.offsetY = this.getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); + data.offsetShearY = this.getValue(constraintMap, "shearY", 0); + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); + data.shearMix = this.getValue(constraintMap, "shearMix", 1); + skeletonData.transformConstraints.push(data); + } + } + // Path constraints. + if (root.path) { + for (var i = 0; i < root.path.length; i++) { + var constraintMap = root.path[i]; + var data = new spine.PathConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + if (data.target == null) + throw new Error("Path target slot not found: " + targetName); + data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); + data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); + data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.position = this.getValue(constraintMap, "position", 0); + if (data.positionMode == spine.PositionMode.Fixed) + data.position *= scale; + data.spacing = this.getValue(constraintMap, "spacing", 0); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + data.spacing *= scale; + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + skeletonData.pathConstraints.push(data); + } + } + // Skins. + if (root.skins) { + for (var skinName in root.skins) { + var skinMap = root.skins[skinName]; + var skin = new spine.Skin(skinName); + for (var slotName in skinMap) { + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + var slotMap = skinMap[slotName]; + for (var entryName in slotMap) { + var attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName); + if (attachment != null) + skin.addAttachment(slotIndex, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name == "default") + skeletonData.defaultSkin = skin; + } + } + // Linked meshes. + for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (skin == null) + throw new Error("Skin not found: " + linkedMesh.skin); + var parent_4 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (parent_4 == null) + throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.setParentMesh(parent_4); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + // Events. + if (root.events) { + for (var eventName in root.events) { + var eventMap = root.events[eventName]; + var data = new spine.EventData(eventName); + data.intValue = this.getValue(eventMap, "int", 0); + data.floatValue = this.getValue(eventMap, "float", 0); + data.stringValue = this.getValue(eventMap, "string", null); + skeletonData.events.push(data); + } + } + // Animations. + if (root.animations) { + for (var animationName in root.animations) { + var animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + return skeletonData; + }; + SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name) { + var scale = this.scale; + name = this.getValue(map, "name", name); + var type = this.getValue(map, "type", "region"); + switch (type) { + case "region": { + var path = this.getValue(map, "path", name); + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (region == null) + return null; + region.path = path; + region.x = this.getValue(map, "x", 0) * scale; + region.y = this.getValue(map, "y", 0) * scale; + region.scaleX = this.getValue(map, "scaleX", 1); + region.scaleY = this.getValue(map, "scaleY", 1); + region.rotation = this.getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + var color = this.getValue(map, "color", null); + if (color != null) + region.color.setFromString(color); + region.updateOffset(); + return region; + } + case "boundingbox": { + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (box == null) + return null; + this.readVertices(map, box, map.vertexCount << 1); + return box; + } + case "mesh": + case "linkedmesh": { + var path = this.getValue(map, "path", name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) + return null; + mesh.path = path; + var color = this.getValue(map, "color", null); + if (color != null) + mesh.color.setFromString(color); + var parent_5 = this.getValue(map, "parent", null); + if (parent_5 != null) { + mesh.inheritDeform = this.getValue(map, "deform", true); + this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent_5)); + return mesh; + } + var uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.hullLength = this.getValue(map, "hull", 0) * 2; + return mesh; + } + case "path": { + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (path == null) + return null; + path.closed = this.getValue(map, "closed", false); + path.constantSpeed = this.getValue(map, "constantSpeed", true); + var vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + var lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (var i = 0; i < map.lengths.length; i++) + lengths[i++] = map.lengths[i] * scale; + path.lengths = lengths; + return path; + } + } + return null; + }; + SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { + var scale = this.scale; + attachment.worldVerticesLength = verticesLength; + var vertices = map.vertices; + if (verticesLength == vertices.length) { + if (scale != 1) { + for (var i = 0, n = vertices.length; i < n; i++) + vertices[i] *= scale; + } + attachment.vertices = spine.Utils.toFloatArray(vertices); + return; + } + var weights = new Array(); + var bones = new Array(); + for (var i = 0, n = vertices.length; i < n;) { + var boneCount = vertices[i++]; + bones.push(boneCount); + for (var nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = spine.Utils.toFloatArray(weights); + }; + SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { + var scale = this.scale; + var timelines = new Array(); + var duration = 0; + // Slot timelines. + if (map.slots) { + for (var slotName in map.slots) { + var slotMap = map.slots[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + if (timelineName == "color") { + var timeline = new spine.ColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var color = new spine.Color(); + color.setFromString(valueMap.color); + timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); + } + else if (timelineName = "attachment") { + var timeline = new spine.AttachmentTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex++, valueMap.time, valueMap.name); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + else + throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); + } + } + } + // Bone timelines. + if (map.bones) { + for (var boneName in map.bones) { + var boneMap = map.bones[boneName]; + var boneIndex = skeletonData.findBoneIndex(boneName); + if (boneIndex == -1) + throw new Error("Bone not found: " + boneName); + for (var timelineName in boneMap) { + var timelineMap = boneMap[timelineName]; + if (timelineName === "rotate") { + var timeline = new spine.RotateTimeline(timelineMap.length); + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, valueMap.angle); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); + } + else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "scale") + timeline = new spine.ScaleTimeline(timelineMap.length); + else if (timelineName === "shear") + timeline = new spine.ShearTimeline(timelineMap.length); + else { + timeline = new spine.TranslateTimeline(timelineMap.length); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var x = this.getValue(valueMap, "x", 0), y = this.getValue(valueMap, "y", 0); + timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); + } + else + throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); + } + } + } + // IK constraint timelines. + if (map.ik) { + for (var constraintName in map.ik) { + var constraintMap = map.ik[constraintName]; + var constraint = skeletonData.findIkConstraint(constraintName); + var timeline = new spine.IkConstraintTimeline(constraintMap.length); + timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "bendPositive", true) ? 1 : -1); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + } + // Transform constraint timelines. + if (map.transform) { + for (var constraintName in map.transform) { + var constraintMap = map.transform[constraintName]; + var constraint = skeletonData.findTransformConstraint(constraintName); + var timeline = new spine.TransformConstraintTimeline(constraintMap.length); + timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + } + // Path constraint timelines. + if (map.paths) { + for (var constraintName in map.paths) { + var constraintMap = map.paths[constraintName]; + var index = skeletonData.findPathConstraintIndex(constraintName); + if (index == -1) + throw new Error("Path constraint not found: " + constraintName); + var data = skeletonData.pathConstraints[index]; + for (var timelineName in constraintMap) { + var timelineMap = constraintMap[timelineName]; + if (timelineName === "position" || timelineName === "spacing") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "spacing") { + timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + timelineScale = scale; + } + else { + timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); + if (data.positionMode == spine.PositionMode.Fixed) + timelineScale = scale; + } + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + } + else if (timelineName === "mix") { + var timeline = new spine.PathConstraintMixTimeline(timelineMap.length); + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + } + } + } + } + // Deform timelines. + if (map.deform) { + for (var deformName in map.deform) { + var deformMap = map.deform[deformName]; + var skin = skeletonData.findSkin(deformName); + if (skin == null) + throw new Error("Skin not found: " + deformName); + for (var slotName in deformMap) { + var slotMap = deformMap[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotMap.name); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + var attachment = skin.getAttachment(slotIndex, timelineName); + if (attachment == null) + throw new Error("Deform attachment not found: " + timelineMap.name); + var weighted = attachment.bones != null; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var timeline = new spine.DeformTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + var frameIndex = 0; + for (var j = 0; j < timelineMap.length; j++) { + var valueMap = timelineMap[j]; + var deform = void 0; + var verticesValue = this.getValue(valueMap, "vertices", null); + if (verticesValue == null) + deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; + else { + deform = spine.Utils.newFloatArray(deformLength); + var start = this.getValue(valueMap, "offset", 0); + spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale != 1) { + for (var i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (var i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + timeline.setFrame(frameIndex, valueMap.time, deform); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + } + } + } + // Draw order timeline. + var drawOrderNode = map.drawOrder; + if (drawOrderNode == null) + drawOrderNode = map.draworder; + if (drawOrderNode != null) { + var timeline = new spine.DrawOrderTimeline(drawOrderNode.length); + var slotCount = skeletonData.slots.length; + var frameIndex = 0; + for (var j = 0; j < drawOrderNode.length; j++) { + var drawOrderMap = drawOrderNode[j]; + var drawOrder = null; + var offsets = this.getValue(drawOrderMap, "offsets", null); + if (offsets != null) { + drawOrder = spine.Utils.newArray(slotCount, -1); + var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var i = 0; i < offsets.length; i++) { + var offsetMap = offsets[i]; + var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + if (slotIndex == -1) + throw new Error("Slot not found: " + offsetMap.slot); + // Collect unchanged items. + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + // Collect remaining unchanged items. + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. + for (var i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] == -1) + drawOrder[i] = unchanged[--unchangedIndex]; + } + timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + // Event timeline. + if (map.events) { + var timeline = new spine.EventTimeline(map.events.length); + var frameIndex = 0; + for (var i = 0; i < map.events.length; i++) { + var eventMap = map.events[i]; + var eventData = skeletonData.findEvent(eventMap.name); + if (eventData == null) + throw new Error("Event not found: " + eventMap.name); + var event_3 = new spine.Event(eventMap.time, eventData); + event_3.intValue = this.getValue(eventMap, "int", eventData.intValue); + event_3.floatValue = this.getValue(eventMap, "float", eventData.floatValue); + event_3.stringValue = this.getValue(eventMap, "string", eventData.stringValue); + timeline.setFrame(frameIndex++, event_3); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (isNaN(duration)) { + throw new Error("Error while parsing animation, duration is NaN"); + } + skeletonData.animations.push(new spine.Animation(name, timelines, duration)); + }; + SkeletonJson.prototype.readCurve = function (map, timeline, frameIndex) { + if (!map.curve) + return; + if (map.curve === "stepped") + timeline.setStepped(frameIndex); + else if (Object.prototype.toString.call(map.curve) === '[object Array]') { + var curve = map.curve; + timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]); + } + }; + SkeletonJson.prototype.getValue = function (map, prop, defaultValue) { + return map[prop] !== undefined ? map[prop] : defaultValue; + }; + SkeletonJson.blendModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "normal") + return spine.BlendMode.Normal; + if (str == "additive") + return spine.BlendMode.Additive; + if (str == "multiply") + return spine.BlendMode.Multiply; + if (str == "screen") + return spine.BlendMode.Screen; + throw new Error("Unknown blend mode: " + str); + }; + SkeletonJson.positionModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "fixed") + return spine.PositionMode.Fixed; + if (str == "percent") + return spine.PositionMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.spacingModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "length") + return spine.SpacingMode.Length; + if (str == "fixed") + return spine.SpacingMode.Fixed; + if (str == "percent") + return spine.SpacingMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.rotateModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "tangent") + return spine.RotateMode.Tangent; + if (str == "chain") + return spine.RotateMode.Chain; + if (str == "chainscale") + return spine.RotateMode.ChainScale; + throw new Error("Unknown rotate mode: " + str); + }; + return SkeletonJson; + }()); + spine.SkeletonJson = SkeletonJson; + var LinkedMesh = (function () { + function LinkedMesh(mesh, skin, slotIndex, parent) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + } + return LinkedMesh; + }()); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Skin = (function () { + function Skin(name) { + this.attachments = new Array(); + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + Skin.prototype.addAttachment = function (slotIndex, name, attachment) { + if (attachment == null) + throw new Error("attachment cannot be null."); + var attachments = this.attachments; + if (slotIndex >= attachments.length) + attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) + attachments[slotIndex] = {}; + attachments[slotIndex][name] = attachment; + }; + /** @return May be null. */ + Skin.prototype.getAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + }; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + Skin.prototype.attachAll = function (skeleton, oldSkin) { + var slotIndex = 0; + for (var i = 0; i < skeleton.slots.length; i++) { + var slot = skeleton.slots[i]; + var slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + var dictionary = oldSkin.attachments[slotIndex]; + for (var key in dictionary) { + var skinAttachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + var attachment = this.getAttachment(slotIndex, name); + if (attachment != null) + slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + }; + return Skin; + }()); + spine.Skin = Skin; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Slot = (function () { + function Slot(data, bone) { + this.attachmentVertices = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (bone == null) + throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new spine.Color(); + this.setToSetupPose(); + } + /** @return May be null. */ + Slot.prototype.getAttachment = function () { + return this.attachment; + }; + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + Slot.prototype.setAttachment = function (attachment) { + if (this.attachment == attachment) + return; + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + this.attachmentVertices.length = 0; + }; + Slot.prototype.setAttachmentTime = function (time) { + this.attachmentTime = this.bone.skeleton.time - time; + }; + /** Returns the time since the attachment was set. */ + Slot.prototype.getAttachmentTime = function () { + return this.bone.skeleton.time - this.attachmentTime; + }; + Slot.prototype.setToSetupPose = function () { + this.color.setFromColor(this.data.color); + if (this.data.attachmentName == null) + this.attachment = null; + else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + }; + return Slot; + }()); + spine.Slot = Slot; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SlotData = (function () { + function SlotData(index, name, boneData) { + this.color = new spine.Color(1, 1, 1, 1); + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + if (boneData == null) + throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + return SlotData; + }()); + spine.SlotData = SlotData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TransformConstraint = (function () { + function TransformConstraint(data, skeleton) { + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.temp = new spine.Vector2(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this.scaleMix = data.scaleMix; + this.shearMix = data.shearMix; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + TransformConstraint.prototype.apply = function () { + this.update(); + }; + TransformConstraint.prototype.update = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (rotateMix > 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) - Math.atan2(c, a) + this.data.offsetRotation * spine.MathUtils.degRad; + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + if (translateMix > 0) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + } + if (scaleMix > 0) { + var bs = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + var ts = Math.sqrt(ta * ta + tc * tc); + var s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleX) * scaleMix) / bs : 0; + bone.a *= s; + bone.c *= s; + bs = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = Math.sqrt(tb * tb + td * td); + s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleY) * scaleMix) / bs : 0; + bone.b *= s; + bone.d *= s; + } + if (shearMix > 0) { + var b = bone.b, d = bone.d; + var by = Math.atan2(d, b); + var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r = by + (r + this.data.offsetShearY * spine.MathUtils.degRad) * shearMix; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + } + } + }; + return TransformConstraint; + }()); + spine.TransformConstraint = TransformConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TransformConstraintData = (function () { + function TransformConstraintData(name) { + this.bones = new Array(); + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.offsetRotation = 0; + this.offsetX = 0; + this.offsetY = 0; + this.offsetScaleX = 0; + this.offsetScaleY = 0; + this.offsetShearY = 0; + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return TransformConstraintData; + }()); + spine.TransformConstraintData = TransformConstraintData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Color = (function () { + function Color(r, g, b, a) { + if (r === void 0) { r = 0; } + if (g === void 0) { g = 0; } + if (b === void 0) { b = 0; } + if (a === void 0) { a = 0; } + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + Color.prototype.set = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.clamp(); + }; + Color.prototype.setFromColor = function (c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + }; + Color.prototype.setFromString = function (hex) { + hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255.0; + this.g = parseInt(hex.substr(2, 2), 16) / 255.0; + this.b = parseInt(hex.substr(4, 2), 16) / 255.0; + this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; + }; + Color.prototype.add = function (r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + this.clamp(); + }; + Color.prototype.clamp = function () { + if (this.r < 0) + this.r = 0; + else if (this.r > 1) + this.r = 1; + if (this.g < 0) + this.g = 0; + else if (this.g > 1) + this.g = 1; + if (this.b < 0) + this.b = 0; + else if (this.b > 1) + this.b = 1; + if (this.a < 0) + this.a = 0; + else if (this.a > 1) + this.a = 1; + return this; + }; + return Color; + }()); + spine.Color = Color; + var MathUtils = (function () { + function MathUtils() { + } + MathUtils.clamp = function (value, min, max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + }; + MathUtils.cosDeg = function (degrees) { + return Math.cos(degrees * MathUtils.degRad); + }; + MathUtils.sinDeg = function (degrees) { + return Math.sin(degrees * MathUtils.degRad); + }; + MathUtils.signum = function (value) { + return value >= 0 ? 1 : -1; + }; + MathUtils.toInt = function (x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + }; + MathUtils.PI = 3.1415927; + MathUtils.PI2 = MathUtils.PI * 2; + MathUtils.radiansToDegrees = 180 / MathUtils.PI; + MathUtils.radDeg = MathUtils.radiansToDegrees; + MathUtils.degreesToRadians = MathUtils.PI / 180; + MathUtils.degRad = MathUtils.degreesToRadians; + return MathUtils; + }()); + spine.MathUtils = MathUtils; + var Utils = (function () { + function Utils() { + } + Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { + for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + }; + Utils.setArraySize = function (array, size, value) { + if (value === void 0) { value = 0; } + var oldSize = array.length; + if (oldSize == size) + return array; + array.length = size; + if (oldSize < size) { + for (var i = oldSize; i < size; i++) + array[i] = value; + } + return array; + }; + Utils.newArray = function (size, defaultValue) { + var array = new Array(size); + for (var i = 0; i < size; i++) + array[i] = defaultValue; + return array; + }; + Utils.newFloatArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Float32Array(size); + } + else { + var array = new Array(size); + for (var i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + }; + Utils.toFloatArray = function (array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + }; + Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; + return Utils; + }()); + spine.Utils = Utils; + var Pool = (function () { + function Pool(instantiator) { + this._items = new Array(16); + this._instantiator = instantiator; + } + Pool.prototype.obtain = function () { + return this._items.length > 0 ? this._items.pop() : this._instantiator(); + }; + Pool.prototype.free = function (item) { + this._items.push(item); + }; + Pool.prototype.freeAll = function (items) { + for (var i = 0; i < items.length; i++) + this._items[i] = items[i]; + }; + Pool.prototype.clear = function () { + this._items.length = 0; + }; + return Pool; + }()); + spine.Pool = Pool; + var Vector2 = (function () { + function Vector2(x, y) { + if (x === void 0) { x = 0; } + if (y === void 0) { y = 0; } + this.x = x; + this.y = y; + } + Vector2.prototype.set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + return Vector2; + }()); + spine.Vector2 = Vector2; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Attachment = (function () { + function Attachment(name) { + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return Attachment; + }()); + spine.Attachment = Attachment; + var VertexAttachment = (function (_super) { + __extends(VertexAttachment, _super); + function VertexAttachment(name) { + _super.call(this, name); + this.worldVerticesLength = 0; + } + VertexAttachment.prototype.computeWorldVertices = function (slot, worldVertices) { + this.computeWorldVerticesWith(slot, 0, this.worldVerticesLength, worldVertices, 0); + }; + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + VertexAttachment.prototype.computeWorldVerticesWith = function (slot, start, count, worldVertices, offset) { + count += offset; + var skeleton = slot.bone.skeleton; + var x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices; + var bones = this.bones; + if (bones == null) { + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v_1 = start, w = offset; w < count; v_1 += 2, w += 2) { + var vx = vertices[v_1], vy = vertices[v_1 + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + var v = 0, skip = 0; + for (var i = 0; i < start; i += 2) { + var n = bones[v]; + v += n + 1; + skip += n; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = offset, b = skip * 3; w < count; w += 2) { + var wx = x, wy = y; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + else { + var deform = deformArray; + for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) { + var wx = x, wy = y; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + }; + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + VertexAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment; + }; + return VertexAttachment; + }(Attachment)); + spine.VertexAttachment = VertexAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + })(spine.AttachmentType || (spine.AttachmentType = {})); + var AttachmentType = spine.AttachmentType; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var BoundingBoxAttachment = (function (_super) { + __extends(BoundingBoxAttachment, _super); + function BoundingBoxAttachment(name) { + _super.call(this, name); + } + return BoundingBoxAttachment; + }(spine.VertexAttachment)); + spine.BoundingBoxAttachment = BoundingBoxAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var MeshAttachment = (function (_super) { + __extends(MeshAttachment, _super); + function MeshAttachment(name) { + _super.call(this, name); + this.color = new spine.Color(1, 1, 1, 1); + this.inheritDeform = false; + this.tempColor = new spine.Color(0, 0, 0, 0); + } + MeshAttachment.prototype.updateUVs = function () { + var regionUVs = this.regionUVs; + var verticesLength = regionUVs.length; + var worldVerticesLength = (verticesLength >> 1) * 8; + if (this.worldVertices == null || this.worldVertices.length != worldVerticesLength) + this.worldVertices = spine.Utils.newFloatArray(worldVerticesLength); + var u = 0, v = 0, width = 0, height = 0; + if (this.region == null) { + u = v = 0; + width = height = 1; + } + else { + u = this.region.u; + v = this.region.v; + width = this.region.u2 - u; + height = this.region.v2 - v; + } + if (this.region.rotate) { + for (var i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i + 1] * width; + this.worldVertices[w + 1] = v + height - regionUVs[i] * height; + } + } + else { + for (var i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i] * width; + this.worldVertices[w + 1] = v + regionUVs[i + 1] * height; + } + } + }; + /** @return The updated world vertices. */ + MeshAttachment.prototype.updateWorldVertices = function (slot, premultipliedAlpha) { + var skeleton = slot.bone.skeleton; + var skeletonColor = skeleton.color, slotColor = slot.color, meshColor = this.color; + var alpha = skeletonColor.a * slotColor.a * meshColor.a; + var multiplier = premultipliedAlpha ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * meshColor.r * multiplier, skeletonColor.g * slotColor.g * meshColor.g * multiplier, skeletonColor.b * slotColor.b * meshColor.b * multiplier, alpha); + var x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices, worldVertices = this.worldVertices; + var bones = this.bones; + if (bones == null) { + var verticesLength = vertices.length; + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v = 0, w = 0; v < verticesLength; v += 2, w += 8) { + var vx = vertices[v], vy = vertices[v + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + return worldVertices; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = 0, v = 0, b = 0, n = bones.length; v < n; w += 8) { + var wx = x, wy = y; + var nn = bones[v++] + v; + for (; v < nn; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + else { + var deform = deformArray; + for (var w = 0, v = 0, b = 0, f = 0, n = bones.length; v < n; w += 8) { + var wx = x, wy = y; + var nn = bones[v++] + v; + for (; v < nn; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + return worldVertices; + }; + MeshAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment || (this.inheritDeform && this._parentMesh == sourceAttachment); + }; + MeshAttachment.prototype.getParentMesh = function () { + return this._parentMesh; + }; + /** @param parentMesh May be null. */ + MeshAttachment.prototype.setParentMesh = function (parentMesh) { + this._parentMesh = parentMesh; + if (parentMesh != null) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + } + }; + return MeshAttachment; + }(spine.VertexAttachment)); + spine.MeshAttachment = MeshAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathAttachment = (function (_super) { + __extends(PathAttachment, _super); + function PathAttachment(name) { + _super.call(this, name); + this.closed = false; + this.constantSpeed = false; + } + return PathAttachment; + }(spine.VertexAttachment)); + spine.PathAttachment = PathAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var RegionAttachment = (function (_super) { + __extends(RegionAttachment, _super); + function RegionAttachment(name) { + _super.call(this, name); + this.x = 0; + this.y = 0; + this.scaleX = 1; + this.scaleY = 1; + this.rotation = 0; + this.width = 0; + this.height = 0; + this.color = new spine.Color(1, 1, 1, 1); + this.offset = spine.Utils.newFloatArray(8); + this.vertices = spine.Utils.newFloatArray(8 * 4); + this.tempColor = new spine.Color(1, 1, 1, 1); + } + RegionAttachment.prototype.setRegion = function (region) { + var vertices = this.vertices; + if (region.rotate) { + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v2; + vertices[RegionAttachment.U3] = region.u; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v; + vertices[RegionAttachment.U1] = region.u2; + vertices[RegionAttachment.V1] = region.v2; + } + else { + vertices[RegionAttachment.U1] = region.u; + vertices[RegionAttachment.V1] = region.v2; + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v; + vertices[RegionAttachment.U3] = region.u2; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v2; + } + }; + RegionAttachment.prototype.updateOffset = function () { + var regionScaleX = this.width / this.region.originalWidth * this.scaleX; + var regionScaleY = this.height / this.region.originalHeight * this.scaleY; + var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + var localX2 = localX + this.region.width * regionScaleX; + var localY2 = localY + this.region.height * regionScaleY; + var radians = this.rotation * Math.PI / 180; + var cos = Math.cos(radians); + var sin = Math.sin(radians); + var localXCos = localX * cos + this.x; + var localXSin = localX * sin; + var localYCos = localY * cos + this.y; + var localYSin = localY * sin; + var localX2Cos = localX2 * cos + this.x; + var localX2Sin = localX2 * sin; + var localY2Cos = localY2 * cos + this.y; + var localY2Sin = localY2 * sin; + var offset = this.offset; + offset[RegionAttachment.OX1] = localXCos - localYSin; + offset[RegionAttachment.OY1] = localYCos + localXSin; + offset[RegionAttachment.OX2] = localXCos - localY2Sin; + offset[RegionAttachment.OY2] = localY2Cos + localXSin; + offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; + offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; + offset[RegionAttachment.OX4] = localX2Cos - localYSin; + offset[RegionAttachment.OY4] = localYCos + localX2Sin; + }; + RegionAttachment.prototype.updateWorldVertices = function (slot, premultipliedAlpha) { + var skeleton = slot.bone.skeleton; + var skeletonColor = skeleton.color; + var slotColor = slot.color; + var regionColor = this.color; + var alpha = skeletonColor.a * slotColor.a * regionColor.a; + var multiplier = premultipliedAlpha ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); + var vertices = this.vertices; + var offset = this.offset; + var bone = slot.bone; + var x = skeleton.x + bone.worldX, y = skeleton.y + bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var offsetX = 0, offsetY = 0; + offsetX = offset[RegionAttachment.OX1]; + offsetY = offset[RegionAttachment.OY1]; + vertices[RegionAttachment.X1] = offsetX * a + offsetY * b + x; // br + vertices[RegionAttachment.Y1] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C1R] = color.r; + vertices[RegionAttachment.C1G] = color.g; + vertices[RegionAttachment.C1B] = color.b; + vertices[RegionAttachment.C1A] = color.a; + offsetX = offset[RegionAttachment.OX2]; + offsetY = offset[RegionAttachment.OY2]; + vertices[RegionAttachment.X2] = offsetX * a + offsetY * b + x; // bl + vertices[RegionAttachment.Y2] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C2R] = color.r; + vertices[RegionAttachment.C2G] = color.g; + vertices[RegionAttachment.C2B] = color.b; + vertices[RegionAttachment.C2A] = color.a; + offsetX = offset[RegionAttachment.OX3]; + offsetY = offset[RegionAttachment.OY3]; + vertices[RegionAttachment.X3] = offsetX * a + offsetY * b + x; // ul + vertices[RegionAttachment.Y3] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C3R] = color.r; + vertices[RegionAttachment.C3G] = color.g; + vertices[RegionAttachment.C3B] = color.b; + vertices[RegionAttachment.C3A] = color.a; + offsetX = offset[RegionAttachment.OX4]; + offsetY = offset[RegionAttachment.OY4]; + vertices[RegionAttachment.X4] = offsetX * a + offsetY * b + x; // ur + vertices[RegionAttachment.Y4] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C4R] = color.r; + vertices[RegionAttachment.C4G] = color.g; + vertices[RegionAttachment.C4B] = color.b; + vertices[RegionAttachment.C4A] = color.a; + return vertices; + }; + RegionAttachment.OX1 = 0; + RegionAttachment.OY1 = 1; + RegionAttachment.OX2 = 2; + RegionAttachment.OY2 = 3; + RegionAttachment.OX3 = 4; + RegionAttachment.OY3 = 5; + RegionAttachment.OX4 = 6; + RegionAttachment.OY4 = 7; + RegionAttachment.X1 = 0; + RegionAttachment.Y1 = 1; + RegionAttachment.C1R = 2; + RegionAttachment.C1G = 3; + RegionAttachment.C1B = 4; + RegionAttachment.C1A = 5; + RegionAttachment.U1 = 6; + RegionAttachment.V1 = 7; + RegionAttachment.X2 = 8; + RegionAttachment.Y2 = 9; + RegionAttachment.C2R = 10; + RegionAttachment.C2G = 11; + RegionAttachment.C2B = 12; + RegionAttachment.C2A = 13; + RegionAttachment.U2 = 14; + RegionAttachment.V2 = 15; + RegionAttachment.X3 = 16; + RegionAttachment.Y3 = 17; + RegionAttachment.C3R = 18; + RegionAttachment.C3G = 19; + RegionAttachment.C3B = 20; + RegionAttachment.C3A = 21; + RegionAttachment.U3 = 22; + RegionAttachment.V3 = 23; + RegionAttachment.X4 = 24; + RegionAttachment.Y4 = 25; + RegionAttachment.C4R = 26; + RegionAttachment.C4G = 27; + RegionAttachment.C4B = 28; + RegionAttachment.C4A = 29; + RegionAttachment.U4 = 30; + RegionAttachment.V4 = 31; + return RegionAttachment; + }(spine.Attachment)); + spine.RegionAttachment = RegionAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TextureRegion = (function () { + function TextureRegion() { + this.u = 0; + this.v = 0; + this.u2 = 0; + this.v2 = 0; + this.width = 0; + this.height = 0; + this.rotate = false; + this.offsetX = 0; + this.offsetY = 0; + this.originalWidth = 0; + this.originalHeight = 0; + } + return TextureRegion; + }()); + spine.TextureRegion = TextureRegion; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var AssetManager = (function () { + function AssetManager(gl) { + this._assets = {}; + this._errors = {}; + this._toLoad = 0; + this._loaded = 0; + this._gl = gl; + } + AssetManager.prototype.loadText = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + this._toLoad++; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + if (success) + success(path, request.responseText); + _this._assets[path] = request.responseText; + } + else { + if (error) + error(path, "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText); + _this._errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; + } + _this._toLoad--; + _this._loaded++; + } + }; + request.open("GET", path, true); + request.send(); + }; + AssetManager.prototype.loadTexture = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + this._toLoad++; + var img = new Image(); + img.src = path; + img.onload = function (ev) { + if (success) + success(path, img); + var texture = new webgl.Texture(_this._gl, img); + _this._assets[path] = texture; + _this._toLoad--; + _this._loaded++; + }; + img.onerror = function (ev) { + if (error) + error(path, "Couldn't load image " + path); + _this._errors[path] = "Couldn't load image " + path; + _this._toLoad--; + _this._loaded++; + }; + }; + AssetManager.prototype.get = function (path) { + return this._assets[path]; + }; + AssetManager.prototype.remove = function (path) { + var asset = this._assets[path]; + if (asset instanceof webgl.Texture) { + asset.dispose(); + } + this._assets[path] = null; + }; + AssetManager.prototype.removeAll = function () { + for (var key in this._assets) { + var asset = this._assets[key]; + if (asset instanceof webgl.Texture) + asset.dispose(); + } + this._assets = {}; + }; + AssetManager.prototype.isLoadingComplete = function () { + return this._toLoad == 0; + }; + AssetManager.prototype.toLoad = function () { + return this._toLoad; + }; + AssetManager.prototype.loaded = function () { + return this._loaded; + }; + AssetManager.prototype.dispose = function () { + this.removeAll(); + }; + AssetManager.prototype.hasErrors = function () { + return Object.keys(this._errors).length > 0; + }; + AssetManager.prototype.errors = function () { + return this._errors; + }; + return AssetManager; + }()); + webgl.AssetManager = AssetManager; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + webgl.M00 = 0; + webgl.M01 = 4; + webgl.M02 = 8; + webgl.M03 = 12; + webgl.M10 = 1; + webgl.M11 = 5; + webgl.M12 = 9; + webgl.M13 = 13; + webgl.M20 = 2; + webgl.M21 = 6; + webgl.M22 = 10; + webgl.M23 = 14; + webgl.M30 = 3; + webgl.M31 = 7; + webgl.M32 = 11; + webgl.M33 = 15; + var Matrix4 = (function () { + function Matrix4() { + this.temp = new Float32Array(16); + this.values = new Float32Array(16); + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M11] = 1; + v[webgl.M22] = 1; + v[webgl.M33] = 1; + } + Matrix4.prototype.set = function (values) { + this.values.set(values); + return this; + }; + Matrix4.prototype.transpose = function () { + var t = this.temp; + var v = this.values; + t[webgl.M00] = v[webgl.M00]; + t[webgl.M01] = v[webgl.M10]; + t[webgl.M02] = v[webgl.M20]; + t[webgl.M03] = v[webgl.M30]; + t[webgl.M10] = v[webgl.M01]; + t[webgl.M11] = v[webgl.M11]; + t[webgl.M12] = v[webgl.M21]; + t[webgl.M13] = v[webgl.M31]; + t[webgl.M20] = v[webgl.M02]; + t[webgl.M21] = v[webgl.M12]; + t[webgl.M22] = v[webgl.M22]; + t[webgl.M23] = v[webgl.M32]; + t[webgl.M30] = v[webgl.M03]; + t[webgl.M31] = v[webgl.M13]; + t[webgl.M32] = v[webgl.M23]; + t[webgl.M33] = v[webgl.M33]; + return this.set(t); + }; + Matrix4.prototype.identity = function () { + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M01] = 0; + v[webgl.M02] = 0; + v[webgl.M03] = 0; + v[webgl.M10] = 0; + v[webgl.M11] = 1; + v[webgl.M12] = 0; + v[webgl.M13] = 0; + v[webgl.M20] = 0; + v[webgl.M21] = 0; + v[webgl.M22] = 1; + v[webgl.M23] = 0; + v[webgl.M30] = 0; + v[webgl.M31] = 0; + v[webgl.M32] = 0; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.invert = function () { + var v = this.values; + var t = this.temp; + var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + if (l_det == 0) + throw new Error("non-invertible matrix"); + var inv_det = 1.0 / l_det; + t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] + - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] + + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] + - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] + + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] + + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] + - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; + t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; + t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; + t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] + - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; + v[webgl.M00] = t[webgl.M00] * inv_det; + v[webgl.M01] = t[webgl.M01] * inv_det; + v[webgl.M02] = t[webgl.M02] * inv_det; + v[webgl.M03] = t[webgl.M03] * inv_det; + v[webgl.M10] = t[webgl.M10] * inv_det; + v[webgl.M11] = t[webgl.M11] * inv_det; + v[webgl.M12] = t[webgl.M12] * inv_det; + v[webgl.M13] = t[webgl.M13] * inv_det; + v[webgl.M20] = t[webgl.M20] * inv_det; + v[webgl.M21] = t[webgl.M21] * inv_det; + v[webgl.M22] = t[webgl.M22] * inv_det; + v[webgl.M23] = t[webgl.M23] * inv_det; + v[webgl.M30] = t[webgl.M30] * inv_det; + v[webgl.M31] = t[webgl.M31] * inv_det; + v[webgl.M32] = t[webgl.M32] * inv_det; + v[webgl.M33] = t[webgl.M33] * inv_det; + return this; + }; + Matrix4.prototype.determinant = function () { + var v = this.values; + return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + }; + Matrix4.prototype.translate = function (x, y, z) { + var v = this.values; + v[webgl.M03] += x; + v[webgl.M13] += y; + v[webgl.M23] += z; + return this; + }; + Matrix4.prototype.copy = function () { + return new Matrix4().set(this.values); + }; + Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { + this.identity(); + var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); + var l_a1 = (far + near) / (near - far); + var l_a2 = (2 * far * near) / (near - far); + var v = this.values; + v[webgl.M00] = l_fd / aspectRatio; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = l_fd; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = l_a1; + v[webgl.M32] = -1; + v[webgl.M03] = 0; + v[webgl.M13] = 0; + v[webgl.M23] = l_a2; + v[webgl.M33] = 0; + return this; + }; + Matrix4.prototype.ortho2d = function (x, y, width, height) { + return this.ortho(x, x + width, y, y + height, 0, 1); + }; + Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { + this.identity(); + var x_orth = 2 / (right - left); + var y_orth = 2 / (top - bottom); + var z_orth = -2 / (far - near); + var tx = -(right + left) / (right - left); + var ty = -(top + bottom) / (top - bottom); + var tz = -(far + near) / (far - near); + var v = this.values; + v[webgl.M00] = x_orth; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = y_orth; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = z_orth; + v[webgl.M32] = 0; + v[webgl.M03] = tx; + v[webgl.M13] = ty; + v[webgl.M23] = tz; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.multiply = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; + t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; + t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; + t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; + t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; + t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; + t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; + t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; + t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; + t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; + t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; + t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; + t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; + t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; + t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; + t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; + return this.set(this.temp); + }; + Matrix4.prototype.multiplyLeft = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; + t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; + t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; + t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; + t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; + t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; + t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; + t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; + t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; + t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; + t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; + t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; + t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; + t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; + t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; + t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; + return this.set(this.temp); + }; + return Matrix4; + }()); + webgl.Matrix4 = Matrix4; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Mesh = (function () { + function Mesh(gl, _attributes, maxVertices, maxIndices) { + this._attributes = _attributes; + this._verticesLength = 0; + this._dirtyVertices = false; + this._indicesLength = 0; + this._dirtyIndices = false; + this._elementsPerVertex = 0; + this._gl = gl; + this._elementsPerVertex = 0; + for (var i = 0; i < _attributes.length; i++) { + this._elementsPerVertex += _attributes[i].numElements; + } + this._vertices = new Float32Array(maxVertices * this._elementsPerVertex); + this._indices = new Uint16Array(maxIndices); + } + Mesh.prototype.attributes = function () { return this._attributes; }; + Mesh.prototype.maxVertices = function () { return this._vertices.length / this._elementsPerVertex; }; + Mesh.prototype.numVertices = function () { return this._verticesLength / this._elementsPerVertex; }; + Mesh.prototype.setVerticesLength = function (length) { + this._dirtyVertices = true; + this._verticesLength = length; + }; + Mesh.prototype.vertices = function () { return this._vertices; }; + Mesh.prototype.maxIndices = function () { return this._indices.length; }; + Mesh.prototype.numIndices = function () { return this._indicesLength; }; + Mesh.prototype.setIndicesLength = function (length) { + this._dirtyIndices = true; + this._indicesLength = length; + }; + Mesh.prototype.indices = function () { return this._indices; }; + ; + Mesh.prototype.setVertices = function (vertices) { + this._dirtyVertices = true; + if (vertices.length > this._vertices.length) + throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); + this._vertices.set(vertices, 0); + this._verticesLength = vertices.length; + }; + Mesh.prototype.setIndices = function (indices) { + this._dirtyIndices = true; + if (indices.length > this._indices.length) + throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); + this._indices.set(indices, 0); + this._indicesLength = indices.length; + }; + Mesh.prototype.draw = function (shader, primitiveType) { + this.drawWithOffset(shader, primitiveType, 0, this._indicesLength > 0 ? this._indicesLength : this._verticesLength); + }; + Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { + var gl = this._gl; + if (this._dirtyVertices || this._dirtyIndices) + this.update(); + this.bind(shader); + if (this._indicesLength > 0) + gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); + else + gl.drawArrays(primitiveType, offset, count); + this.unbind(shader); + }; + Mesh.prototype.bind = function (shader) { + var gl = this._gl; + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + var offset = 0; + for (var i = 0; i < this._attributes.length; i++) { + var attrib = this._attributes[i]; + var location_1 = shader.getAttributeLocation(attrib.name); + gl.enableVertexAttribArray(location_1); + gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this._elementsPerVertex * 4, offset * 4); + offset += attrib.numElements; + } + if (this._indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + }; + Mesh.prototype.unbind = function (shader) { + var gl = this._gl; + for (var i = 0; i < this._attributes.length; i++) { + var attrib = this._attributes[i]; + var location_2 = shader.getAttributeLocation(attrib.name); + gl.disableVertexAttribArray(location_2); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + if (this._indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + }; + Mesh.prototype.update = function () { + var gl = this._gl; + if (this._dirtyVertices) { + if (!this._verticesBuffer) { + this._verticesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this._vertices.subarray(0, this._verticesLength), gl.STATIC_DRAW); + this._dirtyVertices = false; + } + if (this._dirtyIndices) { + if (!this._indicesBuffer) { + this._indicesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this._indices.subarray(0, this._indicesLength), gl.STATIC_DRAW); + this._dirtyIndices = false; + } + }; + Mesh.prototype.dispose = function () { + var gl = this._gl; + gl.deleteBuffer(this._verticesBuffer); + gl.deleteBuffer(this._indicesBuffer); + }; + return Mesh; + }()); + webgl.Mesh = Mesh; + var VertexAttribute = (function () { + function VertexAttribute(name, type, numElements) { + this.name = name; + this.type = type; + this.numElements = numElements; + } + return VertexAttribute; + }()); + webgl.VertexAttribute = VertexAttribute; + var Position2Attribute = (function (_super) { + __extends(Position2Attribute, _super); + function Position2Attribute() { + _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2); + } + return Position2Attribute; + }(VertexAttribute)); + webgl.Position2Attribute = Position2Attribute; + var Position3Attribute = (function (_super) { + __extends(Position3Attribute, _super); + function Position3Attribute() { + _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3); + } + return Position3Attribute; + }(VertexAttribute)); + webgl.Position3Attribute = Position3Attribute; + var TexCoordAttribute = (function (_super) { + __extends(TexCoordAttribute, _super); + function TexCoordAttribute(unit) { + if (unit === void 0) { unit = 0; } + _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2); + } + return TexCoordAttribute; + }(VertexAttribute)); + webgl.TexCoordAttribute = TexCoordAttribute; + var ColorAttribute = (function (_super) { + __extends(ColorAttribute, _super); + function ColorAttribute() { + _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4); + } + return ColorAttribute; + }(VertexAttribute)); + webgl.ColorAttribute = ColorAttribute; + (function (VertexAttributeType) { + VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; + })(webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); + var VertexAttributeType = webgl.VertexAttributeType; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var PolygonBatcher = (function () { + function PolygonBatcher(gl, maxVertices) { + if (maxVertices === void 0) { maxVertices = 10920; } + this._drawing = false; + this._shader = null; + this._lastTexture = null; + this._verticesLength = 0; + this._indicesLength = 0; + this._srcBlend = WebGLRenderingContext.SRC_ALPHA; + this._dstBlend = WebGLRenderingContext.ONE_MINUS_SRC_ALPHA; + if (maxVertices > 10920) + throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this._gl = gl; + this._mesh = new webgl.Mesh(gl, [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()], maxVertices, maxVertices * 3); + } + PolygonBatcher.prototype.begin = function (shader) { + var gl = this._gl; + if (this._drawing) + throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); + this._drawCalls = 0; + this._shader = shader; + this._lastTexture = null; + this._drawing = true; + gl.enable(gl.BLEND); + gl.blendFunc(this._srcBlend, this._dstBlend); + }; + PolygonBatcher.prototype.setBlendMode = function (srcBlend, dstBlend) { + var gl = this._gl; + this._srcBlend = srcBlend; + this._dstBlend = dstBlend; + if (this._drawing) { + this.flush(); + gl.blendFunc(this._srcBlend, this._dstBlend); + } + }; + PolygonBatcher.prototype.draw = function (texture, vertices, indices) { + if (texture != this._lastTexture) { + this.flush(); + this._lastTexture = texture; + texture.bind(); + } + else if (this._verticesLength + vertices.length > this._mesh.vertices().length || + this._indicesLength + indices.length > this._mesh.indices().length) { + this.flush(); + } + var indexStart = this._mesh.numVertices(); + this._mesh.vertices().set(vertices, this._verticesLength); + this._verticesLength += vertices.length; + this._mesh.setVerticesLength(this._verticesLength); + var indicesArray = this._mesh.indices(); + for (var i = this._indicesLength, j = 0; j < indices.length; i++, j++) + indicesArray[i] = indices[j] + indexStart; + this._indicesLength += indices.length; + this._mesh.setIndicesLength(this._indicesLength); + }; + PolygonBatcher.prototype.flush = function () { + var gl = this._gl; + if (this._verticesLength == 0) + return; + this._mesh.draw(this._shader, gl.TRIANGLES); + this._verticesLength = 0; + this._indicesLength = 0; + this._mesh.setVerticesLength(0); + this._mesh.setIndicesLength(0); + this._drawCalls++; + }; + PolygonBatcher.prototype.end = function () { + var gl = this._gl; + if (!this._drawing) + throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); + if (this._verticesLength > 0 || this._indicesLength > 0) + this.flush(); + this._shader = null; + this._lastTexture = null; + this._drawing = false; + gl.disable(gl.BLEND); + }; + PolygonBatcher.prototype.drawCalls = function () { return this._drawCalls; }; + return PolygonBatcher; + }()); + webgl.PolygonBatcher = PolygonBatcher; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Shader = (function () { + function Shader(gl, _vertexShader, _fragmentShader) { + this._vertexShader = _vertexShader; + this._fragmentShader = _fragmentShader; + this._vs = null; + this._fs = null; + this._program = null; + this._tmp2x2 = new Float32Array(2 * 2); + this._tmp3x3 = new Float32Array(3 * 3); + this._tmp4x4 = new Float32Array(4 * 4); + this._gl = gl; + this.compile(); + } + Shader.prototype.program = function () { return this._program; }; + Shader.prototype.vertexShader = function () { return this._vertexShader; }; + Shader.prototype.fragmentShader = function () { return this._fragmentShader; }; + Shader.prototype.compile = function () { + var gl = this._gl; + try { + this._vs = this.compileShader(gl.VERTEX_SHADER, this._vertexShader); + this._fs = this.compileShader(gl.FRAGMENT_SHADER, this._fragmentShader); + this._program = this.compileProgram(this._vs, this._fs); + } + catch (e) { + this.dispose(); + throw e; + } + }; + Shader.prototype.compileShader = function (type, source) { + var gl = this._gl; + var shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); + gl.deleteShader(shader); + throw new Error(error); + } + return shader; + }; + Shader.prototype.compileProgram = function (vs, fs) { + var gl = this._gl; + var program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); + gl.deleteProgram(program); + throw new Error(error); + } + return program; + }; + Shader.prototype.bind = function () { + this._gl.useProgram(this._program); + }; + Shader.prototype.unbind = function () { + this._gl.useProgram(null); + }; + Shader.prototype.setUniformi = function (uniform, value) { + this._gl.uniform1i(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniformf = function (uniform, value) { + this._gl.uniform1f(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniform2f = function (uniform, value, value2) { + this._gl.uniform2f(this.getUniformLocation(uniform), value, value2); + }; + Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { + this._gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); + }; + Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { + this._gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); + }; + Shader.prototype.setUniform2x2f = function (uniform, value) { + var gl = this._gl; + this._tmp2x2.set(value); + gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this._tmp2x2); + }; + Shader.prototype.setUniform3x3f = function (uniform, value) { + var gl = this._gl; + this._tmp3x3.set(value); + gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this._tmp3x3); + }; + Shader.prototype.setUniform4x4f = function (uniform, value) { + var gl = this._gl; + this._tmp4x4.set(value); + gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this._tmp4x4); + }; + Shader.prototype.getUniformLocation = function (uniform) { + var gl = this._gl; + var location = gl.getUniformLocation(this._program, uniform); + if (!location) + throw new Error("Couldn't find location for uniform " + uniform); + return location; + }; + Shader.prototype.getAttributeLocation = function (attribute) { + var gl = this._gl; + var location = gl.getAttribLocation(this._program, attribute); + if (location == -1) + throw new Error("Couldn't find location for attribute " + attribute); + return location; + }; + Shader.prototype.dispose = function () { + var gl = this._gl; + if (this._vs) { + gl.deleteShader(this._vs); + this._vs = null; + } + if (this._fs) { + gl.deleteShader(this._fs); + this._fs = null; + } + if (this._program) { + gl.deleteProgram(this._program); + this._program = null; + } + }; + Shader.newColoredTextured = function (gl) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; + return new Shader(gl, vs, fs); + }; + Shader.newColored = function (gl) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; + return new Shader(gl, vs, fs); + }; + Shader.MVP_MATRIX = "u_projTrans"; + Shader.POSITION = "a_position"; + Shader.COLOR = "a_color"; + Shader.TEXCOORDS = "a_texCoords"; + Shader.SAMPLER = "u_texture"; + return Shader; + }()); + webgl.Shader = Shader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var SkeletonRenderer = (function () { + function SkeletonRenderer(gl) { + this.premultipliedAlpha = false; + this._gl = gl; + } + SkeletonRenderer.prototype.draw = function (batcher, skeleton) { + var premultipliedAlpha = this.premultipliedAlpha; + var blendMode = null; + var vertices = null; + var triangles = null; + var drawOrder = skeleton.drawOrder; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var attachment = slot.getAttachment(); + var texture = null; + if (attachment instanceof spine.RegionAttachment) { + var region = attachment; + vertices = region.updateWorldVertices(slot, premultipliedAlpha); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + texture = region.region.renderObject.texture; + } + else if (attachment instanceof spine.MeshAttachment) { + var mesh = attachment; + vertices = mesh.updateWorldVertices(slot, premultipliedAlpha); + triangles = mesh.triangles; + texture = mesh.region.renderObject.texture; + } + if (texture != null) { + var slotBlendMode = slot.data.blendMode; + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batcher.setBlendMode(webgl.getSourceGLBlendMode(this._gl, blendMode, premultipliedAlpha), webgl.getDestGLBlendMode(this._gl, blendMode)); + } + batcher.draw(texture, vertices, triangles); + } + } + }; + SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + return SkeletonRenderer; + }()); + webgl.SkeletonRenderer = SkeletonRenderer; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Texture = (function () { + function Texture(gl, image, useMipMaps) { + if (useMipMaps === void 0) { useMipMaps = false; } + this._boundUnit = 0; + this._gl = gl; + this._texture = gl.createTexture(); + this._image = image; + this.update(useMipMaps); + } + Texture.prototype.getImage = function () { + return this._image; + }; + Texture.prototype.setFilters = function (minFilter, magFilter) { + var gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); + }; + Texture.prototype.setWraps = function (uWrap, vWrap) { + var gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); + }; + Texture.prototype.update = function (useMipMaps) { + var gl = this._gl; + this.bind(); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (useMipMaps) + gl.generateMipmap(gl.TEXTURE_2D); + }; + Texture.prototype.bind = function (unit) { + if (unit === void 0) { unit = 0; } + var gl = this._gl; + this._boundUnit = unit; + gl.activeTexture(gl.TEXTURE0 + unit); + gl.bindTexture(gl.TEXTURE_2D, this._texture); + }; + Texture.prototype.unbind = function () { + var gl = this._gl; + gl.activeTexture(gl.TEXTURE0 + this._boundUnit); + gl.bindTexture(gl.TEXTURE_2D, null); + }; + Texture.prototype.dispose = function () { + var gl = this._gl; + gl.deleteTexture(this._texture); + }; + Texture.filterFromString = function (text) { + switch (text.toLowerCase()) { + case "nearest": return TextureFilter.Nearest; + case "linear": return TextureFilter.Linear; + case "mipmap": return TextureFilter.MipMap; + case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; + case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; + case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; + case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; + default: throw new Error("Unknown texture filter " + text); + } + }; + Texture.wrapFromString = function (text) { + switch (text.toLowerCase()) { + case "mirroredtepeat": return TextureWrap.MirroredRepeat; + case "clamptoedge": return TextureWrap.ClampToEdge; + case "repeat": return TextureWrap.Repeat; + default: throw new Error("Unknown texture wrap " + text); + } + }; + return Texture; + }()); + webgl.Texture = Texture; + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = WebGLRenderingContext.NEAREST] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = WebGLRenderingContext.LINEAR] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = WebGLRenderingContext.NEAREST_MIPMAP_NEAREST] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = WebGLRenderingContext.LINEAR_MIPMAP_NEAREST] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = WebGLRenderingContext.NEAREST_MIPMAP_LINEAR] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR] = "MipMapLinearLinear"; + })(webgl.TextureFilter || (webgl.TextureFilter = {})); + var TextureFilter = webgl.TextureFilter; + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = WebGLRenderingContext.MIRRORED_REPEAT] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = WebGLRenderingContext.CLAMP_TO_EDGE] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = WebGLRenderingContext.REPEAT] = "Repeat"; + })(webgl.TextureWrap || (webgl.TextureWrap = {})); + var TextureWrap = webgl.TextureWrap; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var TextureAtlas = (function () { + function TextureAtlas(atlasText, textureLoader) { + this.pages = new Array(); + this.regions = new Array(); + this.load(atlasText, textureLoader); + } + TextureAtlas.prototype.load = function (atlasText, textureLoader) { + if (textureLoader == null) + throw new Error("textureLoader cannot be null."); + var reader = new TextureAtlasReader(atlasText); + var tuple = new Array(4); + var page = null; + while (true) { + var line = reader.readLine(); + if (line == null) + break; + line = line.trim(); + if (line.length == 0) + page = null; + else if (!page) { + page = new TextureAtlasPage(); + page.name = line; + if (reader.readTuple(tuple) == 2) { + page.width = parseInt(tuple[0]); + page.height = parseInt(tuple[1]); + reader.readTuple(tuple); + } + // page.format = Format[tuple[0]]; we don't need format in WebGL + reader.readTuple(tuple); + page.minFilter = webgl.Texture.filterFromString(tuple[0]); + page.magFilter = webgl.Texture.filterFromString(tuple[1]); + var direction = reader.readValue(); + page.uWrap = webgl.TextureWrap.ClampToEdge; + page.vWrap = webgl.TextureWrap.ClampToEdge; + if (direction == "x") + page.uWrap = webgl.TextureWrap.Repeat; + else if (direction == "y") + page.vWrap = webgl.TextureWrap.Repeat; + else if (direction == "xy") + page.uWrap = page.vWrap = webgl.TextureWrap.Repeat; + page.texture = textureLoader(line); + page.texture.setFilters(page.minFilter, page.magFilter); + page.texture.setWraps(page.uWrap, page.vWrap); + page.width = page.texture.getImage().width; + page.height = page.texture.getImage().height; + this.pages.push(page); + } + else { + var region = new TextureAtlasRegion(); + region.name = line; + region.page = page; + region.rotate = reader.readValue() == "true"; + reader.readTuple(tuple); + var x = parseInt(tuple[0]); + var y = parseInt(tuple[1]); + reader.readTuple(tuple); + var width = parseInt(tuple[0]); + var height = parseInt(tuple[1]); + region.u = x / page.width; + region.v = y / page.height; + if (region.rotate) { + region.u2 = (x + height) / page.width; + region.v2 = (y + width) / page.height; + } + else { + region.u2 = (x + width) / page.width; + region.v2 = (y + height) / page.height; + } + region.x = x; + region.y = y; + region.width = Math.abs(width); + region.height = Math.abs(height); + if (reader.readTuple(tuple) == 4) { + // region.splits = new Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + if (reader.readTuple(tuple) == 4) { + //region.pads = Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + reader.readTuple(tuple); + } + } + region.originalWidth = parseInt(tuple[0]); + region.originalHeight = parseInt(tuple[1]); + reader.readTuple(tuple); + region.offsetX = parseInt(tuple[0]); + region.offsetY = parseInt(tuple[1]); + region.index = parseInt(reader.readValue()); + region.texture = page.texture; + this.regions.push(region); + } + } + }; + TextureAtlas.prototype.findRegion = function (name) { + for (var i = 0; i < this.regions.length; i++) { + if (this.regions[i].name == name) { + return this.regions[i]; + } + } + return null; + }; + TextureAtlas.prototype.dispose = function () { + for (var i = 0; i < this.pages.length; i++) { + this.pages[i].texture.dispose(); + } + }; + return TextureAtlas; + }()); + webgl.TextureAtlas = TextureAtlas; + var TextureAtlasReader = (function () { + function TextureAtlasReader(text) { + this.index = 0; + this.lines = text.split(/\r\n|\r|\n/); + } + TextureAtlasReader.prototype.readLine = function () { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + }; + TextureAtlasReader.prototype.readValue = function () { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + return line.substring(colon + 1).trim(); + }; + TextureAtlasReader.prototype.readTuple = function (tuple) { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + var i = 0, lastMatch = colon + 1; + for (; i < 3; i++) { + var comma = line.indexOf(",", lastMatch); + if (comma == -1) + break; + tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + } + tuple[i] = line.substring(lastMatch).trim(); + return i + 1; + }; + return TextureAtlasReader; + }()); + var TextureAtlasPage = (function () { + function TextureAtlasPage() { + } + return TextureAtlasPage; + }()); + webgl.TextureAtlasPage = TextureAtlasPage; + var TextureAtlasRegion = (function (_super) { + __extends(TextureAtlasRegion, _super); + function TextureAtlasRegion() { + _super.apply(this, arguments); + } + return TextureAtlasRegion; + }(spine.TextureRegion)); + webgl.TextureAtlasRegion = TextureAtlasRegion; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var TextureAtlasAttachmentLoader = (function () { + function TextureAtlasAttachmentLoader(atlas) { + this.atlas = atlas; + } + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) + throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + var attachment = new spine.RegionAttachment(name); + attachment.setRegion(region); + attachment.region = region; + return attachment; + }; + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) + throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + var attachment = new spine.MeshAttachment(name); + attachment.region = region; + return attachment; + }; + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { + return new spine.BoundingBoxAttachment(name); + }; + /** @return May be null to not load an attachment */ + TextureAtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { + return new spine.PathAttachment(name); + }; + return TextureAtlasAttachmentLoader; + }()); + webgl.TextureAtlasAttachmentLoader = TextureAtlasAttachmentLoader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Vector3 = (function () { + function Vector3() { + this.x = 0; + this.y = 0; + this.z = 0; + } + Vector3.prototype.set = function (x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + }; + Vector3.prototype.add = function (v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + }; + Vector3.prototype.sub = function (v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + }; + Vector3.prototype.scale = function (s) { + this.x *= s; + this.y *= s; + this.z *= s; + return this; + }; + Vector3.prototype.normalize = function () { + var len = this.length(); + if (len == 0) + return this; + len = 1 / len; + this.x *= len; + this.y *= len; + this.z *= len; + return this; + }; + Vector3.prototype.cross = function (v) { + return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); + }; + Vector3.prototype.multiply = function (matrix) { + var l_mat = matrix.values; + return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); + }; + Vector3.prototype.project = function (matrix) { + var l_mat = matrix.values; + var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); + return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); + }; + Vector3.prototype.dot = function (v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + }; + Vector3.prototype.length = function () { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + }; + Vector3.prototype.distance = function (v) { + var a = v.x - this.x; + var b = v.y - this.y; + var c = v.z - this.z; + return Math.sqrt(a * a + b * b + c * c); + }; + return Vector3; + }()); + webgl.Vector3 = Vector3; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + function getSourceGLBlendMode(gl, blendMode, premultipliedAlpha) { + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + switch (blendMode) { + case spine.BlendMode.Normal: return premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + case spine.BlendMode.Additive: return premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + case spine.BlendMode.Multiply: return gl.DST_COLOR; + case spine.BlendMode.Screen: return gl.ONE; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + webgl.getSourceGLBlendMode = getSourceGLBlendMode; + function getDestGLBlendMode(gl, blendMode) { + switch (blendMode) { + case spine.BlendMode.Normal: return gl.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Additive: return gl.ONE; + case spine.BlendMode.Multiply: return gl.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Screen: return gl.ONE_MINUS_SRC_ALPHA; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + webgl.getDestGLBlendMode = getDestGLBlendMode; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SpineWidget = (function () { + function SpineWidget(element, config) { + var _this = this; + this._mvp = new spine.webgl.Matrix4(); + this._paused = false; + this._lastFrameTime = Date.now() / 1000.0; + this._backgroundColor = new spine.Color(); + this._loaded = false; + if (!element) + throw new Error("Please provide a DOM element, e.g. document.getElementById('myelement')"); + if (!config) + throw new Error("Please provide a configuration, specifying at least the json file, atlas file and animation name"); + var elementId = element; + if (typeof (element) === "string") + element = document.getElementById(element); + if (element == null) + throw new Error("Element " + elementId + " does not exist"); + this.validateConfig(config); + var canvas = this.canvas = document.createElement("canvas"); + element.appendChild(canvas); + canvas.width = config.width; + canvas.height = config.height; + var webglConfig = { alpha: false }; + var gl = this.gl = (canvas.getContext("webgl", webglConfig) || canvas.getContext("experimental-webgl", webglConfig)); + this._shader = spine.webgl.Shader.newColoredTextured(gl); + this._batcher = new spine.webgl.PolygonBatcher(gl); + this._mvp.ortho2d(0, 0, 639, 479); + this._skeletonRenderer = new spine.webgl.SkeletonRenderer(gl); + var assets = this._assetManager = new spine.webgl.AssetManager(gl); + assets.loadText(config.atlas); + assets.loadText(config.json); + assets.loadTexture(config.atlas.replace(".atlas", ".png")); + requestAnimationFrame(function () { _this.load(); }); + } + SpineWidget.prototype.validateConfig = function (config) { + if (!config.atlas) + throw new Error("Please specify config.atlas"); + if (!config.json) + throw new Error("Please specify config.json"); + if (!config.animation) + throw new Error("Please specify config.animationName"); + if (!config.scale) + config.scale = 1.0; + if (!config.skin) + config.skin = "default"; + if (config.loop === undefined) + config.loop = true; + if (!config.y) + config.y = 20; + if (!config.width) + config.width = 640; + if (!config.height) + config.height = 480; + if (!config.x) + config.x = config.width / 2; + if (!config.backgroundColor) + config.backgroundColor = "#555555"; + if (!config.imagesPath) { + var index = config.atlas.lastIndexOf("/"); + if (index != -1) { + config.imagesPath = config.atlas.substr(0, index) + "/"; + } + else { + config.imagesPath = ""; + } + } + if (!config.premultipliedAlpha === undefined) + config.premultipliedAlpha = false; + this._backgroundColor.setFromString(config.backgroundColor); + this._config = config; + }; + SpineWidget.prototype.load = function () { + var _this = this; + var assetManager = this._assetManager; + var imagesPath = this._config.imagesPath; + var config = this._config; + if (assetManager.isLoadingComplete()) { + if (assetManager.hasErrors()) { + if (config.error) + config.error(this, "Failed to load assets: " + JSON.stringify(assetManager.errors)); + else + throw new Error("Failed to load assets: " + JSON.stringify(assetManager.errors)); + } + var atlas = new spine.webgl.TextureAtlas(this._assetManager.get(this._config.atlas), function (path) { + return assetManager.get(imagesPath + path); + }); + var atlasLoader = new spine.webgl.TextureAtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + // Set the scale to apply during parsing, parse the file, and create a new skeleton. + skeletonJson.scale = config.scale; + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(config.json)); + var skeleton = this.skeleton = new spine.Skeleton(skeletonData); + skeleton.x = config.x; + skeleton.y = config.y; + skeleton.setSkinByName(config.skin); + var animationState = this.state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + animationState.setAnimation(0, config.animation, true); + if (config.success) + config.success(this); + this._loaded = true; + requestAnimationFrame(function () { _this.render(); }); + } + else + requestAnimationFrame(function () { _this.load(); }); + }; + SpineWidget.prototype.render = function () { + var _this = this; + var now = Date.now() / 1000; + var delta = now - this._lastFrameTime; + if (delta > 0.1) + delta = 0; + this._lastFrameTime = now; + var gl = this.gl; + var color = this._backgroundColor; + gl.clearColor(color.r, color.g, color.b, color.a); + gl.clear(gl.COLOR_BUFFER_BIT); + // Apply the animation state based on the delta time. + var state = this.state; + var skeleton = this.skeleton; + var premultipliedAlpha = this._config.premultipliedAlpha; + state.update(delta); + state.apply(skeleton); + skeleton.updateWorldTransform(); + // Bind the shader and set the texture and model-view-projection matrix. + var shader = this._shader; + shader.bind(); + shader.setUniformi(spine.webgl.Shader.SAMPLER, 0); + shader.setUniform4x4f(spine.webgl.Shader.MVP_MATRIX, this._mvp.values); + // Start the batch and tell the SkeletonRenderer to render the active skeleton. + var batcher = this._batcher; + var skeletonRenderer = this._skeletonRenderer; + batcher.begin(shader); + skeletonRenderer.premultipliedAlpha = premultipliedAlpha; + skeletonRenderer.draw(batcher, skeleton); + batcher.end(); + shader.unbind(); + if (!this._paused) + requestAnimationFrame(function () { _this.render(); }); + }; + SpineWidget.prototype.pause = function () { + this._paused = true; + }; + SpineWidget.prototype.play = function () { + var _this = this; + this._paused = false; + requestAnimationFrame(function () { _this.render(); }); + }; + SpineWidget.prototype.isPlaying = function () { + return !this._paused; + }; + SpineWidget.prototype.setAnimation = function (animationName) { + if (!this._loaded) + throw new Error("Widget isn't loaded yet"); + this.skeleton.setToSetupPose(); + this.state.setAnimation(0, animationName, this._config.loop); + }; + SpineWidget.loadWidgets = function () { + var widgets = document.getElementsByClassName("spine-widget"); + for (var i = 0; i < widgets.length; i++) { + SpineWidget.loadWidget(widgets[i]); + } + }; + SpineWidget.loadWidget = function (widget) { + var config = new SpineWidgetConfig(); + config.atlas = widget.getAttribute("data-atlas"); + config.json = widget.getAttribute("data-json"); + config.animation = widget.getAttribute("data-animation"); + if (widget.getAttribute("data-images-path")) + config.imagesPath = widget.getAttribute("data-images-path"); + if (widget.getAttribute("data-skin")) + config.skin = widget.getAttribute("data-skin"); + if (widget.getAttribute("data-loop")) + config.loop = widget.getAttribute("data-loop") === "true"; + if (widget.getAttribute("data-scale")) + config.scale = parseFloat(widget.getAttribute("data-scale")); + if (widget.getAttribute("data-x")) + config.x = parseFloat(widget.getAttribute("data-x")); + if (widget.getAttribute("data-y")) + config.x = parseFloat(widget.getAttribute("data-y")); + if (widget.getAttribute("data-width")) + config.width = parseInt(widget.getAttribute("data-width")); + if (widget.getAttribute("data-height")) + config.height = parseInt(widget.getAttribute("data-height")); + if (widget.getAttribute("data-background-color")) + config.backgroundColor = widget.getAttribute("data-background-color"); + if (widget.getAttribute("data-premultiplied-alpha")) + config.premultipliedAlpha = widget.getAttribute("data-premultiplied-alpha") === "true"; + new spine.SpineWidget(widget, config); + }; + SpineWidget.ready = function () { + if (SpineWidget.pageLoaded) + return; + SpineWidget.pageLoaded = true; + SpineWidget.loadWidgets(); + }; + SpineWidget.setupDOMListener = function () { + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", SpineWidget.ready, false); + window.addEventListener("load", SpineWidget.ready, false); + } + else { + document.attachEvent("onreadystatechange", function readyStateChange() { + if (document.readyState === "complete") + SpineWidget.ready(); + }); + window.attachEvent("onload", SpineWidget.ready); + } + }; + SpineWidget.pageLoaded = false; + return SpineWidget; + }()); + spine.SpineWidget = SpineWidget; + var SpineWidgetConfig = (function () { + function SpineWidgetConfig() { + this.skin = "default"; + this.loop = true; + this.scale = 1.0; + this.x = 0; + this.y = 0; + this.width = 640; + this.height = 480; + this.backgroundColor = "#555555"; + this.premultipliedAlpha = false; + } + return SpineWidgetConfig; + }()); + spine.SpineWidgetConfig = SpineWidgetConfig; +})(spine || (spine = {})); +spine.SpineWidget.setupDOMListener(); +//# sourceMappingURL=spine-webgl.js.map \ No newline at end of file diff --git a/spine-ts/build/spine-webgl.js.map b/spine-ts/build/spine-webgl.js.map new file mode 100644 index 000000000..3a8cdca5a --- /dev/null +++ b/spine-ts/build/spine-webgl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spine-webgl.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/BlendMode.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/AttachmentType.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/attachments/TextureRegion.ts","../webgl/src/AssetManager.ts","../webgl/src/Matrix4.ts","../webgl/src/Mesh.ts","../webgl/src/PolygonBatcher.ts","../webgl/src/Shader.ts","../webgl/src/SkeletonRenderer.ts","../webgl/src/Texture.ts","../webgl/src/TextureAtlas.ts","../webgl/src/TextureAtlasAttachmentLoader.ts","../webgl/src/Vector3.ts","../webgl/src/WebGL.ts","../widget/src/Widget.ts"],"names":[],"mappings":"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AAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAChH,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,6BAAW,GAAX;gBACC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC3G,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG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CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,8BAAY,GAAZ,UAAc,MAAe;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,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"} \ No newline at end of file diff --git a/spine-ts/build/spine-widget.d.ts b/spine-ts/build/spine-widget.d.ts new file mode 100644 index 000000000..bab571348 --- /dev/null +++ b/spine-ts/build/spine-widget.d.ts @@ -0,0 +1,2502 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Animation { + name: string; + timelines: Array; + duration: number; + constructor(name: string, timelines: Array, duration: number); + apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array): void; + mix(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number): void; + static binarySearch(values: ArrayLike, target: number, step?: number): number; + static linearSearch(values: ArrayLike, target: number, step: number): number; + } + interface Timeline { + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + abstract class CurveTimeline implements Timeline { + static LINEAR: number; + static STEPPED: number; + static BEZIER: number; + static BEZIER_SIZE: number; + private curves; + constructor(frameCount: number); + getFrameCount(): number; + setLinear(frameIndex: number): void; + setStepped(frameIndex: number): void; + getCurveType(frameIndex: number): number; + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + getCurvePercent(frameIndex: number, percent: number): number; + abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class RotateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATION: number; + static ROTATION: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and angle of the specified keyframe. */ + setFrame(frameIndex: number, time: number, degrees: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class TranslateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_X: number; + static PREV_Y: number; + static X: number; + static Y: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ScaleTimeline extends TranslateTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ShearTimeline extends TranslateTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class ColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static R: number; + static G: number; + static B: number; + static A: number; + slotIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class AttachmentTimeline implements Timeline { + slotIndex: number; + frames: ArrayLike; + attachmentNames: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + class EventTimeline implements Timeline { + frames: ArrayLike; + events: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time of the specified keyframe. */ + setFrame(frameIndex: number, event: Event): void; + /** Fires events for frames > lastTime and <= time. */ + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class DrawOrderTimeline implements Timeline { + frames: ArrayLike; + drawOrders: Array>; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + setFrame(frameIndex: number, time: number, drawOrder: Array): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class DeformTimeline extends CurveTimeline { + frames: ArrayLike; + frameVertices: Array>; + slotIndex: number; + attachment: VertexAttachment; + constructor(frameCount: number); + /** Sets the time of the specified keyframe. */ + setFrame(frameIndex: number, time: number, vertices: ArrayLike): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class IkConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_MIX: number; + static PREV_BEND_DIRECTION: number; + static MIX: number; + static BEND_DIRECTION: number; + ikConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time, mix and bend direction of the specified keyframe. */ + setFrame(frameIndex: number, time: number, mix: number, bendDirection: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class TransformConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static PREV_SCALE: number; + static PREV_SHEAR: number; + static ROTATE: number; + static TRANSLATE: number; + static SCALE: number; + static SHEAR: number; + transformConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and mixes of the specified keyframe. */ + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintPositionTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_VALUE: number; + static VALUE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and value of the specified keyframe. */ + setFrame(frameIndex: number, time: number, value: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor(frameCount: number); + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } + class PathConstraintMixTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static ROTATE: number; + static TRANSLATE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + /** Sets the time and mixes of the specified keyframe. */ + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class AnimationState { + data: AnimationStateData; + tracks: TrackEntry[]; + events: Event[]; + listeners: AnimationStateListener[]; + timeScale: number; + constructor(data?: AnimationStateData); + update(delta: number): void; + apply(skeleton: Skeleton): void; + clearTracks(): void; + clearTrack(trackIndex: number): void; + freeAll(entry: TrackEntry): void; + expandToIndex(index: number): TrackEntry; + setCurrent(index: number, entry: TrackEntry): void; + /** @see #setAnimation(int, Animation, boolean) */ + setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; + /** Set the current animation. Any queued animations are cleared. */ + setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; + /** {@link #addAnimation(int, Animation, boolean, float)} */ + addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; + /** @return May be null. */ + getCurrent(trackIndex: number): TrackEntry; + /** Adds a listener to receive events for all animations. */ + addListener(listener: AnimationStateListener): void; + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + removeListener(listener: AnimationStateListener): void; + clearListeners(): void; + } + class TrackEntry { + next: TrackEntry; + previous: TrackEntry; + animation: Animation; + loop: boolean; + delay: number; + time: number; + lastTime: number; + endTime: number; + timeScale: number; + mixTime: number; + mixDuration: number; + listener: AnimationStateListener; + mix: number; + reset(): void; + /** Returns true if the current time is greater than the end time, regardless of looping. */ + isComplete(): boolean; + } + abstract class AnimationStateAdapter implements AnimationStateListener { + event(trackIndex: number, event: Event): void; + complete(trackIndex: number, loopCount: number): void; + start(trackIndex: number): void; + end(trackIndex: number): void; + } + interface AnimationStateListener { + /** Invoked when the current animation triggers an event. */ + event(trackIndex: number, event: Event): void; + /** Invoked when the current animation has completed. + * @param loopCount The number of times the animation reached the end. */ + complete(trackIndex: number, loopCount: number): void; + /** Invoked just after the current animation is set. */ + start(trackIndex: number): void; + /** Invoked just before the current animation is replaced. */ + end(trackIndex: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class AnimationStateData { + skeletonData: SkeletonData; + animationToMixTime: Map; + defaultMix: number; + constructor(skeletonData: SkeletonData); + setMix(fromName: string, toName: string, duration: number): void; + setMixWith(from: Animation, to: Animation, duration: number): void; + getMix(from: Animation, to: Animation): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + enum BlendMode { + Normal = 0, + Additive = 1, + Multiply = 2, + Screen = 3, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Bone implements Updatable { + data: BoneData; + skeleton: Skeleton; + parent: Bone; + children: Bone[]; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + appliedRotation: number; + a: number; + b: number; + worldX: number; + c: number; + d: number; + worldY: number; + worldSignX: number; + worldSignY: number; + sorted: boolean; + /** @param parent May be null. */ + constructor(data: BoneData, skeleton: Skeleton, parent: Bone); + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + update(): void; + /** Computes the world transform using the parent bone and this bone's local transform. */ + updateWorldTransform(): void; + /** Computes the world transform using the parent bone and the specified local transform. */ + updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; + setToSetupPose(): void; + getWorldRotationX(): number; + getWorldRotationY(): number; + getWorldScaleX(): number; + getWorldScaleY(): number; + worldToLocalRotationX(): number; + worldToLocalRotationY(): number; + rotateWorld(degrees: number): void; + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + updateLocalTransform(): void; + worldToLocal(world: Vector2): Vector2; + localToWorld(local: Vector2): Vector2; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class BoneData { + index: number; + name: string; + parent: BoneData; + length: number; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + inheritRotation: boolean; + inheritScale: boolean; + constructor(index: number, name: string, parent: BoneData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + constructor(time: number, data: EventData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class IkConstraint implements Updatable { + data: IkConstraintData; + bones: Array; + target: Bone; + mix: number; + bendDirection: number; + level: number; + constructor(data: IkConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + apply1(bone: Bone, targetX: number, targetY: number, alpha: number): void; + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class IkConstraintData { + name: string; + bones: BoneData[]; + target: BoneData; + bendDirection: number; + mix: number; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathConstraint implements Updatable { + static NONE: number; + static BEFORE: number; + static AFTER: number; + data: PathConstraintData; + bones: Array; + target: Slot; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + spaces: number[]; + positions: number[]; + world: number[]; + curves: number[]; + lengths: number[]; + segments: number[]; + constructor(data: PathConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; + addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathConstraintData { + name: string; + bones: BoneData[]; + target: SlotData; + positionMode: PositionMode; + spacingMode: SpacingMode; + rotateMode: RotateMode; + offsetRotation: number; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + constructor(name: string); + } + enum PositionMode { + Fixed = 0, + Percent = 1, + } + enum SpacingMode { + Length = 0, + Fixed = 1, + Percent = 2, + } + enum RotateMode { + Tangent = 0, + Chain = 1, + ChainScale = 2, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Skeleton { + data: SkeletonData; + bones: Array; + slots: Array; + drawOrder: Array; + ikConstraints: Array; + ikConstraintsSorted: Array; + transformConstraints: Array; + pathConstraints: Array; + _updateCache: Updatable[]; + skin: Skin; + color: Color; + time: number; + flipX: boolean; + flipY: boolean; + x: number; + y: number; + constructor(data: SkeletonData); + updateCache(): void; + sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; + sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; + sortBone(bone: Bone): void; + sortReset(bones: Array): void; + /** Updates the world transform for each bone and applies constraints. */ + updateWorldTransform(): void; + /** Sets the bones, constraints, and slots to their setup pose values. */ + setToSetupPose(): void; + /** Sets the bones and constraints to their setup pose values. */ + setBonesToSetupPose(): void; + setSlotsToSetupPose(): void; + /** @return May return null. */ + getRootBone(): Bone; + /** @return May be null. */ + findBone(boneName: string): Bone; + /** @return -1 if the bone was not found. */ + findBoneIndex(boneName: string): number; + /** @return May be null. */ + findSlot(slotName: string): Slot; + /** @return -1 if the bone was not found. */ + findSlotIndex(slotName: string): number; + /** Sets a skin by name. + * @see #setSkin(Skin) */ + setSkinByName(skinName: string): void; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + setSkin(newSkin: Skin): void; + /** @return May be null. */ + getAttachmentByName(slotName: string, attachmentName: string): Attachment; + /** @return May be null. */ + getAttachment(slotIndex: number, attachmentName: string): Attachment; + /** @param attachmentName May be null. */ + setAttachment(slotName: string, attachmentName: string): void; + /** @return May be null. */ + findIkConstraint(constraintName: string): IkConstraint; + /** @return May be null. */ + findTransformConstraint(constraintName: string): TransformConstraint; + /** @return May be null. */ + findPathConstraint(constraintName: string): PathConstraint; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + getBounds(offset: Vector2, size: Vector2): void; + update(delta: number): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonBounds { + minX: number; + minY: number; + maxX: number; + maxY: number; + boundingBoxes: BoundingBoxAttachment[]; + polygons: ArrayLike[]; + private _polygonPool; + update(skeleton: Skeleton, updateAabb: boolean): void; + aabbCompute(): void; + /** Returns true if the axis aligned bounding box contains the point. */ + aabbContainsPoint(x: number, y: number): boolean; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; + /** 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. */ + containsPoint(x: number, y: number): BoundingBoxAttachment; + /** Returns true if the polygon contains the point. */ + containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; + /** Returns the first bounding box attachment that contains any part of 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. */ + intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; + /** Returns true if the polygon contains any part of the line segment. */ + intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns the polygon for the specified bounding box, or null. */ + getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonData { + name: string; + bones: BoneData[]; + slots: SlotData[]; + skins: Skin[]; + defaultSkin: Skin; + events: EventData[]; + animations: Animation[]; + ikConstraints: IkConstraintData[]; + transformConstraints: TransformConstraintData[]; + pathConstraints: PathConstraintData[]; + width: number; + height: number; + version: string; + hash: string; + imagesPath: string; + findBone(boneName: string): BoneData; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): SlotData; + findSlotIndex(slotName: string): number; + findSkin(skinName: string): Skin; + findEvent(eventDataName: string): EventData; + findAnimation(animationName: string): Animation; + findIkConstraint(constraintName: string): IkConstraintData; + findTransformConstraint(constraintName: string): TransformConstraintData; + findPathConstraint(constraintName: string): PathConstraintData; + findPathConstraintIndex(pathConstraintName: string): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SkeletonJson { + attachmentLoader: AttachmentLoader; + scale: number; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(json: string): SkeletonData; + readAttachment(map: any, skin: Skin, slotIndex: number, name: string): Attachment; + readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; + readAnimation(map: any, name: string, skeletonData: SkeletonData): void; + readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; + getValue(map: any, prop: string, defaultValue: any): any; + static blendModeFromString(str: string): BlendMode; + static positionModeFromString(str: string): PositionMode; + static spacingModeFromString(str: string): SpacingMode; + static rotateModeFromString(str: string): RotateMode; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Skin { + name: string; + attachments: Map[]; + constructor(name: string); + addAttachment(slotIndex: number, name: string, attachment: Attachment): void; + /** @return May be null. */ + getAttachment(slotIndex: number, name: string): Attachment; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + attachAll(skeleton: Skeleton, oldSkin: Skin): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class Slot { + data: SlotData; + bone: Bone; + color: Color; + private attachment; + private attachmentTime; + attachmentVertices: number[]; + constructor(data: SlotData, bone: Bone); + /** @return May be null. */ + getAttachment(): Attachment; + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + setAttachment(attachment: Attachment): void; + setAttachmentTime(time: number): void; + /** Returns the time since the attachment was set. */ + getAttachmentTime(): number; + setToSetupPose(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SlotData { + index: number; + name: string; + boneData: BoneData; + color: Color; + attachmentName: string; + blendMode: BlendMode; + constructor(index: number, name: string, boneData: BoneData); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TransformConstraint implements Updatable { + data: TransformConstraintData; + bones: Array; + target: Bone; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + temp: Vector2; + constructor(data: TransformConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TransformConstraintData { + name: string; + bones: BoneData[]; + target: BoneData; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + offsetRotation: number; + offsetX: number; + offsetY: number; + offsetScaleX: number; + offsetScaleY: number; + offsetShearY: number; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface Updatable { + update(): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface Map { + [key: string]: T; + } + interface Disposable { + dispose(): void; + } + class Color { + r: number; + g: number; + b: number; + a: number; + constructor(r?: number, g?: number, b?: number, a?: number); + set(r: number, g: number, b: number, a: number): void; + setFromColor(c: Color): void; + setFromString(hex: string): void; + add(r: number, g: number, b: number, a: number): void; + clamp(): this; + } + class MathUtils { + static PI: number; + static PI2: number; + static radiansToDegrees: number; + static radDeg: number; + static degreesToRadians: number; + static degRad: number; + static clamp(value: number, min: number, max: number): number; + static cosDeg(degrees: number): number; + static sinDeg(degrees: number): number; + static signum(value: number): number; + static toInt(x: number): number; + } + class Utils { + static SUPPORTS_TYPED_ARRAYS: boolean; + static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; + static setArraySize(array: Array, size: number, value?: any): Array; + static newArray(size: number, defaultValue: T): Array; + static newFloatArray(size: number): ArrayLike; + static toFloatArray(array: Array): Float32Array | number[]; + } + class Pool { + private _items; + private _instantiator; + constructor(instantiator: () => T); + obtain(): T; + free(item: T): void; + freeAll(items: ArrayLike): void; + clear(): void; + } + class Vector2 { + x: number; + y: number; + constructor(x?: number, y?: number); + set(x: number, y: number): Vector2; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + abstract class Attachment { + name: string; + constructor(name: string); + } + abstract class VertexAttachment extends Attachment { + bones: Array; + vertices: ArrayLike; + worldVerticesLength: number; + constructor(name: string); + computeWorldVertices(slot: Slot, worldVertices: ArrayLike): void; + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + computeWorldVerticesWith(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number): void; + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + applyDeform(sourceAttachment: VertexAttachment): boolean; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + interface AttachmentLoader { + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + enum AttachmentType { + Region = 0, + BoundingBox = 1, + Mesh = 2, + LinkedMesh = 3, + Path = 4, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class BoundingBoxAttachment extends VertexAttachment { + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class MeshAttachment extends VertexAttachment { + region: TextureRegion; + path: string; + regionUVs: ArrayLike; + worldVertices: ArrayLike; + triangles: Array; + color: Color; + hullLength: number; + private _parentMesh; + inheritDeform: boolean; + tempColor: Color; + constructor(name: string); + updateUVs(): void; + /** @return The updated world vertices. */ + updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike; + applyDeform(sourceAttachment: VertexAttachment): boolean; + getParentMesh(): MeshAttachment; + /** @param parentMesh May be null. */ + setParentMesh(parentMesh: MeshAttachment): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class PathAttachment extends VertexAttachment { + lengths: Array; + closed: boolean; + constantSpeed: boolean; + constructor(name: string); + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class RegionAttachment extends Attachment { + static OX1: number; + static OY1: number; + static OX2: number; + static OY2: number; + static OX3: number; + static OY3: number; + static OX4: number; + static OY4: number; + static X1: number; + static Y1: number; + static C1R: number; + static C1G: number; + static C1B: number; + static C1A: number; + static U1: number; + static V1: number; + static X2: number; + static Y2: number; + static C2R: number; + static C2G: number; + static C2B: number; + static C2A: number; + static U2: number; + static V2: number; + static X3: number; + static Y3: number; + static C3R: number; + static C3G: number; + static C3B: number; + static C3A: number; + static U3: number; + static V3: number; + static X4: number; + static Y4: number; + static C4R: number; + static C4G: number; + static C4B: number; + static C4A: number; + static U4: number; + static V4: number; + x: number; + y: number; + scaleX: number; + scaleY: number; + rotation: number; + width: number; + height: number; + color: Color; + path: string; + rendererObject: any; + region: TextureRegion; + offset: ArrayLike; + vertices: ArrayLike; + tempColor: Color; + constructor(name: string); + setRegion(region: TextureRegion): void; + updateOffset(): void; + updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class TextureRegion { + renderObject: any; + u: number; + v: number; + u2: number; + v2: number; + width: number; + height: number; + rotate: boolean; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class AssetManager implements Disposable { + private _gl; + private _assets; + private _errors; + private _toLoad; + private _loaded; + constructor(gl: WebGLRenderingContext); + loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; + loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + get(path: string): string | Texture; + remove(path: string): void; + removeAll(): void; + isLoadingComplete(): boolean; + toLoad(): number; + loaded(): number; + dispose(): void; + hasErrors(): boolean; + errors(): Map; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + const M00: number; + const M01: number; + const M02: number; + const M03: number; + const M10: number; + const M11: number; + const M12: number; + const M13: number; + const M20: number; + const M21: number; + const M22: number; + const M23: number; + const M30: number; + const M31: number; + const M32: number; + const M33: number; + class Matrix4 { + temp: Float32Array; + values: Float32Array; + constructor(); + set(values: ArrayLike): Matrix4; + transpose(): Matrix4; + identity(): Matrix4; + invert(): Matrix4; + determinant(): number; + translate(x: number, y: number, z: number): Matrix4; + copy(): Matrix4; + projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; + ortho2d(x: number, y: number, width: number, height: number): Matrix4; + ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; + multiply(matrix: Matrix4): Matrix4; + multiplyLeft(matrix: Matrix4): Matrix4; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Mesh implements Disposable { + private _attributes; + private _gl; + private _vertices; + private _verticesBuffer; + private _verticesLength; + private _dirtyVertices; + private _indices; + private _indicesBuffer; + private _indicesLength; + private _dirtyIndices; + private _elementsPerVertex; + attributes(): VertexAttribute[]; + maxVertices(): number; + numVertices(): number; + setVerticesLength(length: number): void; + vertices(): Float32Array; + maxIndices(): number; + numIndices(): number; + setIndicesLength(length: number): void; + indices(): Uint16Array; + constructor(gl: WebGLRenderingContext, _attributes: VertexAttribute[], maxVertices: number, maxIndices: number); + setVertices(vertices: Array): void; + setIndices(indices: Array): void; + draw(shader: Shader, primitiveType: number): void; + drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; + bind(shader: Shader): void; + unbind(shader: Shader): void; + private update(); + dispose(): void; + } + class VertexAttribute { + name: string; + type: VertexAttributeType; + numElements: number; + constructor(name: string, type: VertexAttributeType, numElements: number); + } + class Position2Attribute extends VertexAttribute { + constructor(); + } + class Position3Attribute extends VertexAttribute { + constructor(); + } + class TexCoordAttribute extends VertexAttribute { + constructor(unit?: number); + } + class ColorAttribute extends VertexAttribute { + constructor(); + } + enum VertexAttributeType { + Float = 0, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class PolygonBatcher { + private _gl; + private _drawCalls; + private _drawing; + private _mesh; + private _shader; + private _lastTexture; + private _verticesLength; + private _indicesLength; + private _srcBlend; + private _dstBlend; + constructor(gl: WebGLRenderingContext, maxVertices?: number); + begin(shader: Shader): void; + setBlendMode(srcBlend: number, dstBlend: number): void; + draw(texture: Texture, vertices: ArrayLike, indices: Array): void; + private flush(); + end(): void; + drawCalls(): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Shader implements Disposable { + private _vertexShader; + private _fragmentShader; + static MVP_MATRIX: string; + static POSITION: string; + static COLOR: string; + static TEXCOORDS: string; + static SAMPLER: string; + private _gl; + private _vs; + private _fs; + private _program; + private _tmp2x2; + private _tmp3x3; + private _tmp4x4; + program(): WebGLProgram; + vertexShader(): string; + fragmentShader(): string; + constructor(gl: WebGLRenderingContext, _vertexShader: string, _fragmentShader: string); + private compile(); + private compileShader(type, source); + private compileProgram(vs, fs); + bind(): void; + unbind(): void; + setUniformi(uniform: string, value: number): void; + setUniformf(uniform: string, value: number): void; + setUniform2f(uniform: string, value: number, value2: number): void; + setUniform3f(uniform: string, value: number, value2: number, value3: number): void; + setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; + setUniform2x2f(uniform: string, value: ArrayLike): void; + setUniform3x3f(uniform: string, value: ArrayLike): void; + setUniform4x4f(uniform: string, value: ArrayLike): void; + getUniformLocation(uniform: string): WebGLUniformLocation; + getAttributeLocation(attribute: string): number; + dispose(): void; + static newColoredTextured(gl: WebGLRenderingContext): Shader; + static newColored(gl: WebGLRenderingContext): Shader; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class SkeletonRenderer { + static QUAD_TRIANGLES: number[]; + premultipliedAlpha: boolean; + private _gl; + constructor(gl: WebGLRenderingContext); + draw(batcher: PolygonBatcher, skeleton: Skeleton): void; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Texture implements Disposable { + private _gl; + private _texture; + private _image; + private _boundUnit; + constructor(gl: WebGLRenderingContext, image: HTMLImageElement, useMipMaps?: boolean); + getImage(): HTMLImageElement; + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + update(useMipMaps: boolean): void; + bind(unit?: number): void; + unbind(): void; + dispose(): void; + static filterFromString(text: string): TextureFilter; + static wrapFromString(text: string): TextureWrap; + } + enum TextureFilter { + Nearest, + Linear, + MipMap, + MipMapNearestNearest, + MipMapLinearNearest, + MipMapNearestLinear, + MipMapLinearLinear, + } + enum TextureWrap { + MirroredRepeat, + ClampToEdge, + Repeat, + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class TextureAtlas implements Disposable { + pages: TextureAtlasPage[]; + regions: TextureAtlasRegion[]; + constructor(atlasText: string, textureLoader: (path: string) => Texture); + private load(atlasText, textureLoader); + findRegion(name: string): TextureAtlasRegion; + dispose(): void; + } + class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + } + class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + index: number; + rotate: boolean; + texture: Texture; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class TextureAtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + constructor(atlas: TextureAtlas); + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + class Vector3 { + x: number; + y: number; + z: number; + set(x: number, y: number, z: number): Vector3; + add(v: Vector3): Vector3; + sub(v: Vector3): Vector3; + scale(s: number): Vector3; + normalize(): Vector3; + cross(v: Vector3): Vector3; + multiply(matrix: Matrix4): Vector3; + project(matrix: Matrix4): Vector3; + dot(v: Vector3): number; + length(): number; + distance(v: Vector3): number; + } +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine.webgl { + function getSourceGLBlendMode(gl: WebGLRenderingContext, blendMode: BlendMode, premultipliedAlpha?: boolean): number; + function getDestGLBlendMode(gl: WebGLRenderingContext, blendMode: BlendMode): number; +} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare module spine { + class SpineWidget { + skeleton: Skeleton; + state: AnimationState; + gl: WebGLRenderingContext; + canvas: HTMLCanvasElement; + private _config; + private _assetManager; + private _shader; + private _batcher; + private _mvp; + private _skeletonRenderer; + private _paused; + private _lastFrameTime; + private _backgroundColor; + private _loaded; + constructor(element: Element | string, config: SpineWidgetConfig); + private validateConfig(config); + private load(); + private render(); + pause(): void; + play(): void; + isPlaying(): boolean; + setAnimation(animationName: string): void; + static loadWidgets(): void; + static loadWidget(widget: Element): void; + static pageLoaded: boolean; + private static ready(); + static setupDOMListener(): void; + } + class SpineWidgetConfig { + json: string; + atlas: string; + animation: string; + imagesPath: string; + skin: string; + loop: boolean; + scale: number; + x: number; + y: number; + width: number; + height: number; + backgroundColor: string; + premultipliedAlpha: boolean; + success: (widget: SpineWidget) => void; + error: (widget: SpineWidget, msg: string) => void; + } +} diff --git a/spine-ts/build/spine-widget.js b/spine-ts/build/spine-widget.js new file mode 100644 index 000000000..f7fc58237 --- /dev/null +++ b/spine-ts/build/spine-widget.js @@ -0,0 +1,6877 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var spine; +(function (spine) { + var Animation = (function () { + function Animation(name, timelines, duration) { + if (name == null) + throw new Error("name cannot be null."); + if (timelines == null) + throw new Error("timelines cannot be null."); + this.name = name; + this.timelines = timelines; + this.duration = duration; + } + Animation.prototype.apply = function (skeleton, lastTime, time, loop, events) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, 1); + }; + Animation.prototype.mix = function (skeleton, lastTime, time, loop, events, alpha) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha); + }; + Animation.binarySearch = function (values, target, step) { + if (step === void 0) { step = 1; } + var low = 0; + var high = values.length / step - 2; + if (high == 0) + return step; + var current = high >>> 1; + while (true) { + if (values[(current + 1) * step] <= target) + low = current + 1; + else + high = current; + if (low == high) + return (low + 1) * step; + current = (low + high) >>> 1; + } + }; + Animation.linearSearch = function (values, target, step) { + for (var i = 0, last = values.length - step; i <= last; i += step) + if (values[i] > target) + return i; + return -1; + }; + return Animation; + }()); + spine.Animation = Animation; + var CurveTimeline = (function () { + function CurveTimeline(frameCount) { + if (frameCount <= 0) + throw new Error("frameCount must be > 0: " + frameCount); + this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); + } + CurveTimeline.prototype.getFrameCount = function () { + return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; + }; + CurveTimeline.prototype.setLinear = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; + }; + CurveTimeline.prototype.setStepped = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; + }; + CurveTimeline.prototype.getCurveType = function (frameIndex) { + var index = frameIndex * CurveTimeline.BEZIER_SIZE; + if (index == this.curves.length) + return CurveTimeline.LINEAR; + var type = this.curves[index]; + if (type == CurveTimeline.LINEAR) + return CurveTimeline.LINEAR; + if (type == CurveTimeline.STEPPED) + return CurveTimeline.STEPPED; + return CurveTimeline.BEZIER; + }; + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + CurveTimeline.prototype.setCurve = function (frameIndex, cx1, cy1, cx2, cy2) { + var tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; + var dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; + var ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; + var dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var curves = this.curves; + curves[i++] = CurveTimeline.BEZIER; + var x = dfx, y = dfy; + for (var n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } + }; + CurveTimeline.prototype.getCurvePercent = function (frameIndex, percent) { + percent = spine.MathUtils.clamp(percent, 0, 1); + var curves = this.curves; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var type = curves[i]; + if (type == CurveTimeline.LINEAR) + return percent; + if (type == CurveTimeline.STEPPED) + return 0; + i++; + var x = 0; + for (var start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + x = curves[i]; + if (x >= percent) { + var prevX = void 0, prevY = void 0; + if (i == start) { + prevX = 0; + prevY = 0; + } + else { + prevX = curves[i - 2]; + prevY = curves[i - 1]; + } + return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + var y = curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1. + }; + CurveTimeline.LINEAR = 0; + CurveTimeline.STEPPED = 1; + CurveTimeline.BEZIER = 2; + CurveTimeline.BEZIER_SIZE = 10 * 2 - 1; + return CurveTimeline; + }()); + spine.CurveTimeline = CurveTimeline; + var RotateTimeline = (function (_super) { + __extends(RotateTimeline, _super); + function RotateTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount << 1); + } + /** Sets the time and angle of the specified keyframe. */ + RotateTimeline.prototype.setFrame = function (frameIndex, time, degrees) { + frameIndex <<= 1; + this.frames[frameIndex] = time; + this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; + }; + RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { + var amount_1 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation; + while (amount_1 > 180) + amount_1 -= 360; + while (amount_1 < -180) + amount_1 += 360; + bone.rotation += amount_1 * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); + var prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); + var amount = frames[frame + RotateTimeline.ROTATION] - prevRotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + amount = bone.data.rotation + (prevRotation + amount * percent) - bone.rotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + bone.rotation += amount * alpha; + }; + RotateTimeline.ENTRIES = 2; + RotateTimeline.PREV_TIME = -2; + RotateTimeline.PREV_ROTATION = -1; + RotateTimeline.ROTATION = 1; + return RotateTimeline; + }(CurveTimeline)); + spine.RotateTimeline = RotateTimeline; + var TranslateTimeline = (function (_super) { + __extends(TranslateTimeline, _super); + function TranslateTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + TranslateTimeline.prototype.setFrame = function (frameIndex, time, x, y) { + frameIndex *= TranslateTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TranslateTimeline.X] = x; + this.frames[frameIndex + TranslateTimeline.Y] = y; + }; + TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { + bone.x += (bone.data.x + frames[frames.length + TranslateTimeline.PREV_X] - bone.x) * alpha; + bone.y += (bone.data.y + frames[frames.length + TranslateTimeline.PREV_Y] - bone.y) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); + var prevX = frames[frame + TranslateTimeline.PREV_X]; + var prevY = frames[frame + TranslateTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); + bone.x += (bone.data.x + prevX + (frames[frame + TranslateTimeline.X] - prevX) * percent - bone.x) * alpha; + bone.y += (bone.data.y + prevY + (frames[frame + TranslateTimeline.Y] - prevY) * percent - bone.y) * alpha; + }; + TranslateTimeline.ENTRIES = 3; + TranslateTimeline.PREV_TIME = -3; + TranslateTimeline.PREV_X = -2; + TranslateTimeline.PREV_Y = -1; + TranslateTimeline.X = 1; + TranslateTimeline.Y = 2; + return TranslateTimeline; + }(CurveTimeline)); + spine.TranslateTimeline = TranslateTimeline; + var ScaleTimeline = (function (_super) { + __extends(ScaleTimeline, _super); + function ScaleTimeline(frameCount) { + _super.call(this, frameCount); + } + ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { + bone.scaleX += (bone.data.scaleX * frames[frames.length + ScaleTimeline.PREV_X] - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * frames[frames.length + ScaleTimeline.PREV_Y] - bone.scaleY) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); + var prevX = frames[frame + ScaleTimeline.PREV_X]; + var prevY = frames[frame + ScaleTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); + bone.scaleX += (bone.data.scaleX * (prevX + (frames[frame + ScaleTimeline.X] - prevX) * percent) - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * (prevY + (frames[frame + ScaleTimeline.Y] - prevY) * percent) - bone.scaleY) * alpha; + }; + return ScaleTimeline; + }(TranslateTimeline)); + spine.ScaleTimeline = ScaleTimeline; + var ShearTimeline = (function (_super) { + __extends(ShearTimeline, _super); + function ShearTimeline(frameCount) { + _super.call(this, frameCount); + } + ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { + bone.shearX += (bone.data.shearX + frames[frames.length + ShearTimeline.PREV_X] - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + frames[frames.length + ShearTimeline.PREV_Y] - bone.shearY) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); + var prevX = frames[frame + ShearTimeline.PREV_X]; + var prevY = frames[frame + ShearTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); + bone.shearX += (bone.data.shearX + (prevX + (frames[frame + ShearTimeline.X] - prevX) * percent) - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + (prevY + (frames[frame + ShearTimeline.Y] - prevY) * percent) - bone.shearY) * alpha; + }; + return ShearTimeline; + }(TranslateTimeline)); + spine.ShearTimeline = ShearTimeline; + var ColorTimeline = (function (_super) { + __extends(ColorTimeline, _super); + function ColorTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + ColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a) { + frameIndex *= ColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + ColorTimeline.R] = r; + this.frames[frameIndex + ColorTimeline.G] = g; + this.frames[frameIndex + ColorTimeline.B] = b; + this.frames[frameIndex + ColorTimeline.A] = a; + }; + ColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var r = 0, g = 0, b = 0, a = 0; + if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { + var i = frames.length; + r = frames[i + ColorTimeline.PREV_R]; + g = frames[i + ColorTimeline.PREV_G]; + b = frames[i + ColorTimeline.PREV_B]; + a = frames[i + ColorTimeline.PREV_A]; + } + else { + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); + r = frames[frame + ColorTimeline.PREV_R]; + g = frames[frame + ColorTimeline.PREV_G]; + b = frames[frame + ColorTimeline.PREV_B]; + a = frames[frame + ColorTimeline.PREV_A]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + ColorTimeline.R] - r) * percent; + g += (frames[frame + ColorTimeline.G] - g) * percent; + b += (frames[frame + ColorTimeline.B] - b) * percent; + a += (frames[frame + ColorTimeline.A] - a) * percent; + } + var color = skeleton.slots[this.slotIndex].color; + if (alpha < 1) + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + else + color.set(r, g, b, a); + }; + ColorTimeline.ENTRIES = 5; + ColorTimeline.PREV_TIME = -5; + ColorTimeline.PREV_R = -4; + ColorTimeline.PREV_G = -3; + ColorTimeline.PREV_B = -2; + ColorTimeline.PREV_A = -1; + ColorTimeline.R = 1; + ColorTimeline.G = 2; + ColorTimeline.B = 3; + ColorTimeline.A = 4; + return ColorTimeline; + }(CurveTimeline)); + spine.ColorTimeline = ColorTimeline; + var AttachmentTimeline = (function () { + function AttachmentTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.attachmentNames = new Array(frameCount); + } + AttachmentTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time and value of the specified keyframe. */ + AttachmentTimeline.prototype.setFrame = function (frameIndex, time, attachmentName) { + this.frames[frameIndex] = time; + this.attachmentNames[frameIndex] = attachmentName; + }; + AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frameIndex = 0; + if (time >= frames[frames.length - 1]) + frameIndex = frames.length - 1; + else + frameIndex = Animation.binarySearch(frames, time, 1) - 1; + var attachmentName = this.attachmentNames[frameIndex]; + skeleton.slots[this.slotIndex] + .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + }; + return AttachmentTimeline; + }()); + spine.AttachmentTimeline = AttachmentTimeline; + var EventTimeline = (function () { + function EventTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.events = new Array(frameCount); + } + EventTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time of the specified keyframe. */ + EventTimeline.prototype.setFrame = function (frameIndex, event) { + this.frames[frameIndex] = event.time; + this.events[frameIndex] = event; + }; + /** Fires events for frames > lastTime and <= time. */ + EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + if (firedEvents == null) + return; + var frames = this.frames; + var frameCount = this.frames.length; + if (lastTime > time) { + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha); + lastTime = -1; + } + else if (lastTime >= frames[frameCount - 1]) + return; + if (time < frames[0]) + return; // Time is before first frame. + var frame = 0; + if (lastTime < frames[0]) + frame = 0; + else { + frame = Animation.binarySearch(frames, lastTime); + var frameTime = frames[frame]; + while (frame > 0) { + if (frames[frame - 1] != frameTime) + break; + frame--; + } + } + for (; frame < frameCount && time >= frames[frame]; frame++) + firedEvents.push(this.events[frame]); + }; + return EventTimeline; + }()); + spine.EventTimeline = EventTimeline; + var DrawOrderTimeline = (function () { + function DrawOrderTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.drawOrders = new Array(frameCount); + } + DrawOrderTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + DrawOrderTimeline.prototype.setFrame = function (frameIndex, time, drawOrder) { + this.frames[frameIndex] = time; + this.drawOrders[frameIndex] = drawOrder; + }; + DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frame = 0; + if (time >= frames[frames.length - 1]) + frame = frames.length - 1; + else + frame = Animation.binarySearch(frames, time) - 1; + var drawOrder = skeleton.drawOrder; + var slots = skeleton.slots; + var drawOrderToSetupIndex = this.drawOrders[frame]; + if (drawOrderToSetupIndex == null) + spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); + else { + for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) + drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + } + }; + return DrawOrderTimeline; + }()); + spine.DrawOrderTimeline = DrawOrderTimeline; + var DeformTimeline = (function (_super) { + __extends(DeformTimeline, _super); + function DeformTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount); + this.frameVertices = new Array(frameCount); + } + /** Sets the time of the specified keyframe. */ + DeformTimeline.prototype.setFrame = function (frameIndex, time, vertices) { + this.frames[frameIndex] = time; + this.frameVertices[frameIndex] = vertices; + }; + DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var slot = skeleton.slots[this.slotIndex]; + var slotAttachment = slot.getAttachment(); + if (!(slotAttachment instanceof spine.VertexAttachment) || !slotAttachment.applyDeform(this.attachment)) + return; + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var frameVertices = this.frameVertices; + var vertexCount = frameVertices[0].length; + var verticesArray = slot.attachmentVertices; + if (verticesArray.length != vertexCount) + alpha = 1; // Don't mix from uninitialized slot vertices. + var vertices = spine.Utils.setArraySize(verticesArray, vertexCount); + if (time >= frames[frames.length - 1]) { + var lastVertices = frameVertices[frames.length - 1]; + if (alpha < 1) { + for (var i = 0; i < vertexCount; i++) + vertices[i] += (lastVertices[i] - vertices[i]) * alpha; + } + else + spine.Utils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount); + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time); + var prevVertices = frameVertices[frame - 1]; + var nextVertices = frameVertices[frame]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); + if (alpha < 1) { + for (var i = 0; i < vertexCount; i++) { + var prev = prevVertices[i]; + vertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha; + } + } + else { + for (var i = 0; i < vertexCount; i++) { + var prev = prevVertices[i]; + vertices[i] = prev + (nextVertices[i] - prev) * percent; + } + } + }; + return DeformTimeline; + }(CurveTimeline)); + spine.DeformTimeline = DeformTimeline; + var IkConstraintTimeline = (function (_super) { + __extends(IkConstraintTimeline, _super); + function IkConstraintTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); + } + /** Sets the time, mix and bend direction of the specified keyframe. */ + IkConstraintTimeline.prototype.setFrame = function (frameIndex, time, mix, bendDirection) { + frameIndex *= IkConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; + this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; + }; + IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; + if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { + constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]); + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); + var mix = frames[frame + IkConstraintTimeline.PREV_MIX]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); + constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]); + }; + IkConstraintTimeline.ENTRIES = 3; + IkConstraintTimeline.PREV_TIME = -3; + IkConstraintTimeline.PREV_MIX = -2; + IkConstraintTimeline.PREV_BEND_DIRECTION = -1; + IkConstraintTimeline.MIX = 1; + IkConstraintTimeline.BEND_DIRECTION = 2; + return IkConstraintTimeline; + }(CurveTimeline)); + spine.IkConstraintTimeline = IkConstraintTimeline; + var TransformConstraintTimeline = (function (_super) { + __extends(TransformConstraintTimeline, _super); + function TransformConstraintTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); + } + /** Sets the time and mixes of the specified keyframe. */ + TransformConstraintTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { + frameIndex *= TransformConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; + this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; + this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; + }; + TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; + if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { + var i = frames.length; + constraint.rotateMix += (frames[i + TransformConstraintTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + TransformConstraintTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + constraint.scaleMix += (frames[i + TransformConstraintTimeline.PREV_SCALE] - constraint.scaleMix) * alpha; + constraint.shearMix += (frames[i + TransformConstraintTimeline.PREV_SHEAR] - constraint.shearMix) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); + var rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; + var translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; + var scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; + var shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; + constraint.rotateMix += (rotate + (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + constraint.scaleMix += (scale + (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent - constraint.scaleMix) * alpha; + constraint.shearMix += (shear + (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent - constraint.shearMix) * alpha; + }; + TransformConstraintTimeline.ENTRIES = 5; + TransformConstraintTimeline.PREV_TIME = -5; + TransformConstraintTimeline.PREV_ROTATE = -4; + TransformConstraintTimeline.PREV_TRANSLATE = -3; + TransformConstraintTimeline.PREV_SCALE = -2; + TransformConstraintTimeline.PREV_SHEAR = -1; + TransformConstraintTimeline.ROTATE = 1; + TransformConstraintTimeline.TRANSLATE = 2; + TransformConstraintTimeline.SCALE = 3; + TransformConstraintTimeline.SHEAR = 4; + return TransformConstraintTimeline; + }(CurveTimeline)); + spine.TransformConstraintTimeline = TransformConstraintTimeline; + var PathConstraintPositionTimeline = (function (_super) { + __extends(PathConstraintPositionTimeline, _super); + function PathConstraintPositionTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); + } + /** Sets the time and value of the specified keyframe. */ + PathConstraintPositionTimeline.prototype.setFrame = function (frameIndex, time, value) { + frameIndex *= PathConstraintPositionTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; + }; + PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) { + var i = frames.length; + constraint.position += (frames[i + PathConstraintPositionTimeline.PREV_VALUE] - constraint.position) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); + var position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); + constraint.position += (position + (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent - constraint.position) * alpha; + }; + PathConstraintPositionTimeline.ENTRIES = 2; + PathConstraintPositionTimeline.PREV_TIME = -2; + PathConstraintPositionTimeline.PREV_VALUE = -1; + PathConstraintPositionTimeline.VALUE = 1; + return PathConstraintPositionTimeline; + }(CurveTimeline)); + spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; + var PathConstraintSpacingTimeline = (function (_super) { + __extends(PathConstraintSpacingTimeline, _super); + function PathConstraintSpacingTimeline(frameCount) { + _super.call(this, frameCount); + } + PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) { + var i = frames.length; + constraint.spacing += (frames[i + PathConstraintSpacingTimeline.PREV_VALUE] - constraint.spacing) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); + var spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); + constraint.spacing += (spacing + (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent - constraint.spacing) * alpha; + }; + return PathConstraintSpacingTimeline; + }(PathConstraintPositionTimeline)); + spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; + var PathConstraintMixTimeline = (function (_super) { + __extends(PathConstraintMixTimeline, _super); + function PathConstraintMixTimeline(frameCount) { + _super.call(this, frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); + } + /** Sets the time and mixes of the specified keyframe. */ + PathConstraintMixTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix) { + frameIndex *= PathConstraintMixTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; + }; + PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha) { + var frames = this.frames; + if (time < frames[0]) + return; // Time is before first frame. + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { + var i = frames.length; + constraint.rotateMix += (frames[i + PathConstraintMixTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + PathConstraintMixTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); + var rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; + var translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); + constraint.rotateMix += (rotate + (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + }; + PathConstraintMixTimeline.ENTRIES = 3; + PathConstraintMixTimeline.PREV_TIME = -3; + PathConstraintMixTimeline.PREV_ROTATE = -2; + PathConstraintMixTimeline.PREV_TRANSLATE = -1; + PathConstraintMixTimeline.ROTATE = 1; + PathConstraintMixTimeline.TRANSLATE = 2; + return PathConstraintMixTimeline; + }(CurveTimeline)); + spine.PathConstraintMixTimeline = PathConstraintMixTimeline; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var AnimationState = (function () { + function AnimationState(data) { + if (data === void 0) { data = null; } + this.tracks = new Array(); + this.events = new Array(); + this.listeners = new Array(); + this.timeScale = 1; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + } + AnimationState.prototype.update = function (delta) { + delta *= this.timeScale; + for (var i = 0; i < this.tracks.length; i++) { + var current = this.tracks[i]; + if (current == null) + continue; + var next = current.next; + if (next != null) { + var nextTime = current.lastTime - next.delay; + if (nextTime >= 0) { + var nextDelta = delta * next.timeScale; + next.time = nextTime + nextDelta; // For start event to see correct time. + current.time += delta * current.timeScale; // For end event to see correct time. + this.setCurrent(i, next); + next.time -= nextDelta; // Prevent increasing time twice, below. + current = next; + } + } + else if (!current.loop && current.lastTime >= current.endTime) { + // End non-looping animation when it reaches its end time and there is no next entry. + this.clearTrack(i); + continue; + } + current.time += delta * current.timeScale; + if (current.previous != null) { + var previousDelta = delta * current.previous.timeScale; + current.previous.time += previousDelta; + current.mixTime += previousDelta; + } + } + }; + AnimationState.prototype.apply = function (skeleton) { + var events = this.events; + var listenerCount = this.listeners.length; + for (var i = 0; i < this.tracks.length; i++) { + var current = this.tracks[i]; + if (current == null) + continue; + events.length = 0; + var time = current.time; + var lastTime = current.lastTime; + var endTime = current.endTime; + var loop = current.loop; + if (!loop && time > endTime) + time = endTime; + var previous = current.previous; + if (previous == null) + current.animation.mix(skeleton, lastTime, time, loop, events, current.mix); + else { + var previousTime = previous.time; + if (!previous.loop && previousTime > previous.endTime) + previousTime = previous.endTime; + previous.animation.apply(skeleton, previousTime, previousTime, previous.loop, null); + var alpha = current.mixTime / current.mixDuration * current.mix; + if (alpha >= 1) { + alpha = 1; + current.previous = null; + } + current.animation.mix(skeleton, lastTime, time, loop, events, alpha); + } + for (var ii = 0, nn = events.length; ii < nn; ii++) { + var event_1 = events[ii]; + if (current.listener != null) + current.listener.event(i, event_1); + for (var iii = 0; iii < listenerCount; iii++) + this.listeners[iii].event(i, event_1); + } + // Check if completed the animation or a loop iteration. + if (loop ? (lastTime % endTime > time % endTime) : (lastTime < endTime && time >= endTime)) { + var count = spine.MathUtils.toInt(time / endTime); + if (current.listener != null) + current.listener.complete(i, count); + for (var ii = 0, nn = this.listeners.length; ii < nn; ii++) + this.listeners[ii].complete(i, count); + } + current.lastTime = current.time; + } + }; + AnimationState.prototype.clearTracks = function () { + for (var i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + }; + AnimationState.prototype.clearTrack = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return; + var current = this.tracks[trackIndex]; + if (current == null) + return; + if (current.listener != null) + current.listener.end(trackIndex); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(trackIndex); + this.tracks[trackIndex] = null; + this.freeAll(current); + }; + AnimationState.prototype.freeAll = function (entry) { + while (entry != null) { + var next = entry.next; + entry = next; + } + }; + AnimationState.prototype.expandToIndex = function (index) { + if (index < this.tracks.length) + return this.tracks[index]; + spine.Utils.setArraySize(this.tracks, index - this.tracks.length + 1, null); + this.tracks.length = index + 1; + return null; + }; + AnimationState.prototype.setCurrent = function (index, entry) { + var current = this.expandToIndex(index); + if (current != null) { + var previous = current.previous; + current.previous = null; + if (current.listener != null) + current.listener.end(index); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(index); + entry.mixDuration = this.data.getMix(current.animation, entry.animation); + if (entry.mixDuration > 0) { + entry.mixTime = 0; + // If a mix is in progress, mix from the closest animation. + if (previous != null && current.mixTime / current.mixDuration < 0.5) { + entry.previous = previous; + previous = current; + } + else + entry.previous = current; + } + } + this.tracks[index] = entry; + if (entry.listener != null) + entry.listener.start(index); + for (var i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].start(index); + }; + /** @see #setAnimation(int, Animation, boolean) */ + AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + }; + /** Set the current animation. Any queued animations are cleared. */ + AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { + var current = this.expandToIndex(trackIndex); + if (current != null) + this.freeAll(current.next); + var entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + this.setCurrent(trackIndex, entry); + return entry; + }; + /** {@link #addAnimation(int, Animation, boolean, float)} */ + AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + }; + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { + var entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + var last = this.expandToIndex(trackIndex); + if (last != null) { + while (last.next != null) + last = last.next; + last.next = entry; + } + else + this.tracks[trackIndex] = entry; + if (delay <= 0) { + if (last != null) + delay += last.endTime - this.data.getMix(last.animation, animation); + else + delay = 0; + } + entry.delay = delay; + return entry; + }; + /** @return May be null. */ + AnimationState.prototype.getCurrent = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return null; + return this.tracks[trackIndex]; + }; + /** Adds a listener to receive events for all animations. */ + AnimationState.prototype.addListener = function (listener) { + if (listener == null) + throw new Error("listener cannot be null."); + this.listeners.push(listener); + }; + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + AnimationState.prototype.removeListener = function (listener) { + var index = this.listeners.indexOf(listener); + if (index >= 0) + this.listeners.splice(index, 1); + }; + AnimationState.prototype.clearListeners = function () { + this.listeners.length = 0; + }; + return AnimationState; + }()); + spine.AnimationState = AnimationState; + var TrackEntry = (function () { + function TrackEntry() { + this.loop = false; + this.delay = 0; + this.time = 0; + this.lastTime = -1; + this.endTime = 0; + this.timeScale = 1; + this.mixTime = 0; + this.mixDuration = 0; + this.mix = 1; + } + TrackEntry.prototype.reset = function () { + this.next = null; + this.previous = null; + this.animation = null; + this.listener = null; + this.timeScale = 1; + this.lastTime = -1; // Trigger events on frame zero. + this.time = 0; + }; + /** Returns true if the current time is greater than the end time, regardless of looping. */ + TrackEntry.prototype.isComplete = function () { + return this.time >= this.endTime; + }; + return TrackEntry; + }()); + spine.TrackEntry = TrackEntry; + var AnimationStateAdapter = (function () { + function AnimationStateAdapter() { + } + AnimationStateAdapter.prototype.event = function (trackIndex, event) { + }; + AnimationStateAdapter.prototype.complete = function (trackIndex, loopCount) { + }; + AnimationStateAdapter.prototype.start = function (trackIndex) { + }; + AnimationStateAdapter.prototype.end = function (trackIndex) { + }; + return AnimationStateAdapter; + }()); + spine.AnimationStateAdapter = AnimationStateAdapter; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var AnimationStateData = (function () { + function AnimationStateData(skeletonData) { + this.animationToMixTime = {}; + this.defaultMix = 0; + if (skeletonData == null) + throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + AnimationStateData.prototype.setMix = function (fromName, toName, duration) { + var from = this.skeletonData.findAnimation(fromName); + if (from == null) + throw new Error("Animation not found: " + fromName); + var to = this.skeletonData.findAnimation(toName); + if (to == null) + throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + }; + AnimationStateData.prototype.setMixWith = function (from, to, duration) { + if (from == null) + throw new Error("from cannot be null."); + if (to == null) + throw new Error("to cannot be null."); + var key = from.name + to.name; + this.animationToMixTime[key] = duration; + }; + AnimationStateData.prototype.getMix = function (from, to) { + var key = from.name + to.name; + var value = this.animationToMixTime[key]; + return value === undefined ? this.defaultMix : value; + }; + return AnimationStateData; + }()); + spine.AnimationStateData = AnimationStateData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(spine.BlendMode || (spine.BlendMode = {})); + var BlendMode = spine.BlendMode; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Bone = (function () { + /** @param parent May be null. */ + function Bone(data, skeleton, parent) { + this.children = new Array(); + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 0; + this.scaleY = 0; + this.shearX = 0; + this.shearY = 0; + this.appliedRotation = 0; + this.a = 0; + this.b = 0; + this.worldX = 0; + this.c = 0; + this.d = 0; + this.worldY = 0; + this.worldSignX = 0; + this.worldSignY = 0; + this.sorted = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + Bone.prototype.update = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and this bone's local transform. */ + Bone.prototype.updateWorldTransform = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and the specified local transform. */ + Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { + this.appliedRotation = rotation; + var rotationY = rotation + 90 + shearY; + var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX, lb = spine.MathUtils.cosDeg(rotationY) * scaleY; + var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX, ld = spine.MathUtils.sinDeg(rotationY) * scaleY; + var parent = this.parent; + if (parent == null) { + var skeleton = this.skeleton; + if (skeleton.flipX) { + x = -x; + la = -la; + lb = -lb; + } + if (skeleton.flipY) { + y = -y; + lc = -lc; + ld = -ld; + } + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + this.worldX = x; + this.worldY = y; + this.worldSignX = spine.MathUtils.signum(scaleX); + this.worldSignY = spine.MathUtils.signum(scaleY); + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + this.worldSignX = parent.worldSignX * spine.MathUtils.signum(scaleX); + this.worldSignY = parent.worldSignY * spine.MathUtils.signum(scaleY); + if (this.data.inheritRotation && this.data.inheritScale) { + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else { + if (this.data.inheritRotation) { + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + var cos = spine.MathUtils.cosDeg(parent.appliedRotation), sin = spine.MathUtils.sinDeg(parent.appliedRotation); + var temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + if (!parent.data.inheritRotation) + break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else if (this.data.inheritScale) { + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + var cos = spine.MathUtils.cosDeg(parent.appliedRotation), sin = spine.MathUtils.sinDeg(parent.appliedRotation); + var psx = parent.scaleX, psy = parent.scaleY; + var za = cos * psx, zb = sin * psy, zc = sin * psx, zd = cos * psy; + var temp = pa * za + pb * zc; + pb = pb * zd - pa * zb; + pa = temp; + temp = pc * za + pd * zc; + pd = pd * zd - pc * zb; + pc = temp; + if (psx >= 0) + sin = -sin; + temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + if (!parent.data.inheritScale) + break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } + else { + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + } + if (this.skeleton.flipX) { + this.a = -this.a; + this.b = -this.b; + } + if (this.skeleton.flipY) { + this.c = -this.c; + this.d = -this.d; + } + } + }; + Bone.prototype.setToSetupPose = function () { + var data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + }; + Bone.prototype.getWorldRotationX = function () { + return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldRotationY = function () { + return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldScaleX = function () { + return Math.sqrt(this.a * this.a + this.b * this.b) * this.worldSignX; + }; + Bone.prototype.getWorldScaleY = function () { + return Math.sqrt(this.c * this.c + this.d * this.d) * this.worldSignY; + }; + Bone.prototype.worldToLocalRotationX = function () { + var parent = this.parent; + if (parent == null) + return this.rotation; + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, a = this.a, c = this.c; + return Math.atan2(pa * c - pc * a, pd * a - pb * c) * spine.MathUtils.radDeg; + }; + Bone.prototype.worldToLocalRotationY = function () { + var parent = this.parent; + if (parent == null) + return this.rotation; + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, b = this.b, d = this.d; + return Math.atan2(pa * d - pc * b, pd * b - pb * d) * spine.MathUtils.radDeg; + }; + Bone.prototype.rotateWorld = function (degrees) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + }; + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + Bone.prototype.updateLocalTransform = function () { + var parent = this.parent; + if (parent == null) { + this.x = this.worldX; + this.y = this.worldY; + this.rotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + this.scaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.scaleY = Math.sqrt(this.b * this.b + this.d * this.d); + var det = this.a * this.d - this.b * this.c; + this.shearX = 0; + this.shearY = Math.atan2(this.a * this.b + this.c * this.d, det) * spine.MathUtils.radDeg; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + var pid = 1 / (pa * pd - pb * pc); + var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.x = (dx * pd * pid - dy * pb * pid); + this.y = (dy * pa * pid - dx * pc * pid); + var ia = pid * pd; + var id = pid * pa; + var ib = pid * pb; + var ic = pid * pc; + var ra = ia * this.a - ib * this.c; + var rb = ia * this.b - ib * this.d; + var rc = id * this.c - ic * this.a; + var rd = id * this.d - ic * this.b; + this.shearX = 0; + this.scaleX = Math.sqrt(ra * ra + rc * rc); + if (this.scaleX > 0.0001) { + var det = ra * rd - rb * rc; + this.scaleY = det / this.scaleX; + this.shearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; + this.rotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; + } + else { + this.scaleX = 0; + this.scaleY = Math.sqrt(rb * rb + rd * rd); + this.shearY = 0; + this.rotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; + } + this.appliedRotation = this.rotation; + }; + Bone.prototype.worldToLocal = function (world) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var invDet = 1 / (a * d - b * c); + var x = world.x - this.worldX, y = world.y - this.worldY; + world.x = (x * d * invDet - y * b * invDet); + world.y = (y * a * invDet - x * c * invDet); + return world; + }; + Bone.prototype.localToWorld = function (local) { + var x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + }; + return Bone; + }()); + spine.Bone = Bone; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var BoneData = (function () { + function BoneData(index, name, parent) { + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 1; + this.scaleY = 1; + this.shearX = 0; + this.shearY = 0; + this.inheritRotation = true; + this.inheritScale = true; + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + return BoneData; + }()); + spine.BoneData = BoneData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Event = (function () { + function Event(time, data) { + if (data == null) + throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + return Event; + }()); + spine.Event = Event; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var EventData = (function () { + function EventData(name) { + this.name = name; + } + return EventData; + }()); + spine.EventData = EventData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var IkConstraint = (function () { + function IkConstraint(data, skeleton) { + this.mix = 1; + this.bendDirection = 0; + this.level = 0; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.bendDirection = data.bendDirection; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + IkConstraint.prototype.apply = function () { + this.update(); + }; + IkConstraint.prototype.update = function () { + var target = this.target; + var bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.mix); + break; + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix); + break; + } + }; + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + IkConstraint.prototype.apply1 = function (bone, targetX, targetY, alpha) { + var pp = bone.parent; + var id = 1 / (pp.a * pp.d - pp.b * pp.c); + var x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * pp.d - y * pp.b) * id - bone.x, ty = (y * pp.a - x * pp.c) * id - bone.y; + var rotationIK = Math.atan2(ty, tx) * spine.MathUtils.radDeg - bone.shearX - bone.rotation; + if (bone.scaleX < 0) + rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK < -180) + rotationIK += 360; + bone.updateWorldTransformWith(bone.x, bone.y, bone.rotation + rotationIK * alpha, bone.scaleX, bone.scaleY, bone.shearX, bone.shearY); + }; + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, alpha) { + if (alpha == 0) { + child.updateWorldTransform(); + return; + } + var px = parent.x, py = parent.y, psx = parent.scaleX, psy = parent.scaleY, csx = child.scaleX; + var os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } + else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } + else + os2 = 0; + var cx = child.x, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + var u = Math.abs(psx - psy) <= 0.0001; + if (!u) { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } + else { + cy = child.y; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } + var pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + var id = 1 / (a * d - b * c), x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + x = cwx - pp.worldX; + y = cwy - pp.worldY; + var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0; + outer: if (u) { + l2 *= psx; + var cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) + cos = -1; + else if (cos > 1) + cos = 1; + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } + else { + a = psx * l2; + b = psy * l2; + var aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + var c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + var q = Math.sqrt(d); + if (c1 < 0) + q = -q; + q = -(c1 + q) / 2; + var r0 = q / c2, r1 = c / q; + var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; + var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; + x = l1 + a; + d = x * x; + if (d > maxDist) { + maxAngle = 0; + maxDist = d; + maxX = x; + } + x = l1 - a; + d = x * x; + if (d < minDist) { + minAngle = spine.MathUtils.PI; + minDist = d; + minX = x; + } + var angle = Math.acos(-a * l1 / (aa - bb)); + x = a * Math.cos(angle) + l1; + y = b * Math.sin(angle); + d = x * x + y * y; + if (d < minDist) { + minAngle = angle; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = angle; + maxDist = d; + maxX = x; + maxY = y; + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } + else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + var os = Math.atan2(cy, cx) * s2; + var rotation = parent.rotation; + a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 < -180) + a1 += 360; + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.scaleX, parent.scaleY, 0, 0); + rotation = child.rotation; + a2 = ((a2 + os) * spine.MathUtils.radDeg - child.shearX) * s2 + os2 - rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 < -180) + a2 += 360; + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.scaleX, child.scaleY, child.shearX, child.shearY); + }; + return IkConstraint; + }()); + spine.IkConstraint = IkConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var IkConstraintData = (function () { + function IkConstraintData(name) { + this.bones = new Array(); + this.bendDirection = 1; + this.mix = 1; + this.name = name; + } + return IkConstraintData; + }()); + spine.IkConstraintData = IkConstraintData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathConstraint = (function () { + function PathConstraint(data, skeleton) { + this.position = 0; + this.spacing = 0; + this.rotateMix = 0; + this.translateMix = 0; + this.spaces = new Array(); + this.positions = new Array(); + this.world = new Array(); + this.curves = new Array(); + this.lengths = new Array(); + this.segments = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0, n = data.bones.length; i < n; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + } + PathConstraint.prototype.apply = function () { + this.update(); + }; + PathConstraint.prototype.update = function () { + var attachment = this.target.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) + return; + var rotateMix = this.rotateMix, translateMix = this.translateMix; + var translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) + return; + var data = this.data; + var spacingMode = data.spacingMode; + var lengthSpacing = spacingMode == spine.SpacingMode.Length; + var rotateMode = data.rotateMode; + var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; + var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + var bones = this.bones; + var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; + var spacing = this.spacing; + if (scale || lengthSpacing) { + if (scale) + lengths = spine.Utils.setArraySize(this.lengths, boneCount); + for (var i = 0, n = spacesCount - 1; i < n;) { + var bone = bones[i]; + var length_1 = bone.data.length, x = length_1 * bone.a, y = length_1 * bone.c; + length_1 = Math.sqrt(x * x + y * y); + if (scale) + lengths[i] = length_1; + spaces[++i] = lengthSpacing ? Math.max(0, length_1 + spacing) : spacing; + } + } + else { + for (var i = 1; i < spacesCount; i++) + spaces[i] = spacing; + } + var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent); + var skeleton = this.target.bone.skeleton; + var skeletonX = skeleton.x, skeletonY = skeleton.y; + var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + var tip = rotateMode == spine.RotateMode.Chain && offsetRotation == 0; + for (var i = 0, p = 3; i < boneCount; i++, p += 3) { + var bone = bones[i]; + bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; + bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; + var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + var length_2 = lengths[i]; + if (length_2 != 0) { + var s = (Math.sqrt(dx * dx + dy * dy) / length_2 - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a) - offsetRotation * spine.MathUtils.degRad; + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + var length_3 = bone.data.length; + boneX += (length_3 * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length_3 * (sin * a + cos * c) - dy) * rotateMix; + } + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + } + }; + PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents, percentPosition, percentSpacing) { + var target = this.target; + var position = this.position; + var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; + var closed = path.closed; + var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + if (!path.constantSpeed) { + var lengths = path.lengths; + curveCount -= closed ? 1 : 2; + var pathLength_1 = lengths[curveCount]; + if (percentPosition) + position *= pathLength_1; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength_1; + } + world = spine.Utils.setArraySize(this.world, 8); + for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength_1; + if (p < 0) + p += pathLength_1; + curve = 0; + } + else if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVerticesWith(target, 2, 4, world, 0); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength_1) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVerticesWith(target, verticesLength - 6, 4, world, 0); + } + this.addAfterPosition(p - pathLength_1, world, 0, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_4 = lengths[curve]; + if (p > length_4) + continue; + if (curve == 0) + p /= length_4; + else { + var prev = lengths[curve - 1]; + p = (p - prev) / (length_4 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVerticesWith(target, verticesLength - 4, 4, world, 0); + path.computeWorldVerticesWith(target, 0, 4, world, 4); + } + else + path.computeWorldVerticesWith(target, curve * 6 + 2, 8, world, 0); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + // World vertices. + if (closed) { + verticesLength += 2; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength - 4, world, 0); + path.computeWorldVerticesWith(target, 0, 2, world, verticesLength - 4); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } + else { + curveCount--; + verticesLength -= 4; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength, world, 0); + } + // Curve lengths. + var curves = spine.Utils.setArraySize(this.curves, curveCount); + var pathLength = 0; + var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (var i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) + position *= pathLength; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + var segments = this.segments; + var curveLength = 0; + for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength; + if (p < 0) + p += pathLength; + curve = 0; + } + else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_5 = curves[curve]; + if (p > length_5) + continue; + if (curve == 0) + p /= length_5; + else { + var prev = curves[curve - 1]; + p = (p - prev) / (length_5 - prev); + } + break; + } + // Curve segment lengths. + if (curve != prevCurve) { + prevCurve = curve; + var ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + // Weight by segment length. + p *= curveLength; + for (;; segment++) { + var length_6 = segments[segment]; + if (p > length_6) + continue; + if (segment == 0) + p /= length_6; + else { + var prev = segments[segment - 1]; + p = segment + (p - prev) / (length_6 - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + }; + PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { + var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { + var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (p == 0) + p = 0.0001; + var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) + out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + }; + PathConstraint.NONE = -1; + PathConstraint.BEFORE = -2; + PathConstraint.AFTER = -3; + return PathConstraint; + }()); + spine.PathConstraint = PathConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathConstraintData = (function () { + function PathConstraintData(name) { + this.bones = new Array(); + this.name = name; + } + return PathConstraintData; + }()); + spine.PathConstraintData = PathConstraintData; + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(spine.PositionMode || (spine.PositionMode = {})); + var PositionMode = spine.PositionMode; + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + })(spine.SpacingMode || (spine.SpacingMode = {})); + var SpacingMode = spine.SpacingMode; + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(spine.RotateMode || (spine.RotateMode = {})); + var RotateMode = spine.RotateMode; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Skeleton = (function () { + function Skeleton(data) { + this._updateCache = new Array(); + this.time = 0; + this.flipX = false; + this.flipY = false; + this.x = 0; + this.y = 0; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) { + var boneData = data.bones[i]; + var bone = void 0; + if (boneData.parent == null) + bone = new spine.Bone(boneData, this, null); + else { + var parent_1 = this.bones[boneData.parent.index]; + bone = new spine.Bone(boneData, this, parent_1); + parent_1.children.push(bone); + } + this.bones.push(bone); + } + this.slots = new Array(); + this.drawOrder = new Array(); + for (var i = 0; i < data.slots.length; i++) { + var slotData = data.slots[i]; + var bone = this.bones[slotData.boneData.index]; + var slot = new spine.Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + this.ikConstraints = new Array(); + this.ikConstraintsSorted = new Array(); + for (var i = 0; i < data.ikConstraints.length; i++) { + var ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); + } + this.transformConstraints = new Array(); + for (var i = 0; i < data.transformConstraints.length; i++) { + var transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); + } + this.pathConstraints = new Array(); + for (var i = 0; i < data.pathConstraints.length; i++) { + var pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); + } + this.color = new spine.Color(1, 1, 1, 1); + this.updateCache(); + } + Skeleton.prototype.updateCache = function () { + var updateCache = this._updateCache; + updateCache.length = 0; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].sorted = false; + // IK first, lowest hierarchy depth first. + var ikConstraints = this.ikConstraintsSorted; + ikConstraints.length = 0; + for (var i = 0; i < this.ikConstraints.length; i++) + ikConstraints.push(this.ikConstraints[i]); + var ikCount = ikConstraints.length; + for (var i = 0, level = 0, n = ikCount; i < n; i++) { + var ik = ikConstraints[i]; + var bone = ik.bones[0].parent; + for (level = 0; bone != null; level++) + bone = bone.parent; + ik.level = level; + } + for (var i = 1, ii = 0; i < ikCount; i++) { + var ik = ikConstraints[i]; + var level = ik.level; + for (ii = i - 1; ii >= 0; ii--) { + var other = ikConstraints[ii]; + if (other.level < level) + break; + ikConstraints[ii + 1] = other; + } + ikConstraints[ii + 1] = ik; + } + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + var target = constraint.target; + this.sortBone(target); + var constrained = constraint.bones; + var parent_2 = constrained[0]; + this.sortBone(parent_2); + updateCache.push(constraint); + this.sortReset(parent_2.children); + constrained[constrained.length - 1].sorted = true; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var slot = constraint.target; + var slotIndex = slot.data.index; + var slotBone = slot.bone; + if (this.skin != null) + this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) + this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (var ii = 0, nn = this.data.skins.length; ii < nn; ii++) + this.sortPathConstraintAttachment(this.data.skins[ii], slotIndex, slotBone); + var attachment = slot.getAttachment(); + if (attachment instanceof spine.PathAttachment) + this.sortPathConstraintAttachmentWith(attachment, slotBone); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + this.sortBone(constraint.target); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + for (var i = 0, n = bones.length; i < n; i++) + this.sortBone(bones[i]); + }; + Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { + var attachments = skin.attachments[slotIndex]; + if (!attachments) + return; + for (var key in attachments) { + this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + } + }; + Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { + if (!(attachment instanceof spine.PathAttachment)) + return; + var pathBones = attachment.bones; + if (pathBones == null) + this.sortBone(slotBone); + else { + var bones = this.bones; + for (var i = 0; i < pathBones.length; i++) { + var boneIndex = pathBones[i]; + this.sortBone(bones[boneIndex]); + } + } + }; + Skeleton.prototype.sortBone = function (bone) { + if (bone.sorted) + return; + var parent = bone.parent; + if (parent != null) + this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + }; + Skeleton.prototype.sortReset = function (bones) { + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.sorted) + this.sortReset(bone.children); + bone.sorted = false; + } + }; + /** Updates the world transform for each bone and applies constraints. */ + Skeleton.prototype.updateWorldTransform = function () { + var updateCache = this._updateCache; + for (var i = 0, n = updateCache.length; i < n; i++) + updateCache[i].update(); + }; + /** Sets the bones, constraints, and slots to their setup pose values. */ + Skeleton.prototype.setToSetupPose = function () { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + }; + /** Sets the bones and constraints to their setup pose values. */ + Skeleton.prototype.setBonesToSetupPose = function () { + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].setToSetupPose(); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + constraint.bendDirection = constraint.data.bendDirection; + constraint.mix = constraint.data.mix; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + var data = constraint.data; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + } + }; + Skeleton.prototype.setSlotsToSetupPose = function () { + var slots = this.slots; + spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (var i = 0, n = slots.length; i < n; i++) + slots[i].setToSetupPose(); + }; + /** @return May return null. */ + Skeleton.prototype.getRootBone = function () { + if (this.bones.length == 0) + return null; + return this.bones[0]; + }; + /** @return May be null. */ + Skeleton.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.data.name == boneName) + return bone; + } + return null; + }; + /** @return -1 if the bone was not found. */ + Skeleton.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name == boneName) + return i; + return -1; + }; + /** @return May be null. */ + Skeleton.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) + return slot; + } + return null; + }; + /** @return -1 if the bone was not found. */ + Skeleton.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name == slotName) + return i; + return -1; + }; + /** Sets a skin by name. + * @see #setSkin(Skin) */ + Skeleton.prototype.setSkinByName = function (skinName) { + var skin = this.data.findSkin(skinName); + if (skin == null) + throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + }; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + Skeleton.prototype.setSkin = function (newSkin) { + if (newSkin != null) { + if (this.skin != null) + newSkin.attachAll(this, this.skin); + else { + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var name_1 = slot.data.attachmentName; + if (name_1 != null) { + var attachment = newSkin.getAttachment(i, name_1); + if (attachment != null) + slot.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + }; + /** @return May be null. */ + Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + }; + /** @return May be null. */ + Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { + if (attachmentName == null) + throw new Error("attachmentName cannot be null."); + if (this.skin != null) { + var attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (attachment != null) + return attachment; + } + if (this.data.defaultSkin != null) + return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + }; + /** @param attachmentName May be null. */ + Skeleton.prototype.setAttachment = function (slotName, attachmentName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) { + var attachment = null; + if (attachmentName != null) { + attachment = this.getAttachment(i, attachmentName); + if (attachment == null) + throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + }; + /** @return May be null. */ + Skeleton.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) + return ikConstraint; + } + return null; + }; + /** @return May be null. */ + Skeleton.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** @return May be null. */ + Skeleton.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + Skeleton.prototype.getBounds = function (offset, size) { + if (offset == null) + throw new Error("offset cannot be null."); + if (size == null) + throw new Error("size cannot be null."); + var drawOrder = this.drawOrder; + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var vertices = null; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) + vertices = attachment.updateWorldVertices(slot, false); + else if (attachment instanceof spine.MeshAttachment) + vertices = attachment.updateWorldVertices(slot, true); + if (vertices != null) { + for (var ii = 0, nn = vertices.length; ii < nn; ii += 5) { + var x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + }; + Skeleton.prototype.update = function (delta) { + this.time += delta; + }; + return Skeleton; + }()); + spine.Skeleton = Skeleton; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonBounds = (function () { + function SkeletonBounds() { + this.minX = 0; + this.minY = 0; + this.maxX = 0; + this.maxY = 0; + this.boundingBoxes = new Array(); + this.polygons = new Array(); + this._polygonPool = new spine.Pool(function () { + return spine.Utils.newFloatArray(16); + }); + } + SkeletonBounds.prototype.update = function (skeleton, updateAabb) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + var boundingBoxes = this.boundingBoxes; + var polygons = this.polygons; + var polygonPool = this._polygonPool; + var slots = skeleton.slots; + var slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (var i = 0; i < slotCount; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.BoundingBoxAttachment) { + var boundingBox = attachment; + boundingBoxes.push(boundingBox); + var polygon = polygonPool.obtain(); + if (polygon.length != boundingBox.worldVerticesLength) { + polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); + } + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, polygon); + } + } + if (updateAabb) + this.aabbCompute(); + }; + SkeletonBounds.prototype.aabbCompute = function () { + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) { + var polygon = polygons[i]; + var vertices = polygon; + for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { + var x = vertices[ii]; + var y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + }; + /** Returns true if the axis aligned bounding box contains the point. */ + SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + }; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { + var minX = this.minX; + var minY = this.minY; + var maxX = this.maxX; + var maxY = this.maxY; + if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) + return false; + var m = (y2 - y1) / (x2 - x1); + var y = m * (minX - x1) + y1; + if (y > minY && y < maxY) + return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) + return true; + var x = (minY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + return false; + }; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + }; + /** 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. */ + SkeletonBounds.prototype.containsPoint = function (x, y) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains the point. */ + SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { + var vertices = polygon; + var nn = polygon.length; + var prevIndex = nn - 2; + var inside = false; + for (var ii = 0; ii < nn; ii += 2) { + var vertexY = vertices[ii + 1]; + var prevY = vertices[prevIndex + 1]; + if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { + var vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) + inside = !inside; + } + prevIndex = ii; + } + return inside; + }; + /** Returns the first bounding box attachment that contains any part of 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. */ + SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains any part of the line segment. */ + SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { + var vertices = polygon; + var nn = polygon.length; + var width12 = x1 - x2, height12 = y1 - y2; + var det1 = x1 * y2 - y1 * x2; + var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (var ii = 0; ii < nn; ii += 2) { + var x4 = vertices[ii], y4 = vertices[ii + 1]; + var det2 = x3 * y4 - y3 * x4; + var width34 = x3 - x4, height34 = y3 - y4; + var det3 = width12 * height34 - height12 * width34; + var x = (det1 * width34 - width12 * det2) / det3; + if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { + var y = (det1 * height34 - height12 * det2) / det3; + if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) + return true; + } + x3 = x4; + y3 = y4; + } + return false; + }; + /** Returns the polygon for the specified bounding box, or null. */ + SkeletonBounds.prototype.getPolygon = function (boundingBox) { + if (boundingBox == null) + throw new Error("boundingBox cannot be null."); + var index = this.boundingBoxes.indexOf(boundingBox); + return index == -1 ? null : this.polygons[index]; + }; + return SkeletonBounds; + }()); + spine.SkeletonBounds = SkeletonBounds; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonData = (function () { + function SkeletonData() { + this.bones = new Array(); // Ordered parents first. + this.slots = new Array(); // Setup pose draw order. + this.skins = new Array(); + this.events = new Array(); + this.animations = new Array(); + this.ikConstraints = new Array(); + this.transformConstraints = new Array(); + this.pathConstraints = new Array(); + } + SkeletonData.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.name == boneName) + return bone; + } + return null; + }; + SkeletonData.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].name == boneName) + return i; + return -1; + }; + SkeletonData.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.name == slotName) + return slot; + } + return null; + }; + SkeletonData.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].name == slotName) + return i; + return -1; + }; + SkeletonData.prototype.findSkin = function (skinName) { + if (skinName == null) + throw new Error("skinName cannot be null."); + var skins = this.skins; + for (var i = 0, n = skins.length; i < n; i++) { + var skin = skins[i]; + if (skin.name == skinName) + return skin; + } + return null; + }; + SkeletonData.prototype.findEvent = function (eventDataName) { + if (eventDataName == null) + throw new Error("eventDataName cannot be null."); + var events = this.events; + for (var i = 0, n = events.length; i < n; i++) { + var event_2 = events[i]; + if (event_2.name == eventDataName) + return event_2; + } + return null; + }; + SkeletonData.prototype.findAnimation = function (animationName) { + if (animationName == null) + throw new Error("animationName cannot be null."); + var animations = this.animations; + for (var i = 0, n = animations.length; i < n; i++) { + var animation = animations[i]; + if (animation.name == animationName) + return animation; + } + return null; + }; + SkeletonData.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraintIndex = function (pathConstraintName) { + if (pathConstraintName == null) + throw new Error("pathConstraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) + if (pathConstraints[i].name == pathConstraintName) + return i; + return -1; + }; + return SkeletonData; + }()); + spine.SkeletonData = SkeletonData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SkeletonJson = (function () { + function SkeletonJson(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonJson.prototype.readSkeletonData = function (json) { + var scale = this.scale; + var skeletonData = new spine.SkeletonData(); + var root = JSON.parse(json); + // Skeleton + var skeletonMap = root.skeleton; + if (skeletonMap != null) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.imagesPath = skeletonMap.images; + } + // Bones + if (root.bones) { + for (var i = 0; i < root.bones.length; i++) { + var boneMap = root.bones[i]; + var parent_3 = null; + var parentName = this.getValue(boneMap, "parent", null); + if (parentName != null) { + parent_3 = skeletonData.findBone(parentName); + if (parent_3 == null) + throw new Error("Parent bone not found: " + parentName); + } + var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_3); + data.length = this.getValue(boneMap, "length", 0) * scale; + data.x = this.getValue(boneMap, "x", 0) * scale; + data.y = this.getValue(boneMap, "y", 0) * scale; + data.rotation = this.getValue(boneMap, "rotation", 0); + data.scaleX = this.getValue(boneMap, "scaleX", 1); + data.scaleY = this.getValue(boneMap, "scaleY", 1); + data.shearX = this.getValue(boneMap, "shearX", 0); + data.shearY = this.getValue(boneMap, "shearY", 0); + data.inheritRotation = this.getValue(boneMap, "inheritRotation", true); + data.inheritScale = this.getValue(boneMap, "inheritScale", true); + skeletonData.bones.push(data); + } + } + // Slots. + if (root.slots) { + for (var i = 0; i < root.slots.length; i++) { + var slotMap = root.slots[i]; + var slotName = slotMap.name; + var boneName = slotMap.bone; + var boneData = skeletonData.findBone(boneName); + if (boneData == null) + throw new Error("Slot bone not found: " + boneName); + var data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); + var color = slotMap.color ? slotMap.color : null; + if (color != null) + data.color.setFromString(color); + data.attachmentName = this.getValue(slotMap, "attachment", null); + data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + } + // IK constraints + if (root.ik) { + for (var i = 0; i < root.ik.length; i++) { + var constraintMap = root.ik[i]; + var data = new spine.IkConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("IK bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("IK target bone not found: " + targetName); + data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.mix = constraintMap.mix ? constraintMap.mix : 1; + skeletonData.ikConstraints.push(data); + } + } + // Transform constraints. + if (root.transform) { + for (var i = 0; i < root.transform.length; i++) { + var constraintMap = root.transform[i]; + var data = new spine.TransformConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("Transform constraint target bone not found: " + targetName); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.offsetX = this.getValue(constraintMap, "x", 0) * scale; + data.offsetY = this.getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); + data.offsetShearY = this.getValue(constraintMap, "shearY", 0); + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); + data.shearMix = this.getValue(constraintMap, "shearMix", 1); + skeletonData.transformConstraints.push(data); + } + } + // Path constraints. + if (root.path) { + for (var i = 0; i < root.path.length; i++) { + var constraintMap = root.path[i]; + var data = new spine.PathConstraintData(constraintMap.name); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + if (data.target == null) + throw new Error("Path target slot not found: " + targetName); + data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); + data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); + data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.position = this.getValue(constraintMap, "position", 0); + if (data.positionMode == spine.PositionMode.Fixed) + data.position *= scale; + data.spacing = this.getValue(constraintMap, "spacing", 0); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + data.spacing *= scale; + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + skeletonData.pathConstraints.push(data); + } + } + // Skins. + if (root.skins) { + for (var skinName in root.skins) { + var skinMap = root.skins[skinName]; + var skin = new spine.Skin(skinName); + for (var slotName in skinMap) { + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + var slotMap = skinMap[slotName]; + for (var entryName in slotMap) { + var attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName); + if (attachment != null) + skin.addAttachment(slotIndex, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name == "default") + skeletonData.defaultSkin = skin; + } + } + // Linked meshes. + for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (skin == null) + throw new Error("Skin not found: " + linkedMesh.skin); + var parent_4 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (parent_4 == null) + throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.setParentMesh(parent_4); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + // Events. + if (root.events) { + for (var eventName in root.events) { + var eventMap = root.events[eventName]; + var data = new spine.EventData(eventName); + data.intValue = this.getValue(eventMap, "int", 0); + data.floatValue = this.getValue(eventMap, "float", 0); + data.stringValue = this.getValue(eventMap, "string", null); + skeletonData.events.push(data); + } + } + // Animations. + if (root.animations) { + for (var animationName in root.animations) { + var animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + return skeletonData; + }; + SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name) { + var scale = this.scale; + name = this.getValue(map, "name", name); + var type = this.getValue(map, "type", "region"); + switch (type) { + case "region": { + var path = this.getValue(map, "path", name); + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (region == null) + return null; + region.path = path; + region.x = this.getValue(map, "x", 0) * scale; + region.y = this.getValue(map, "y", 0) * scale; + region.scaleX = this.getValue(map, "scaleX", 1); + region.scaleY = this.getValue(map, "scaleY", 1); + region.rotation = this.getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + var color = this.getValue(map, "color", null); + if (color != null) + region.color.setFromString(color); + region.updateOffset(); + return region; + } + case "boundingbox": { + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (box == null) + return null; + this.readVertices(map, box, map.vertexCount << 1); + return box; + } + case "mesh": + case "linkedmesh": { + var path = this.getValue(map, "path", name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) + return null; + mesh.path = path; + var color = this.getValue(map, "color", null); + if (color != null) + mesh.color.setFromString(color); + var parent_5 = this.getValue(map, "parent", null); + if (parent_5 != null) { + mesh.inheritDeform = this.getValue(map, "deform", true); + this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent_5)); + return mesh; + } + var uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.hullLength = this.getValue(map, "hull", 0) * 2; + return mesh; + } + case "path": { + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (path == null) + return null; + path.closed = this.getValue(map, "closed", false); + path.constantSpeed = this.getValue(map, "constantSpeed", true); + var vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + var lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (var i = 0; i < map.lengths.length; i++) + lengths[i++] = map.lengths[i] * scale; + path.lengths = lengths; + return path; + } + } + return null; + }; + SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { + var scale = this.scale; + attachment.worldVerticesLength = verticesLength; + var vertices = map.vertices; + if (verticesLength == vertices.length) { + if (scale != 1) { + for (var i = 0, n = vertices.length; i < n; i++) + vertices[i] *= scale; + } + attachment.vertices = spine.Utils.toFloatArray(vertices); + return; + } + var weights = new Array(); + var bones = new Array(); + for (var i = 0, n = vertices.length; i < n;) { + var boneCount = vertices[i++]; + bones.push(boneCount); + for (var nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = spine.Utils.toFloatArray(weights); + }; + SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { + var scale = this.scale; + var timelines = new Array(); + var duration = 0; + // Slot timelines. + if (map.slots) { + for (var slotName in map.slots) { + var slotMap = map.slots[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + if (timelineName == "color") { + var timeline = new spine.ColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var color = new spine.Color(); + color.setFromString(valueMap.color); + timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); + } + else if (timelineName = "attachment") { + var timeline = new spine.AttachmentTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex++, valueMap.time, valueMap.name); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + else + throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); + } + } + } + // Bone timelines. + if (map.bones) { + for (var boneName in map.bones) { + var boneMap = map.bones[boneName]; + var boneIndex = skeletonData.findBoneIndex(boneName); + if (boneIndex == -1) + throw new Error("Bone not found: " + boneName); + for (var timelineName in boneMap) { + var timelineMap = boneMap[timelineName]; + if (timelineName === "rotate") { + var timeline = new spine.RotateTimeline(timelineMap.length); + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, valueMap.angle); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); + } + else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "scale") + timeline = new spine.ScaleTimeline(timelineMap.length); + else if (timelineName === "shear") + timeline = new spine.ShearTimeline(timelineMap.length); + else { + timeline = new spine.TranslateTimeline(timelineMap.length); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var x = this.getValue(valueMap, "x", 0), y = this.getValue(valueMap, "y", 0); + timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); + } + else + throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); + } + } + } + // IK constraint timelines. + if (map.ik) { + for (var constraintName in map.ik) { + var constraintMap = map.ik[constraintName]; + var constraint = skeletonData.findIkConstraint(constraintName); + var timeline = new spine.IkConstraintTimeline(constraintMap.length); + timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "bendPositive", true) ? 1 : -1); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + } + // Transform constraint timelines. + if (map.transform) { + for (var constraintName in map.transform) { + var constraintMap = map.transform[constraintName]; + var constraint = skeletonData.findTransformConstraint(constraintName); + var timeline = new spine.TransformConstraintTimeline(constraintMap.length); + timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + } + // Path constraint timelines. + if (map.paths) { + for (var constraintName in map.paths) { + var constraintMap = map.paths[constraintName]; + var index = skeletonData.findPathConstraintIndex(constraintName); + if (index == -1) + throw new Error("Path constraint not found: " + constraintName); + var data = skeletonData.pathConstraints[index]; + for (var timelineName in constraintMap) { + var timelineMap = constraintMap[timelineName]; + if (timelineName === "position" || timelineName === "spacing") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "spacing") { + timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + timelineScale = scale; + } + else { + timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); + if (data.positionMode == spine.PositionMode.Fixed) + timelineScale = scale; + } + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + } + else if (timelineName === "mix") { + var timeline = new spine.PathConstraintMixTimeline(timelineMap.length); + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + } + } + } + } + // Deform timelines. + if (map.deform) { + for (var deformName in map.deform) { + var deformMap = map.deform[deformName]; + var skin = skeletonData.findSkin(deformName); + if (skin == null) + throw new Error("Skin not found: " + deformName); + for (var slotName in deformMap) { + var slotMap = deformMap[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotMap.name); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + var attachment = skin.getAttachment(slotIndex, timelineName); + if (attachment == null) + throw new Error("Deform attachment not found: " + timelineMap.name); + var weighted = attachment.bones != null; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var timeline = new spine.DeformTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + var frameIndex = 0; + for (var j = 0; j < timelineMap.length; j++) { + var valueMap = timelineMap[j]; + var deform = void 0; + var verticesValue = this.getValue(valueMap, "vertices", null); + if (verticesValue == null) + deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; + else { + deform = spine.Utils.newFloatArray(deformLength); + var start = this.getValue(valueMap, "offset", 0); + spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale != 1) { + for (var i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (var i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + timeline.setFrame(frameIndex, valueMap.time, deform); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + } + } + } + // Draw order timeline. + var drawOrderNode = map.drawOrder; + if (drawOrderNode == null) + drawOrderNode = map.draworder; + if (drawOrderNode != null) { + var timeline = new spine.DrawOrderTimeline(drawOrderNode.length); + var slotCount = skeletonData.slots.length; + var frameIndex = 0; + for (var j = 0; j < drawOrderNode.length; j++) { + var drawOrderMap = drawOrderNode[j]; + var drawOrder = null; + var offsets = this.getValue(drawOrderMap, "offsets", null); + if (offsets != null) { + drawOrder = spine.Utils.newArray(slotCount, -1); + var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var i = 0; i < offsets.length; i++) { + var offsetMap = offsets[i]; + var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + if (slotIndex == -1) + throw new Error("Slot not found: " + offsetMap.slot); + // Collect unchanged items. + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + // Collect remaining unchanged items. + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. + for (var i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] == -1) + drawOrder[i] = unchanged[--unchangedIndex]; + } + timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + // Event timeline. + if (map.events) { + var timeline = new spine.EventTimeline(map.events.length); + var frameIndex = 0; + for (var i = 0; i < map.events.length; i++) { + var eventMap = map.events[i]; + var eventData = skeletonData.findEvent(eventMap.name); + if (eventData == null) + throw new Error("Event not found: " + eventMap.name); + var event_3 = new spine.Event(eventMap.time, eventData); + event_3.intValue = this.getValue(eventMap, "int", eventData.intValue); + event_3.floatValue = this.getValue(eventMap, "float", eventData.floatValue); + event_3.stringValue = this.getValue(eventMap, "string", eventData.stringValue); + timeline.setFrame(frameIndex++, event_3); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (isNaN(duration)) { + throw new Error("Error while parsing animation, duration is NaN"); + } + skeletonData.animations.push(new spine.Animation(name, timelines, duration)); + }; + SkeletonJson.prototype.readCurve = function (map, timeline, frameIndex) { + if (!map.curve) + return; + if (map.curve === "stepped") + timeline.setStepped(frameIndex); + else if (Object.prototype.toString.call(map.curve) === '[object Array]') { + var curve = map.curve; + timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]); + } + }; + SkeletonJson.prototype.getValue = function (map, prop, defaultValue) { + return map[prop] !== undefined ? map[prop] : defaultValue; + }; + SkeletonJson.blendModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "normal") + return spine.BlendMode.Normal; + if (str == "additive") + return spine.BlendMode.Additive; + if (str == "multiply") + return spine.BlendMode.Multiply; + if (str == "screen") + return spine.BlendMode.Screen; + throw new Error("Unknown blend mode: " + str); + }; + SkeletonJson.positionModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "fixed") + return spine.PositionMode.Fixed; + if (str == "percent") + return spine.PositionMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.spacingModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "length") + return spine.SpacingMode.Length; + if (str == "fixed") + return spine.SpacingMode.Fixed; + if (str == "percent") + return spine.SpacingMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.rotateModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "tangent") + return spine.RotateMode.Tangent; + if (str == "chain") + return spine.RotateMode.Chain; + if (str == "chainscale") + return spine.RotateMode.ChainScale; + throw new Error("Unknown rotate mode: " + str); + }; + return SkeletonJson; + }()); + spine.SkeletonJson = SkeletonJson; + var LinkedMesh = (function () { + function LinkedMesh(mesh, skin, slotIndex, parent) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + } + return LinkedMesh; + }()); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Skin = (function () { + function Skin(name) { + this.attachments = new Array(); + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + Skin.prototype.addAttachment = function (slotIndex, name, attachment) { + if (attachment == null) + throw new Error("attachment cannot be null."); + var attachments = this.attachments; + if (slotIndex >= attachments.length) + attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) + attachments[slotIndex] = {}; + attachments[slotIndex][name] = attachment; + }; + /** @return May be null. */ + Skin.prototype.getAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + }; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + Skin.prototype.attachAll = function (skeleton, oldSkin) { + var slotIndex = 0; + for (var i = 0; i < skeleton.slots.length; i++) { + var slot = skeleton.slots[i]; + var slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + var dictionary = oldSkin.attachments[slotIndex]; + for (var key in dictionary) { + var skinAttachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + var attachment = this.getAttachment(slotIndex, name); + if (attachment != null) + slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + }; + return Skin; + }()); + spine.Skin = Skin; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Slot = (function () { + function Slot(data, bone) { + this.attachmentVertices = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (bone == null) + throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new spine.Color(); + this.setToSetupPose(); + } + /** @return May be null. */ + Slot.prototype.getAttachment = function () { + return this.attachment; + }; + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + Slot.prototype.setAttachment = function (attachment) { + if (this.attachment == attachment) + return; + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + this.attachmentVertices.length = 0; + }; + Slot.prototype.setAttachmentTime = function (time) { + this.attachmentTime = this.bone.skeleton.time - time; + }; + /** Returns the time since the attachment was set. */ + Slot.prototype.getAttachmentTime = function () { + return this.bone.skeleton.time - this.attachmentTime; + }; + Slot.prototype.setToSetupPose = function () { + this.color.setFromColor(this.data.color); + if (this.data.attachmentName == null) + this.attachment = null; + else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + }; + return Slot; + }()); + spine.Slot = Slot; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SlotData = (function () { + function SlotData(index, name, boneData) { + this.color = new spine.Color(1, 1, 1, 1); + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + if (boneData == null) + throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + return SlotData; + }()); + spine.SlotData = SlotData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TransformConstraint = (function () { + function TransformConstraint(data, skeleton) { + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.temp = new spine.Vector2(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this.scaleMix = data.scaleMix; + this.shearMix = data.shearMix; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + TransformConstraint.prototype.apply = function () { + this.update(); + }; + TransformConstraint.prototype.update = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (rotateMix > 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) - Math.atan2(c, a) + this.data.offsetRotation * spine.MathUtils.degRad; + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + if (translateMix > 0) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + } + if (scaleMix > 0) { + var bs = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + var ts = Math.sqrt(ta * ta + tc * tc); + var s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleX) * scaleMix) / bs : 0; + bone.a *= s; + bone.c *= s; + bs = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = Math.sqrt(tb * tb + td * td); + s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleY) * scaleMix) / bs : 0; + bone.b *= s; + bone.d *= s; + } + if (shearMix > 0) { + var b = bone.b, d = bone.d; + var by = Math.atan2(d, b); + var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r = by + (r + this.data.offsetShearY * spine.MathUtils.degRad) * shearMix; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + } + } + }; + return TransformConstraint; + }()); + spine.TransformConstraint = TransformConstraint; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TransformConstraintData = (function () { + function TransformConstraintData(name) { + this.bones = new Array(); + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.offsetRotation = 0; + this.offsetX = 0; + this.offsetY = 0; + this.offsetScaleX = 0; + this.offsetScaleY = 0; + this.offsetShearY = 0; + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return TransformConstraintData; + }()); + spine.TransformConstraintData = TransformConstraintData; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Color = (function () { + function Color(r, g, b, a) { + if (r === void 0) { r = 0; } + if (g === void 0) { g = 0; } + if (b === void 0) { b = 0; } + if (a === void 0) { a = 0; } + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + Color.prototype.set = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.clamp(); + }; + Color.prototype.setFromColor = function (c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + }; + Color.prototype.setFromString = function (hex) { + hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255.0; + this.g = parseInt(hex.substr(2, 2), 16) / 255.0; + this.b = parseInt(hex.substr(4, 2), 16) / 255.0; + this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; + }; + Color.prototype.add = function (r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + this.clamp(); + }; + Color.prototype.clamp = function () { + if (this.r < 0) + this.r = 0; + else if (this.r > 1) + this.r = 1; + if (this.g < 0) + this.g = 0; + else if (this.g > 1) + this.g = 1; + if (this.b < 0) + this.b = 0; + else if (this.b > 1) + this.b = 1; + if (this.a < 0) + this.a = 0; + else if (this.a > 1) + this.a = 1; + return this; + }; + return Color; + }()); + spine.Color = Color; + var MathUtils = (function () { + function MathUtils() { + } + MathUtils.clamp = function (value, min, max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + }; + MathUtils.cosDeg = function (degrees) { + return Math.cos(degrees * MathUtils.degRad); + }; + MathUtils.sinDeg = function (degrees) { + return Math.sin(degrees * MathUtils.degRad); + }; + MathUtils.signum = function (value) { + return value >= 0 ? 1 : -1; + }; + MathUtils.toInt = function (x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + }; + MathUtils.PI = 3.1415927; + MathUtils.PI2 = MathUtils.PI * 2; + MathUtils.radiansToDegrees = 180 / MathUtils.PI; + MathUtils.radDeg = MathUtils.radiansToDegrees; + MathUtils.degreesToRadians = MathUtils.PI / 180; + MathUtils.degRad = MathUtils.degreesToRadians; + return MathUtils; + }()); + spine.MathUtils = MathUtils; + var Utils = (function () { + function Utils() { + } + Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { + for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + }; + Utils.setArraySize = function (array, size, value) { + if (value === void 0) { value = 0; } + var oldSize = array.length; + if (oldSize == size) + return array; + array.length = size; + if (oldSize < size) { + for (var i = oldSize; i < size; i++) + array[i] = value; + } + return array; + }; + Utils.newArray = function (size, defaultValue) { + var array = new Array(size); + for (var i = 0; i < size; i++) + array[i] = defaultValue; + return array; + }; + Utils.newFloatArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Float32Array(size); + } + else { + var array = new Array(size); + for (var i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + }; + Utils.toFloatArray = function (array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + }; + Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; + return Utils; + }()); + spine.Utils = Utils; + var Pool = (function () { + function Pool(instantiator) { + this._items = new Array(16); + this._instantiator = instantiator; + } + Pool.prototype.obtain = function () { + return this._items.length > 0 ? this._items.pop() : this._instantiator(); + }; + Pool.prototype.free = function (item) { + this._items.push(item); + }; + Pool.prototype.freeAll = function (items) { + for (var i = 0; i < items.length; i++) + this._items[i] = items[i]; + }; + Pool.prototype.clear = function () { + this._items.length = 0; + }; + return Pool; + }()); + spine.Pool = Pool; + var Vector2 = (function () { + function Vector2(x, y) { + if (x === void 0) { x = 0; } + if (y === void 0) { y = 0; } + this.x = x; + this.y = y; + } + Vector2.prototype.set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + return Vector2; + }()); + spine.Vector2 = Vector2; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var Attachment = (function () { + function Attachment(name) { + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return Attachment; + }()); + spine.Attachment = Attachment; + var VertexAttachment = (function (_super) { + __extends(VertexAttachment, _super); + function VertexAttachment(name) { + _super.call(this, name); + this.worldVerticesLength = 0; + } + VertexAttachment.prototype.computeWorldVertices = function (slot, worldVertices) { + this.computeWorldVerticesWith(slot, 0, this.worldVerticesLength, worldVertices, 0); + }; + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + VertexAttachment.prototype.computeWorldVerticesWith = function (slot, start, count, worldVertices, offset) { + count += offset; + var skeleton = slot.bone.skeleton; + var x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices; + var bones = this.bones; + if (bones == null) { + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v_1 = start, w = offset; w < count; v_1 += 2, w += 2) { + var vx = vertices[v_1], vy = vertices[v_1 + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + var v = 0, skip = 0; + for (var i = 0; i < start; i += 2) { + var n = bones[v]; + v += n + 1; + skip += n; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = offset, b = skip * 3; w < count; w += 2) { + var wx = x, wy = y; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + else { + var deform = deformArray; + for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) { + var wx = x, wy = y; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + }; + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + VertexAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment; + }; + return VertexAttachment; + }(Attachment)); + spine.VertexAttachment = VertexAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + })(spine.AttachmentType || (spine.AttachmentType = {})); + var AttachmentType = spine.AttachmentType; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var BoundingBoxAttachment = (function (_super) { + __extends(BoundingBoxAttachment, _super); + function BoundingBoxAttachment(name) { + _super.call(this, name); + } + return BoundingBoxAttachment; + }(spine.VertexAttachment)); + spine.BoundingBoxAttachment = BoundingBoxAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var MeshAttachment = (function (_super) { + __extends(MeshAttachment, _super); + function MeshAttachment(name) { + _super.call(this, name); + this.color = new spine.Color(1, 1, 1, 1); + this.inheritDeform = false; + this.tempColor = new spine.Color(0, 0, 0, 0); + } + MeshAttachment.prototype.updateUVs = function () { + var regionUVs = this.regionUVs; + var verticesLength = regionUVs.length; + var worldVerticesLength = (verticesLength >> 1) * 8; + if (this.worldVertices == null || this.worldVertices.length != worldVerticesLength) + this.worldVertices = spine.Utils.newFloatArray(worldVerticesLength); + var u = 0, v = 0, width = 0, height = 0; + if (this.region == null) { + u = v = 0; + width = height = 1; + } + else { + u = this.region.u; + v = this.region.v; + width = this.region.u2 - u; + height = this.region.v2 - v; + } + if (this.region.rotate) { + for (var i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i + 1] * width; + this.worldVertices[w + 1] = v + height - regionUVs[i] * height; + } + } + else { + for (var i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i] * width; + this.worldVertices[w + 1] = v + regionUVs[i + 1] * height; + } + } + }; + /** @return The updated world vertices. */ + MeshAttachment.prototype.updateWorldVertices = function (slot, premultipliedAlpha) { + var skeleton = slot.bone.skeleton; + var skeletonColor = skeleton.color, slotColor = slot.color, meshColor = this.color; + var alpha = skeletonColor.a * slotColor.a * meshColor.a; + var multiplier = premultipliedAlpha ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * meshColor.r * multiplier, skeletonColor.g * slotColor.g * meshColor.g * multiplier, skeletonColor.b * slotColor.b * meshColor.b * multiplier, alpha); + var x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices, worldVertices = this.worldVertices; + var bones = this.bones; + if (bones == null) { + var verticesLength = vertices.length; + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v = 0, w = 0; v < verticesLength; v += 2, w += 8) { + var vx = vertices[v], vy = vertices[v + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + return worldVertices; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = 0, v = 0, b = 0, n = bones.length; v < n; w += 8) { + var wx = x, wy = y; + var nn = bones[v++] + v; + for (; v < nn; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + else { + var deform = deformArray; + for (var w = 0, v = 0, b = 0, f = 0, n = bones.length; v < n; w += 8) { + var wx = x, wy = y; + var nn = bones[v++] + v; + for (; v < nn; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + return worldVertices; + }; + MeshAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment || (this.inheritDeform && this._parentMesh == sourceAttachment); + }; + MeshAttachment.prototype.getParentMesh = function () { + return this._parentMesh; + }; + /** @param parentMesh May be null. */ + MeshAttachment.prototype.setParentMesh = function (parentMesh) { + this._parentMesh = parentMesh; + if (parentMesh != null) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + } + }; + return MeshAttachment; + }(spine.VertexAttachment)); + spine.MeshAttachment = MeshAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var PathAttachment = (function (_super) { + __extends(PathAttachment, _super); + function PathAttachment(name) { + _super.call(this, name); + this.closed = false; + this.constantSpeed = false; + } + return PathAttachment; + }(spine.VertexAttachment)); + spine.PathAttachment = PathAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var RegionAttachment = (function (_super) { + __extends(RegionAttachment, _super); + function RegionAttachment(name) { + _super.call(this, name); + this.x = 0; + this.y = 0; + this.scaleX = 1; + this.scaleY = 1; + this.rotation = 0; + this.width = 0; + this.height = 0; + this.color = new spine.Color(1, 1, 1, 1); + this.offset = spine.Utils.newFloatArray(8); + this.vertices = spine.Utils.newFloatArray(8 * 4); + this.tempColor = new spine.Color(1, 1, 1, 1); + } + RegionAttachment.prototype.setRegion = function (region) { + var vertices = this.vertices; + if (region.rotate) { + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v2; + vertices[RegionAttachment.U3] = region.u; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v; + vertices[RegionAttachment.U1] = region.u2; + vertices[RegionAttachment.V1] = region.v2; + } + else { + vertices[RegionAttachment.U1] = region.u; + vertices[RegionAttachment.V1] = region.v2; + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v; + vertices[RegionAttachment.U3] = region.u2; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v2; + } + }; + RegionAttachment.prototype.updateOffset = function () { + var regionScaleX = this.width / this.region.originalWidth * this.scaleX; + var regionScaleY = this.height / this.region.originalHeight * this.scaleY; + var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + var localX2 = localX + this.region.width * regionScaleX; + var localY2 = localY + this.region.height * regionScaleY; + var radians = this.rotation * Math.PI / 180; + var cos = Math.cos(radians); + var sin = Math.sin(radians); + var localXCos = localX * cos + this.x; + var localXSin = localX * sin; + var localYCos = localY * cos + this.y; + var localYSin = localY * sin; + var localX2Cos = localX2 * cos + this.x; + var localX2Sin = localX2 * sin; + var localY2Cos = localY2 * cos + this.y; + var localY2Sin = localY2 * sin; + var offset = this.offset; + offset[RegionAttachment.OX1] = localXCos - localYSin; + offset[RegionAttachment.OY1] = localYCos + localXSin; + offset[RegionAttachment.OX2] = localXCos - localY2Sin; + offset[RegionAttachment.OY2] = localY2Cos + localXSin; + offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; + offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; + offset[RegionAttachment.OX4] = localX2Cos - localYSin; + offset[RegionAttachment.OY4] = localYCos + localX2Sin; + }; + RegionAttachment.prototype.updateWorldVertices = function (slot, premultipliedAlpha) { + var skeleton = slot.bone.skeleton; + var skeletonColor = skeleton.color; + var slotColor = slot.color; + var regionColor = this.color; + var alpha = skeletonColor.a * slotColor.a * regionColor.a; + var multiplier = premultipliedAlpha ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); + var vertices = this.vertices; + var offset = this.offset; + var bone = slot.bone; + var x = skeleton.x + bone.worldX, y = skeleton.y + bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var offsetX = 0, offsetY = 0; + offsetX = offset[RegionAttachment.OX1]; + offsetY = offset[RegionAttachment.OY1]; + vertices[RegionAttachment.X1] = offsetX * a + offsetY * b + x; // br + vertices[RegionAttachment.Y1] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C1R] = color.r; + vertices[RegionAttachment.C1G] = color.g; + vertices[RegionAttachment.C1B] = color.b; + vertices[RegionAttachment.C1A] = color.a; + offsetX = offset[RegionAttachment.OX2]; + offsetY = offset[RegionAttachment.OY2]; + vertices[RegionAttachment.X2] = offsetX * a + offsetY * b + x; // bl + vertices[RegionAttachment.Y2] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C2R] = color.r; + vertices[RegionAttachment.C2G] = color.g; + vertices[RegionAttachment.C2B] = color.b; + vertices[RegionAttachment.C2A] = color.a; + offsetX = offset[RegionAttachment.OX3]; + offsetY = offset[RegionAttachment.OY3]; + vertices[RegionAttachment.X3] = offsetX * a + offsetY * b + x; // ul + vertices[RegionAttachment.Y3] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C3R] = color.r; + vertices[RegionAttachment.C3G] = color.g; + vertices[RegionAttachment.C3B] = color.b; + vertices[RegionAttachment.C3A] = color.a; + offsetX = offset[RegionAttachment.OX4]; + offsetY = offset[RegionAttachment.OY4]; + vertices[RegionAttachment.X4] = offsetX * a + offsetY * b + x; // ur + vertices[RegionAttachment.Y4] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C4R] = color.r; + vertices[RegionAttachment.C4G] = color.g; + vertices[RegionAttachment.C4B] = color.b; + vertices[RegionAttachment.C4A] = color.a; + return vertices; + }; + RegionAttachment.OX1 = 0; + RegionAttachment.OY1 = 1; + RegionAttachment.OX2 = 2; + RegionAttachment.OY2 = 3; + RegionAttachment.OX3 = 4; + RegionAttachment.OY3 = 5; + RegionAttachment.OX4 = 6; + RegionAttachment.OY4 = 7; + RegionAttachment.X1 = 0; + RegionAttachment.Y1 = 1; + RegionAttachment.C1R = 2; + RegionAttachment.C1G = 3; + RegionAttachment.C1B = 4; + RegionAttachment.C1A = 5; + RegionAttachment.U1 = 6; + RegionAttachment.V1 = 7; + RegionAttachment.X2 = 8; + RegionAttachment.Y2 = 9; + RegionAttachment.C2R = 10; + RegionAttachment.C2G = 11; + RegionAttachment.C2B = 12; + RegionAttachment.C2A = 13; + RegionAttachment.U2 = 14; + RegionAttachment.V2 = 15; + RegionAttachment.X3 = 16; + RegionAttachment.Y3 = 17; + RegionAttachment.C3R = 18; + RegionAttachment.C3G = 19; + RegionAttachment.C3B = 20; + RegionAttachment.C3A = 21; + RegionAttachment.U3 = 22; + RegionAttachment.V3 = 23; + RegionAttachment.X4 = 24; + RegionAttachment.Y4 = 25; + RegionAttachment.C4R = 26; + RegionAttachment.C4G = 27; + RegionAttachment.C4B = 28; + RegionAttachment.C4A = 29; + RegionAttachment.U4 = 30; + RegionAttachment.V4 = 31; + return RegionAttachment; + }(spine.Attachment)); + spine.RegionAttachment = RegionAttachment; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var TextureRegion = (function () { + function TextureRegion() { + this.u = 0; + this.v = 0; + this.u2 = 0; + this.v2 = 0; + this.width = 0; + this.height = 0; + this.rotate = false; + this.offsetX = 0; + this.offsetY = 0; + this.originalWidth = 0; + this.originalHeight = 0; + } + return TextureRegion; + }()); + spine.TextureRegion = TextureRegion; +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var AssetManager = (function () { + function AssetManager(gl) { + this._assets = {}; + this._errors = {}; + this._toLoad = 0; + this._loaded = 0; + this._gl = gl; + } + AssetManager.prototype.loadText = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + this._toLoad++; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + if (success) + success(path, request.responseText); + _this._assets[path] = request.responseText; + } + else { + if (error) + error(path, "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText); + _this._errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; + } + _this._toLoad--; + _this._loaded++; + } + }; + request.open("GET", path, true); + request.send(); + }; + AssetManager.prototype.loadTexture = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + this._toLoad++; + var img = new Image(); + img.src = path; + img.onload = function (ev) { + if (success) + success(path, img); + var texture = new webgl.Texture(_this._gl, img); + _this._assets[path] = texture; + _this._toLoad--; + _this._loaded++; + }; + img.onerror = function (ev) { + if (error) + error(path, "Couldn't load image " + path); + _this._errors[path] = "Couldn't load image " + path; + _this._toLoad--; + _this._loaded++; + }; + }; + AssetManager.prototype.get = function (path) { + return this._assets[path]; + }; + AssetManager.prototype.remove = function (path) { + var asset = this._assets[path]; + if (asset instanceof webgl.Texture) { + asset.dispose(); + } + this._assets[path] = null; + }; + AssetManager.prototype.removeAll = function () { + for (var key in this._assets) { + var asset = this._assets[key]; + if (asset instanceof webgl.Texture) + asset.dispose(); + } + this._assets = {}; + }; + AssetManager.prototype.isLoadingComplete = function () { + return this._toLoad == 0; + }; + AssetManager.prototype.toLoad = function () { + return this._toLoad; + }; + AssetManager.prototype.loaded = function () { + return this._loaded; + }; + AssetManager.prototype.dispose = function () { + this.removeAll(); + }; + AssetManager.prototype.hasErrors = function () { + return Object.keys(this._errors).length > 0; + }; + AssetManager.prototype.errors = function () { + return this._errors; + }; + return AssetManager; + }()); + webgl.AssetManager = AssetManager; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + webgl.M00 = 0; + webgl.M01 = 4; + webgl.M02 = 8; + webgl.M03 = 12; + webgl.M10 = 1; + webgl.M11 = 5; + webgl.M12 = 9; + webgl.M13 = 13; + webgl.M20 = 2; + webgl.M21 = 6; + webgl.M22 = 10; + webgl.M23 = 14; + webgl.M30 = 3; + webgl.M31 = 7; + webgl.M32 = 11; + webgl.M33 = 15; + var Matrix4 = (function () { + function Matrix4() { + this.temp = new Float32Array(16); + this.values = new Float32Array(16); + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M11] = 1; + v[webgl.M22] = 1; + v[webgl.M33] = 1; + } + Matrix4.prototype.set = function (values) { + this.values.set(values); + return this; + }; + Matrix4.prototype.transpose = function () { + var t = this.temp; + var v = this.values; + t[webgl.M00] = v[webgl.M00]; + t[webgl.M01] = v[webgl.M10]; + t[webgl.M02] = v[webgl.M20]; + t[webgl.M03] = v[webgl.M30]; + t[webgl.M10] = v[webgl.M01]; + t[webgl.M11] = v[webgl.M11]; + t[webgl.M12] = v[webgl.M21]; + t[webgl.M13] = v[webgl.M31]; + t[webgl.M20] = v[webgl.M02]; + t[webgl.M21] = v[webgl.M12]; + t[webgl.M22] = v[webgl.M22]; + t[webgl.M23] = v[webgl.M32]; + t[webgl.M30] = v[webgl.M03]; + t[webgl.M31] = v[webgl.M13]; + t[webgl.M32] = v[webgl.M23]; + t[webgl.M33] = v[webgl.M33]; + return this.set(t); + }; + Matrix4.prototype.identity = function () { + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M01] = 0; + v[webgl.M02] = 0; + v[webgl.M03] = 0; + v[webgl.M10] = 0; + v[webgl.M11] = 1; + v[webgl.M12] = 0; + v[webgl.M13] = 0; + v[webgl.M20] = 0; + v[webgl.M21] = 0; + v[webgl.M22] = 1; + v[webgl.M23] = 0; + v[webgl.M30] = 0; + v[webgl.M31] = 0; + v[webgl.M32] = 0; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.invert = function () { + var v = this.values; + var t = this.temp; + var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + if (l_det == 0) + throw new Error("non-invertible matrix"); + var inv_det = 1.0 / l_det; + t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] + - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] + + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] + - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] + + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] + + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] + - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; + t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; + t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; + t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] + - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; + v[webgl.M00] = t[webgl.M00] * inv_det; + v[webgl.M01] = t[webgl.M01] * inv_det; + v[webgl.M02] = t[webgl.M02] * inv_det; + v[webgl.M03] = t[webgl.M03] * inv_det; + v[webgl.M10] = t[webgl.M10] * inv_det; + v[webgl.M11] = t[webgl.M11] * inv_det; + v[webgl.M12] = t[webgl.M12] * inv_det; + v[webgl.M13] = t[webgl.M13] * inv_det; + v[webgl.M20] = t[webgl.M20] * inv_det; + v[webgl.M21] = t[webgl.M21] * inv_det; + v[webgl.M22] = t[webgl.M22] * inv_det; + v[webgl.M23] = t[webgl.M23] * inv_det; + v[webgl.M30] = t[webgl.M30] * inv_det; + v[webgl.M31] = t[webgl.M31] * inv_det; + v[webgl.M32] = t[webgl.M32] * inv_det; + v[webgl.M33] = t[webgl.M33] * inv_det; + return this; + }; + Matrix4.prototype.determinant = function () { + var v = this.values; + return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + }; + Matrix4.prototype.translate = function (x, y, z) { + var v = this.values; + v[webgl.M03] += x; + v[webgl.M13] += y; + v[webgl.M23] += z; + return this; + }; + Matrix4.prototype.copy = function () { + return new Matrix4().set(this.values); + }; + Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { + this.identity(); + var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); + var l_a1 = (far + near) / (near - far); + var l_a2 = (2 * far * near) / (near - far); + var v = this.values; + v[webgl.M00] = l_fd / aspectRatio; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = l_fd; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = l_a1; + v[webgl.M32] = -1; + v[webgl.M03] = 0; + v[webgl.M13] = 0; + v[webgl.M23] = l_a2; + v[webgl.M33] = 0; + return this; + }; + Matrix4.prototype.ortho2d = function (x, y, width, height) { + return this.ortho(x, x + width, y, y + height, 0, 1); + }; + Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { + this.identity(); + var x_orth = 2 / (right - left); + var y_orth = 2 / (top - bottom); + var z_orth = -2 / (far - near); + var tx = -(right + left) / (right - left); + var ty = -(top + bottom) / (top - bottom); + var tz = -(far + near) / (far - near); + var v = this.values; + v[webgl.M00] = x_orth; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = y_orth; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = z_orth; + v[webgl.M32] = 0; + v[webgl.M03] = tx; + v[webgl.M13] = ty; + v[webgl.M23] = tz; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.multiply = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; + t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; + t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; + t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; + t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; + t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; + t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; + t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; + t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; + t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; + t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; + t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; + t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; + t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; + t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; + t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; + return this.set(this.temp); + }; + Matrix4.prototype.multiplyLeft = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; + t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; + t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; + t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; + t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; + t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; + t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; + t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; + t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; + t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; + t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; + t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; + t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; + t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; + t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; + t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; + return this.set(this.temp); + }; + return Matrix4; + }()); + webgl.Matrix4 = Matrix4; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Mesh = (function () { + function Mesh(gl, _attributes, maxVertices, maxIndices) { + this._attributes = _attributes; + this._verticesLength = 0; + this._dirtyVertices = false; + this._indicesLength = 0; + this._dirtyIndices = false; + this._elementsPerVertex = 0; + this._gl = gl; + this._elementsPerVertex = 0; + for (var i = 0; i < _attributes.length; i++) { + this._elementsPerVertex += _attributes[i].numElements; + } + this._vertices = new Float32Array(maxVertices * this._elementsPerVertex); + this._indices = new Uint16Array(maxIndices); + } + Mesh.prototype.attributes = function () { return this._attributes; }; + Mesh.prototype.maxVertices = function () { return this._vertices.length / this._elementsPerVertex; }; + Mesh.prototype.numVertices = function () { return this._verticesLength / this._elementsPerVertex; }; + Mesh.prototype.setVerticesLength = function (length) { + this._dirtyVertices = true; + this._verticesLength = length; + }; + Mesh.prototype.vertices = function () { return this._vertices; }; + Mesh.prototype.maxIndices = function () { return this._indices.length; }; + Mesh.prototype.numIndices = function () { return this._indicesLength; }; + Mesh.prototype.setIndicesLength = function (length) { + this._dirtyIndices = true; + this._indicesLength = length; + }; + Mesh.prototype.indices = function () { return this._indices; }; + ; + Mesh.prototype.setVertices = function (vertices) { + this._dirtyVertices = true; + if (vertices.length > this._vertices.length) + throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); + this._vertices.set(vertices, 0); + this._verticesLength = vertices.length; + }; + Mesh.prototype.setIndices = function (indices) { + this._dirtyIndices = true; + if (indices.length > this._indices.length) + throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); + this._indices.set(indices, 0); + this._indicesLength = indices.length; + }; + Mesh.prototype.draw = function (shader, primitiveType) { + this.drawWithOffset(shader, primitiveType, 0, this._indicesLength > 0 ? this._indicesLength : this._verticesLength); + }; + Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { + var gl = this._gl; + if (this._dirtyVertices || this._dirtyIndices) + this.update(); + this.bind(shader); + if (this._indicesLength > 0) + gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); + else + gl.drawArrays(primitiveType, offset, count); + this.unbind(shader); + }; + Mesh.prototype.bind = function (shader) { + var gl = this._gl; + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + var offset = 0; + for (var i = 0; i < this._attributes.length; i++) { + var attrib = this._attributes[i]; + var location_1 = shader.getAttributeLocation(attrib.name); + gl.enableVertexAttribArray(location_1); + gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this._elementsPerVertex * 4, offset * 4); + offset += attrib.numElements; + } + if (this._indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + }; + Mesh.prototype.unbind = function (shader) { + var gl = this._gl; + for (var i = 0; i < this._attributes.length; i++) { + var attrib = this._attributes[i]; + var location_2 = shader.getAttributeLocation(attrib.name); + gl.disableVertexAttribArray(location_2); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + if (this._indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + }; + Mesh.prototype.update = function () { + var gl = this._gl; + if (this._dirtyVertices) { + if (!this._verticesBuffer) { + this._verticesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this._vertices.subarray(0, this._verticesLength), gl.STATIC_DRAW); + this._dirtyVertices = false; + } + if (this._dirtyIndices) { + if (!this._indicesBuffer) { + this._indicesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this._indices.subarray(0, this._indicesLength), gl.STATIC_DRAW); + this._dirtyIndices = false; + } + }; + Mesh.prototype.dispose = function () { + var gl = this._gl; + gl.deleteBuffer(this._verticesBuffer); + gl.deleteBuffer(this._indicesBuffer); + }; + return Mesh; + }()); + webgl.Mesh = Mesh; + var VertexAttribute = (function () { + function VertexAttribute(name, type, numElements) { + this.name = name; + this.type = type; + this.numElements = numElements; + } + return VertexAttribute; + }()); + webgl.VertexAttribute = VertexAttribute; + var Position2Attribute = (function (_super) { + __extends(Position2Attribute, _super); + function Position2Attribute() { + _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2); + } + return Position2Attribute; + }(VertexAttribute)); + webgl.Position2Attribute = Position2Attribute; + var Position3Attribute = (function (_super) { + __extends(Position3Attribute, _super); + function Position3Attribute() { + _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3); + } + return Position3Attribute; + }(VertexAttribute)); + webgl.Position3Attribute = Position3Attribute; + var TexCoordAttribute = (function (_super) { + __extends(TexCoordAttribute, _super); + function TexCoordAttribute(unit) { + if (unit === void 0) { unit = 0; } + _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2); + } + return TexCoordAttribute; + }(VertexAttribute)); + webgl.TexCoordAttribute = TexCoordAttribute; + var ColorAttribute = (function (_super) { + __extends(ColorAttribute, _super); + function ColorAttribute() { + _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4); + } + return ColorAttribute; + }(VertexAttribute)); + webgl.ColorAttribute = ColorAttribute; + (function (VertexAttributeType) { + VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; + })(webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); + var VertexAttributeType = webgl.VertexAttributeType; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var PolygonBatcher = (function () { + function PolygonBatcher(gl, maxVertices) { + if (maxVertices === void 0) { maxVertices = 10920; } + this._drawing = false; + this._shader = null; + this._lastTexture = null; + this._verticesLength = 0; + this._indicesLength = 0; + this._srcBlend = WebGLRenderingContext.SRC_ALPHA; + this._dstBlend = WebGLRenderingContext.ONE_MINUS_SRC_ALPHA; + if (maxVertices > 10920) + throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this._gl = gl; + this._mesh = new webgl.Mesh(gl, [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()], maxVertices, maxVertices * 3); + } + PolygonBatcher.prototype.begin = function (shader) { + var gl = this._gl; + if (this._drawing) + throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); + this._drawCalls = 0; + this._shader = shader; + this._lastTexture = null; + this._drawing = true; + gl.enable(gl.BLEND); + gl.blendFunc(this._srcBlend, this._dstBlend); + }; + PolygonBatcher.prototype.setBlendMode = function (srcBlend, dstBlend) { + var gl = this._gl; + this._srcBlend = srcBlend; + this._dstBlend = dstBlend; + if (this._drawing) { + this.flush(); + gl.blendFunc(this._srcBlend, this._dstBlend); + } + }; + PolygonBatcher.prototype.draw = function (texture, vertices, indices) { + if (texture != this._lastTexture) { + this.flush(); + this._lastTexture = texture; + texture.bind(); + } + else if (this._verticesLength + vertices.length > this._mesh.vertices().length || + this._indicesLength + indices.length > this._mesh.indices().length) { + this.flush(); + } + var indexStart = this._mesh.numVertices(); + this._mesh.vertices().set(vertices, this._verticesLength); + this._verticesLength += vertices.length; + this._mesh.setVerticesLength(this._verticesLength); + var indicesArray = this._mesh.indices(); + for (var i = this._indicesLength, j = 0; j < indices.length; i++, j++) + indicesArray[i] = indices[j] + indexStart; + this._indicesLength += indices.length; + this._mesh.setIndicesLength(this._indicesLength); + }; + PolygonBatcher.prototype.flush = function () { + var gl = this._gl; + if (this._verticesLength == 0) + return; + this._mesh.draw(this._shader, gl.TRIANGLES); + this._verticesLength = 0; + this._indicesLength = 0; + this._mesh.setVerticesLength(0); + this._mesh.setIndicesLength(0); + this._drawCalls++; + }; + PolygonBatcher.prototype.end = function () { + var gl = this._gl; + if (!this._drawing) + throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); + if (this._verticesLength > 0 || this._indicesLength > 0) + this.flush(); + this._shader = null; + this._lastTexture = null; + this._drawing = false; + gl.disable(gl.BLEND); + }; + PolygonBatcher.prototype.drawCalls = function () { return this._drawCalls; }; + return PolygonBatcher; + }()); + webgl.PolygonBatcher = PolygonBatcher; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Shader = (function () { + function Shader(gl, _vertexShader, _fragmentShader) { + this._vertexShader = _vertexShader; + this._fragmentShader = _fragmentShader; + this._vs = null; + this._fs = null; + this._program = null; + this._tmp2x2 = new Float32Array(2 * 2); + this._tmp3x3 = new Float32Array(3 * 3); + this._tmp4x4 = new Float32Array(4 * 4); + this._gl = gl; + this.compile(); + } + Shader.prototype.program = function () { return this._program; }; + Shader.prototype.vertexShader = function () { return this._vertexShader; }; + Shader.prototype.fragmentShader = function () { return this._fragmentShader; }; + Shader.prototype.compile = function () { + var gl = this._gl; + try { + this._vs = this.compileShader(gl.VERTEX_SHADER, this._vertexShader); + this._fs = this.compileShader(gl.FRAGMENT_SHADER, this._fragmentShader); + this._program = this.compileProgram(this._vs, this._fs); + } + catch (e) { + this.dispose(); + throw e; + } + }; + Shader.prototype.compileShader = function (type, source) { + var gl = this._gl; + var shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); + gl.deleteShader(shader); + throw new Error(error); + } + return shader; + }; + Shader.prototype.compileProgram = function (vs, fs) { + var gl = this._gl; + var program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); + gl.deleteProgram(program); + throw new Error(error); + } + return program; + }; + Shader.prototype.bind = function () { + this._gl.useProgram(this._program); + }; + Shader.prototype.unbind = function () { + this._gl.useProgram(null); + }; + Shader.prototype.setUniformi = function (uniform, value) { + this._gl.uniform1i(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniformf = function (uniform, value) { + this._gl.uniform1f(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniform2f = function (uniform, value, value2) { + this._gl.uniform2f(this.getUniformLocation(uniform), value, value2); + }; + Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { + this._gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); + }; + Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { + this._gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); + }; + Shader.prototype.setUniform2x2f = function (uniform, value) { + var gl = this._gl; + this._tmp2x2.set(value); + gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this._tmp2x2); + }; + Shader.prototype.setUniform3x3f = function (uniform, value) { + var gl = this._gl; + this._tmp3x3.set(value); + gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this._tmp3x3); + }; + Shader.prototype.setUniform4x4f = function (uniform, value) { + var gl = this._gl; + this._tmp4x4.set(value); + gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this._tmp4x4); + }; + Shader.prototype.getUniformLocation = function (uniform) { + var gl = this._gl; + var location = gl.getUniformLocation(this._program, uniform); + if (!location) + throw new Error("Couldn't find location for uniform " + uniform); + return location; + }; + Shader.prototype.getAttributeLocation = function (attribute) { + var gl = this._gl; + var location = gl.getAttribLocation(this._program, attribute); + if (location == -1) + throw new Error("Couldn't find location for attribute " + attribute); + return location; + }; + Shader.prototype.dispose = function () { + var gl = this._gl; + if (this._vs) { + gl.deleteShader(this._vs); + this._vs = null; + } + if (this._fs) { + gl.deleteShader(this._fs); + this._fs = null; + } + if (this._program) { + gl.deleteProgram(this._program); + this._program = null; + } + }; + Shader.newColoredTextured = function (gl) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; + return new Shader(gl, vs, fs); + }; + Shader.newColored = function (gl) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; + return new Shader(gl, vs, fs); + }; + Shader.MVP_MATRIX = "u_projTrans"; + Shader.POSITION = "a_position"; + Shader.COLOR = "a_color"; + Shader.TEXCOORDS = "a_texCoords"; + Shader.SAMPLER = "u_texture"; + return Shader; + }()); + webgl.Shader = Shader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var SkeletonRenderer = (function () { + function SkeletonRenderer(gl) { + this.premultipliedAlpha = false; + this._gl = gl; + } + SkeletonRenderer.prototype.draw = function (batcher, skeleton) { + var premultipliedAlpha = this.premultipliedAlpha; + var blendMode = null; + var vertices = null; + var triangles = null; + var drawOrder = skeleton.drawOrder; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var attachment = slot.getAttachment(); + var texture = null; + if (attachment instanceof spine.RegionAttachment) { + var region = attachment; + vertices = region.updateWorldVertices(slot, premultipliedAlpha); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + texture = region.region.renderObject.texture; + } + else if (attachment instanceof spine.MeshAttachment) { + var mesh = attachment; + vertices = mesh.updateWorldVertices(slot, premultipliedAlpha); + triangles = mesh.triangles; + texture = mesh.region.renderObject.texture; + } + if (texture != null) { + var slotBlendMode = slot.data.blendMode; + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batcher.setBlendMode(webgl.getSourceGLBlendMode(this._gl, blendMode, premultipliedAlpha), webgl.getDestGLBlendMode(this._gl, blendMode)); + } + batcher.draw(texture, vertices, triangles); + } + } + }; + SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + return SkeletonRenderer; + }()); + webgl.SkeletonRenderer = SkeletonRenderer; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Texture = (function () { + function Texture(gl, image, useMipMaps) { + if (useMipMaps === void 0) { useMipMaps = false; } + this._boundUnit = 0; + this._gl = gl; + this._texture = gl.createTexture(); + this._image = image; + this.update(useMipMaps); + } + Texture.prototype.getImage = function () { + return this._image; + }; + Texture.prototype.setFilters = function (minFilter, magFilter) { + var gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); + }; + Texture.prototype.setWraps = function (uWrap, vWrap) { + var gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); + }; + Texture.prototype.update = function (useMipMaps) { + var gl = this._gl; + this.bind(); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (useMipMaps) + gl.generateMipmap(gl.TEXTURE_2D); + }; + Texture.prototype.bind = function (unit) { + if (unit === void 0) { unit = 0; } + var gl = this._gl; + this._boundUnit = unit; + gl.activeTexture(gl.TEXTURE0 + unit); + gl.bindTexture(gl.TEXTURE_2D, this._texture); + }; + Texture.prototype.unbind = function () { + var gl = this._gl; + gl.activeTexture(gl.TEXTURE0 + this._boundUnit); + gl.bindTexture(gl.TEXTURE_2D, null); + }; + Texture.prototype.dispose = function () { + var gl = this._gl; + gl.deleteTexture(this._texture); + }; + Texture.filterFromString = function (text) { + switch (text.toLowerCase()) { + case "nearest": return TextureFilter.Nearest; + case "linear": return TextureFilter.Linear; + case "mipmap": return TextureFilter.MipMap; + case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; + case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; + case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; + case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; + default: throw new Error("Unknown texture filter " + text); + } + }; + Texture.wrapFromString = function (text) { + switch (text.toLowerCase()) { + case "mirroredtepeat": return TextureWrap.MirroredRepeat; + case "clamptoedge": return TextureWrap.ClampToEdge; + case "repeat": return TextureWrap.Repeat; + default: throw new Error("Unknown texture wrap " + text); + } + }; + return Texture; + }()); + webgl.Texture = Texture; + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = WebGLRenderingContext.NEAREST] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = WebGLRenderingContext.LINEAR] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = WebGLRenderingContext.NEAREST_MIPMAP_NEAREST] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = WebGLRenderingContext.LINEAR_MIPMAP_NEAREST] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = WebGLRenderingContext.NEAREST_MIPMAP_LINEAR] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR] = "MipMapLinearLinear"; + })(webgl.TextureFilter || (webgl.TextureFilter = {})); + var TextureFilter = webgl.TextureFilter; + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = WebGLRenderingContext.MIRRORED_REPEAT] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = WebGLRenderingContext.CLAMP_TO_EDGE] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = WebGLRenderingContext.REPEAT] = "Repeat"; + })(webgl.TextureWrap || (webgl.TextureWrap = {})); + var TextureWrap = webgl.TextureWrap; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var TextureAtlas = (function () { + function TextureAtlas(atlasText, textureLoader) { + this.pages = new Array(); + this.regions = new Array(); + this.load(atlasText, textureLoader); + } + TextureAtlas.prototype.load = function (atlasText, textureLoader) { + if (textureLoader == null) + throw new Error("textureLoader cannot be null."); + var reader = new TextureAtlasReader(atlasText); + var tuple = new Array(4); + var page = null; + while (true) { + var line = reader.readLine(); + if (line == null) + break; + line = line.trim(); + if (line.length == 0) + page = null; + else if (!page) { + page = new TextureAtlasPage(); + page.name = line; + if (reader.readTuple(tuple) == 2) { + page.width = parseInt(tuple[0]); + page.height = parseInt(tuple[1]); + reader.readTuple(tuple); + } + // page.format = Format[tuple[0]]; we don't need format in WebGL + reader.readTuple(tuple); + page.minFilter = webgl.Texture.filterFromString(tuple[0]); + page.magFilter = webgl.Texture.filterFromString(tuple[1]); + var direction = reader.readValue(); + page.uWrap = webgl.TextureWrap.ClampToEdge; + page.vWrap = webgl.TextureWrap.ClampToEdge; + if (direction == "x") + page.uWrap = webgl.TextureWrap.Repeat; + else if (direction == "y") + page.vWrap = webgl.TextureWrap.Repeat; + else if (direction == "xy") + page.uWrap = page.vWrap = webgl.TextureWrap.Repeat; + page.texture = textureLoader(line); + page.texture.setFilters(page.minFilter, page.magFilter); + page.texture.setWraps(page.uWrap, page.vWrap); + page.width = page.texture.getImage().width; + page.height = page.texture.getImage().height; + this.pages.push(page); + } + else { + var region = new TextureAtlasRegion(); + region.name = line; + region.page = page; + region.rotate = reader.readValue() == "true"; + reader.readTuple(tuple); + var x = parseInt(tuple[0]); + var y = parseInt(tuple[1]); + reader.readTuple(tuple); + var width = parseInt(tuple[0]); + var height = parseInt(tuple[1]); + region.u = x / page.width; + region.v = y / page.height; + if (region.rotate) { + region.u2 = (x + height) / page.width; + region.v2 = (y + width) / page.height; + } + else { + region.u2 = (x + width) / page.width; + region.v2 = (y + height) / page.height; + } + region.x = x; + region.y = y; + region.width = Math.abs(width); + region.height = Math.abs(height); + if (reader.readTuple(tuple) == 4) { + // region.splits = new Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + if (reader.readTuple(tuple) == 4) { + //region.pads = Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + reader.readTuple(tuple); + } + } + region.originalWidth = parseInt(tuple[0]); + region.originalHeight = parseInt(tuple[1]); + reader.readTuple(tuple); + region.offsetX = parseInt(tuple[0]); + region.offsetY = parseInt(tuple[1]); + region.index = parseInt(reader.readValue()); + region.texture = page.texture; + this.regions.push(region); + } + } + }; + TextureAtlas.prototype.findRegion = function (name) { + for (var i = 0; i < this.regions.length; i++) { + if (this.regions[i].name == name) { + return this.regions[i]; + } + } + return null; + }; + TextureAtlas.prototype.dispose = function () { + for (var i = 0; i < this.pages.length; i++) { + this.pages[i].texture.dispose(); + } + }; + return TextureAtlas; + }()); + webgl.TextureAtlas = TextureAtlas; + var TextureAtlasReader = (function () { + function TextureAtlasReader(text) { + this.index = 0; + this.lines = text.split(/\r\n|\r|\n/); + } + TextureAtlasReader.prototype.readLine = function () { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + }; + TextureAtlasReader.prototype.readValue = function () { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + return line.substring(colon + 1).trim(); + }; + TextureAtlasReader.prototype.readTuple = function (tuple) { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + var i = 0, lastMatch = colon + 1; + for (; i < 3; i++) { + var comma = line.indexOf(",", lastMatch); + if (comma == -1) + break; + tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + } + tuple[i] = line.substring(lastMatch).trim(); + return i + 1; + }; + return TextureAtlasReader; + }()); + var TextureAtlasPage = (function () { + function TextureAtlasPage() { + } + return TextureAtlasPage; + }()); + webgl.TextureAtlasPage = TextureAtlasPage; + var TextureAtlasRegion = (function (_super) { + __extends(TextureAtlasRegion, _super); + function TextureAtlasRegion() { + _super.apply(this, arguments); + } + return TextureAtlasRegion; + }(spine.TextureRegion)); + webgl.TextureAtlasRegion = TextureAtlasRegion; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var TextureAtlasAttachmentLoader = (function () { + function TextureAtlasAttachmentLoader(atlas) { + this.atlas = atlas; + } + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) + throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + var attachment = new spine.RegionAttachment(name); + attachment.setRegion(region); + attachment.region = region; + return attachment; + }; + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) + throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + var attachment = new spine.MeshAttachment(name); + attachment.region = region; + return attachment; + }; + /** @return May be null to not load an attachment. */ + TextureAtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { + return new spine.BoundingBoxAttachment(name); + }; + /** @return May be null to not load an attachment */ + TextureAtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { + return new spine.PathAttachment(name); + }; + return TextureAtlasAttachmentLoader; + }()); + webgl.TextureAtlasAttachmentLoader = TextureAtlasAttachmentLoader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + var Vector3 = (function () { + function Vector3() { + this.x = 0; + this.y = 0; + this.z = 0; + } + Vector3.prototype.set = function (x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + }; + Vector3.prototype.add = function (v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + }; + Vector3.prototype.sub = function (v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + }; + Vector3.prototype.scale = function (s) { + this.x *= s; + this.y *= s; + this.z *= s; + return this; + }; + Vector3.prototype.normalize = function () { + var len = this.length(); + if (len == 0) + return this; + len = 1 / len; + this.x *= len; + this.y *= len; + this.z *= len; + return this; + }; + Vector3.prototype.cross = function (v) { + return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); + }; + Vector3.prototype.multiply = function (matrix) { + var l_mat = matrix.values; + return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); + }; + Vector3.prototype.project = function (matrix) { + var l_mat = matrix.values; + var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); + return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); + }; + Vector3.prototype.dot = function (v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + }; + Vector3.prototype.length = function () { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + }; + Vector3.prototype.distance = function (v) { + var a = v.x - this.x; + var b = v.y - this.y; + var c = v.z - this.z; + return Math.sqrt(a * a + b * b + c * c); + }; + return Vector3; + }()); + webgl.Vector3 = Vector3; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var webgl; + (function (webgl) { + function getSourceGLBlendMode(gl, blendMode, premultipliedAlpha) { + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + switch (blendMode) { + case spine.BlendMode.Normal: return premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + case spine.BlendMode.Additive: return premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + case spine.BlendMode.Multiply: return gl.DST_COLOR; + case spine.BlendMode.Screen: return gl.ONE; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + webgl.getSourceGLBlendMode = getSourceGLBlendMode; + function getDestGLBlendMode(gl, blendMode) { + switch (blendMode) { + case spine.BlendMode.Normal: return gl.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Additive: return gl.ONE; + case spine.BlendMode.Multiply: return gl.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Screen: return gl.ONE_MINUS_SRC_ALPHA; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + webgl.getDestGLBlendMode = getDestGLBlendMode; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +var spine; +(function (spine) { + var SpineWidget = (function () { + function SpineWidget(element, config) { + var _this = this; + this._mvp = new spine.webgl.Matrix4(); + this._paused = false; + this._lastFrameTime = Date.now() / 1000.0; + this._backgroundColor = new spine.Color(); + this._loaded = false; + if (!element) + throw new Error("Please provide a DOM element, e.g. document.getElementById('myelement')"); + if (!config) + throw new Error("Please provide a configuration, specifying at least the json file, atlas file and animation name"); + var elementId = element; + if (typeof (element) === "string") + element = document.getElementById(element); + if (element == null) + throw new Error("Element " + elementId + " does not exist"); + this.validateConfig(config); + var canvas = this.canvas = document.createElement("canvas"); + element.appendChild(canvas); + canvas.width = config.width; + canvas.height = config.height; + var webglConfig = { alpha: false }; + var gl = this.gl = (canvas.getContext("webgl", webglConfig) || canvas.getContext("experimental-webgl", webglConfig)); + this._shader = spine.webgl.Shader.newColoredTextured(gl); + this._batcher = new spine.webgl.PolygonBatcher(gl); + this._mvp.ortho2d(0, 0, 639, 479); + this._skeletonRenderer = new spine.webgl.SkeletonRenderer(gl); + var assets = this._assetManager = new spine.webgl.AssetManager(gl); + assets.loadText(config.atlas); + assets.loadText(config.json); + assets.loadTexture(config.atlas.replace(".atlas", ".png")); + requestAnimationFrame(function () { _this.load(); }); + } + SpineWidget.prototype.validateConfig = function (config) { + if (!config.atlas) + throw new Error("Please specify config.atlas"); + if (!config.json) + throw new Error("Please specify config.json"); + if (!config.animation) + throw new Error("Please specify config.animationName"); + if (!config.scale) + config.scale = 1.0; + if (!config.skin) + config.skin = "default"; + if (config.loop === undefined) + config.loop = true; + if (!config.y) + config.y = 20; + if (!config.width) + config.width = 640; + if (!config.height) + config.height = 480; + if (!config.x) + config.x = config.width / 2; + if (!config.backgroundColor) + config.backgroundColor = "#555555"; + if (!config.imagesPath) { + var index = config.atlas.lastIndexOf("/"); + if (index != -1) { + config.imagesPath = config.atlas.substr(0, index) + "/"; + } + else { + config.imagesPath = ""; + } + } + if (!config.premultipliedAlpha === undefined) + config.premultipliedAlpha = false; + this._backgroundColor.setFromString(config.backgroundColor); + this._config = config; + }; + SpineWidget.prototype.load = function () { + var _this = this; + var assetManager = this._assetManager; + var imagesPath = this._config.imagesPath; + var config = this._config; + if (assetManager.isLoadingComplete()) { + if (assetManager.hasErrors()) { + if (config.error) + config.error(this, "Failed to load assets: " + JSON.stringify(assetManager.errors)); + else + throw new Error("Failed to load assets: " + JSON.stringify(assetManager.errors)); + } + var atlas = new spine.webgl.TextureAtlas(this._assetManager.get(this._config.atlas), function (path) { + return assetManager.get(imagesPath + path); + }); + var atlasLoader = new spine.webgl.TextureAtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + // Set the scale to apply during parsing, parse the file, and create a new skeleton. + skeletonJson.scale = config.scale; + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(config.json)); + var skeleton = this.skeleton = new spine.Skeleton(skeletonData); + skeleton.x = config.x; + skeleton.y = config.y; + skeleton.setSkinByName(config.skin); + var animationState = this.state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + animationState.setAnimation(0, config.animation, true); + if (config.success) + config.success(this); + this._loaded = true; + requestAnimationFrame(function () { _this.render(); }); + } + else + requestAnimationFrame(function () { _this.load(); }); + }; + SpineWidget.prototype.render = function () { + var _this = this; + var now = Date.now() / 1000; + var delta = now - this._lastFrameTime; + if (delta > 0.1) + delta = 0; + this._lastFrameTime = now; + var gl = this.gl; + var color = this._backgroundColor; + gl.clearColor(color.r, color.g, color.b, color.a); + gl.clear(gl.COLOR_BUFFER_BIT); + // Apply the animation state based on the delta time. + var state = this.state; + var skeleton = this.skeleton; + var premultipliedAlpha = this._config.premultipliedAlpha; + state.update(delta); + state.apply(skeleton); + skeleton.updateWorldTransform(); + // Bind the shader and set the texture and model-view-projection matrix. + var shader = this._shader; + shader.bind(); + shader.setUniformi(spine.webgl.Shader.SAMPLER, 0); + shader.setUniform4x4f(spine.webgl.Shader.MVP_MATRIX, this._mvp.values); + // Start the batch and tell the SkeletonRenderer to render the active skeleton. + var batcher = this._batcher; + var skeletonRenderer = this._skeletonRenderer; + batcher.begin(shader); + skeletonRenderer.premultipliedAlpha = premultipliedAlpha; + skeletonRenderer.draw(batcher, skeleton); + batcher.end(); + shader.unbind(); + if (!this._paused) + requestAnimationFrame(function () { _this.render(); }); + }; + SpineWidget.prototype.pause = function () { + this._paused = true; + }; + SpineWidget.prototype.play = function () { + var _this = this; + this._paused = false; + requestAnimationFrame(function () { _this.render(); }); + }; + SpineWidget.prototype.isPlaying = function () { + return !this._paused; + }; + SpineWidget.prototype.setAnimation = function (animationName) { + if (!this._loaded) + throw new Error("Widget isn't loaded yet"); + this.skeleton.setToSetupPose(); + this.state.setAnimation(0, animationName, this._config.loop); + }; + SpineWidget.loadWidgets = function () { + var widgets = document.getElementsByClassName("spine-widget"); + for (var i = 0; i < widgets.length; i++) { + SpineWidget.loadWidget(widgets[i]); + } + }; + SpineWidget.loadWidget = function (widget) { + var config = new SpineWidgetConfig(); + config.atlas = widget.getAttribute("data-atlas"); + config.json = widget.getAttribute("data-json"); + config.animation = widget.getAttribute("data-animation"); + if (widget.getAttribute("data-images-path")) + config.imagesPath = widget.getAttribute("data-images-path"); + if (widget.getAttribute("data-skin")) + config.skin = widget.getAttribute("data-skin"); + if (widget.getAttribute("data-loop")) + config.loop = widget.getAttribute("data-loop") === "true"; + if (widget.getAttribute("data-scale")) + config.scale = parseFloat(widget.getAttribute("data-scale")); + if (widget.getAttribute("data-x")) + config.x = parseFloat(widget.getAttribute("data-x")); + if (widget.getAttribute("data-y")) + config.x = parseFloat(widget.getAttribute("data-y")); + if (widget.getAttribute("data-width")) + config.width = parseInt(widget.getAttribute("data-width")); + if (widget.getAttribute("data-height")) + config.height = parseInt(widget.getAttribute("data-height")); + if (widget.getAttribute("data-background-color")) + config.backgroundColor = widget.getAttribute("data-background-color"); + if (widget.getAttribute("data-premultiplied-alpha")) + config.premultipliedAlpha = widget.getAttribute("data-premultiplied-alpha") === "true"; + new spine.SpineWidget(widget, config); + }; + SpineWidget.ready = function () { + if (SpineWidget.pageLoaded) + return; + SpineWidget.pageLoaded = true; + SpineWidget.loadWidgets(); + }; + SpineWidget.setupDOMListener = function () { + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", SpineWidget.ready, false); + window.addEventListener("load", SpineWidget.ready, false); + } + else { + document.attachEvent("onreadystatechange", function readyStateChange() { + if (document.readyState === "complete") + SpineWidget.ready(); + }); + window.attachEvent("onload", SpineWidget.ready); + } + }; + SpineWidget.pageLoaded = false; + return SpineWidget; + }()); + spine.SpineWidget = SpineWidget; + var SpineWidgetConfig = (function () { + function SpineWidgetConfig() { + this.skin = "default"; + this.loop = true; + this.scale = 1.0; + this.x = 0; + this.y = 0; + this.width = 640; + this.height = 480; + this.backgroundColor = "#555555"; + this.premultipliedAlpha = false; + } + return SpineWidgetConfig; + }()); + spine.SpineWidgetConfig = SpineWidgetConfig; +})(spine || (spine = {})); +spine.SpineWidget.setupDOMListener(); +//# sourceMappingURL=spine-widget.js.map \ No newline at end of file diff --git a/spine-ts/build/spine-widget.js.map b/spine-ts/build/spine-widget.js.map new file mode 100644 index 000000000..a8b68ab68 --- /dev/null +++ b/spine-ts/build/spine-widget.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spine-widget.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/BlendMode.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/AttachmentType.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/attachments/TextureRegion.ts","../webgl/src/AssetManager.ts","../webgl/src/Matrix4.ts","../webgl/src/Mesh.ts","../webgl/src/PolygonBatcher.ts","../webgl/src/Shader.ts","../webgl/src/SkeletonRenderer.ts","../webgl/src/Texture.ts","../webgl/src/TextureAtlas.ts","../webgl/src/TextureAtlasAttachmentLoader.ts","../webgl/src/Vector3.ts","../webgl/src/WebGL.ts","../widget/src/Widget.ts"],"names":[],"mappings":"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AAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAChH,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC9E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,6BAAW,GAAX;gBACC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBAC3G,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC;sBACzG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;YAChH,CAAC;YAED,2BAAS,GAAT,UAAW,CAAS,EAAE,CAAS,EAAE,CAAS;gBACzC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,CAAC,CAAC,SAAG,CAAC,IAAI,CAAC,CAAC;gBACZ,CAAC,CAAC,SAAG,CAAC,IAAI,CAAC,CAAC;gBACZ,CAAC,CAAC,SAAG,CAAC,IAAI,CAAC,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,sBAAI,GAAJ;gBACC,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YAED,4BAAU,GAAV,UAAY,IAAY,EAAE,GAAW,EAAE,IAAY,EAAE,WAAmB;gBACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC5D,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;gBACvC,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,CAAC,CAAC,SAAG,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC;gBAC5B,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC;gBACd,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC;gBACd,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,IAAI,CAAC;gBACd,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,yBAAO,GAAP,UAAS,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;gBAC3D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,uBAAK,GAAL,UAAO,IAAY,EAAE,KAAa,EAAE,MAAc,EAAE,GAAW,EAAE,IAAY,EAAE,GAAW;gBACzF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;gBAChC,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;gBAChC,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;gBAE/B,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;gBAC1C,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;gBAC1C,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;gBAEtC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,CAAC,CAAC,SAAG,CAAC,GAAG,MAAM,CAAC;gBAChB,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,MAAM,CAAC;gBAChB,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,MAAM,CAAC;gBAChB,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,CAAC,SAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,CAAC,CAAC,SAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,CAAC,CAAC,SAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED,0BAAQ,GAAR,UAAU,MAAe;gBACxB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,8BAAY,GAAZ,UAAc,MAAe;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,SAAG,CAAC,GAAG,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"} \ No newline at end of file diff --git a/spine-ts/core/src/Animation.ts b/spine-ts/core/src/Animation.ts new file mode 100644 index 000000000..8d1c2bfcf --- /dev/null +++ b/spine-ts/core/src/Animation.ts @@ -0,0 +1,816 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class Animation { + name: string; + timelines: Array; + duration: number; + + constructor (name: string, timelines: Array, duration: number) { + if (name == null) throw new Error("name cannot be null."); + if (timelines == null) throw new Error("timelines cannot be null."); + this.name = name; + this.timelines = timelines; + this.duration = duration; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array) { + if (skeleton == null) throw new Error("skeleton cannot be null."); + + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) lastTime %= this.duration; + } + + let timelines = this.timelines; + for (let i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, 1); + } + + mix (skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number) { + if (skeleton == null) throw new Error("skeleton cannot be null."); + + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) lastTime %= this.duration; + } + + let timelines = this.timelines; + for (let i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha); + } + + static binarySearch (values: ArrayLike, target: number, step: number = 1) { + let low = 0; + let high = values.length / step - 2; + if (high == 0) return step; + let current = high >>> 1; + while (true) { + if (values[(current + 1) * step] <= target) + low = current + 1; + else + high = current; + if (low == high) return (low + 1) * step; + current = (low + high) >>> 1; + } + } + + static linearSearch (values: ArrayLike, target: number, step: number) { + for (let i = 0, last = values.length - step; i <= last; i += step) + if (values[i] > target) return i; + return -1; + } + } + + export interface Timeline { + apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + + export abstract class CurveTimeline implements Timeline { + static LINEAR = 0; static STEPPED = 1; static BEZIER = 2; + static BEZIER_SIZE = 10 * 2 - 1; + + private curves: ArrayLike; // type, x, y, ... + + constructor (frameCount: number) { + if (frameCount <= 0) throw new Error("frameCount must be > 0: " + frameCount); + this.curves = Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); + } + + getFrameCount () { + return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; + } + + setLinear (frameIndex: number) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; + } + + setStepped (frameIndex: number) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; + } + + getCurveType (frameIndex: number): number { + let index = frameIndex * CurveTimeline.BEZIER_SIZE; + if (index == this.curves.length) return CurveTimeline.LINEAR; + let type = this.curves[index]; + if (type == CurveTimeline.LINEAR) return CurveTimeline.LINEAR; + if (type == CurveTimeline.STEPPED) return CurveTimeline.STEPPED; + return CurveTimeline.BEZIER; + } + + /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next. + * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of + * the difference between the keyframe's values. */ + setCurve (frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number) { + let tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; + let dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; + let ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; + let dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; + + let i = frameIndex * CurveTimeline.BEZIER_SIZE; + let curves = this.curves; + curves[i++] = CurveTimeline.BEZIER; + + let x = dfx, y = dfy; + for (let n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } + } + + getCurvePercent (frameIndex: number, percent: number) { + percent = MathUtils.clamp(percent, 0, 1); + let curves = this.curves; + let i = frameIndex * CurveTimeline.BEZIER_SIZE; + let type = curves[i]; + if (type == CurveTimeline.LINEAR) return percent; + if (type == CurveTimeline.STEPPED) return 0; + i++; + let x = 0; + for (let start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + x = curves[i]; + if (x >= percent) { + let prevX: number, prevY: number; + if (i == start) { + prevX = 0; + prevY = 0; + } else { + prevX = curves[i - 2]; + prevY = curves[i - 1]; + } + return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + let y = curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1. + } + + abstract apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number): void; + } + + export class RotateTimeline extends CurveTimeline { + static ENTRIES = 2; + static PREV_TIME = -2; static PREV_ROTATION = -1; + static ROTATION = 1; + + boneIndex: number; + frames: ArrayLike; // time, degrees, ... + + constructor (frameCount: number) { + super(frameCount); + this.frames = Utils.newFloatArray(frameCount << 1); + } + + /** Sets the time and angle of the specified keyframe. */ + setFrame (frameIndex: number, time: number, degrees: number) { + frameIndex <<= 1; + this.frames[frameIndex] = time; + this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let bone = skeleton.bones[this.boneIndex]; + + if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { // Time is after last frame. + let amount = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + bone.rotation += amount * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); + let prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent((frame >> 1) - 1, + 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); + + let amount = frames[frame + RotateTimeline.ROTATION] - prevRotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + amount = bone.data.rotation + (prevRotation + amount * percent) - bone.rotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + bone.rotation += amount * alpha; + } + } + + export class TranslateTimeline extends CurveTimeline { + static ENTRIES = 3; + static PREV_TIME = -3; static PREV_X = -2; static PREV_Y = -1; + static X = 1; static Y = 2; + + boneIndex: number; + frames: ArrayLike; // time, x, y, ... + + constructor (frameCount: number) { + super(frameCount); + this.frames = Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); + } + + /** Sets the time and value of the specified keyframe. */ + setFrame (frameIndex: number, time: number, x: number, y: number) { + frameIndex *= TranslateTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TranslateTimeline.X] = x; + this.frames[frameIndex + TranslateTimeline.Y] = y; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let bone = skeleton.bones[this.boneIndex]; + + if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { // Time is after last frame. + bone.x += (bone.data.x + frames[frames.length + TranslateTimeline.PREV_X] - bone.x) * alpha; + bone.y += (bone.data.y + frames[frames.length + TranslateTimeline.PREV_Y] - bone.y) * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); + let prevX = frames[frame + TranslateTimeline.PREV_X]; + let prevY = frames[frame + TranslateTimeline.PREV_Y]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); + + bone.x += (bone.data.x + prevX + (frames[frame + TranslateTimeline.X] - prevX) * percent - bone.x) * alpha; + bone.y += (bone.data.y + prevY + (frames[frame + TranslateTimeline.Y] - prevY) * percent - bone.y) * alpha; + } + } + + export class ScaleTimeline extends TranslateTimeline { + constructor (frameCount: number) { + super(frameCount); + } + + apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { // Time is after last frame. + bone.scaleX += (bone.data.scaleX * frames[frames.length + ScaleTimeline.PREV_X] - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * frames[frames.length + ScaleTimeline.PREV_Y] - bone.scaleY) * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); + let prevX = frames[frame + ScaleTimeline.PREV_X]; + let prevY = frames[frame + ScaleTimeline.PREV_Y]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); + + bone.scaleX += (bone.data.scaleX * (prevX + (frames[frame + ScaleTimeline.X] - prevX) * percent) - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY * (prevY + (frames[frame + ScaleTimeline.Y] - prevY) * percent) - bone.scaleY) * alpha; + } + } + + export class ShearTimeline extends TranslateTimeline { + constructor (frameCount: number) { + super(frameCount); + } + + apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let bone = skeleton.bones[this.boneIndex]; + if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { // Time is after last frame. + bone.shearX += (bone.data.shearX + frames[frames.length + ShearTimeline.PREV_X] - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + frames[frames.length + ShearTimeline.PREV_Y] - bone.shearY) * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); + let prevX = frames[frame + ShearTimeline.PREV_X]; + let prevY = frames[frame + ShearTimeline.PREV_Y]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); + + bone.shearX += (bone.data.shearX + (prevX + (frames[frame + ShearTimeline.X] - prevX) * percent) - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + (prevY + (frames[frame + ShearTimeline.Y] - prevY) * percent) - bone.shearY) * alpha; + } + } + + export class ColorTimeline extends CurveTimeline { + static ENTRIES = 5; + static PREV_TIME = -5; static PREV_R = -4; static PREV_G = -3; static PREV_B = -2; static PREV_A = -1; + static R = 1; static G = 2; static B = 3; static A = 4; + + slotIndex: number; + frames: ArrayLike; // time, r, g, b, a, ... + + constructor (frameCount: number) { + super(frameCount); + this.frames = Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); + } + + /** Sets the time and value of the specified keyframe. */ + setFrame (frameIndex: number, time: number, r: number, g: number, b: number, a: number) { + frameIndex *= ColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + ColorTimeline.R] = r; + this.frames[frameIndex + ColorTimeline.G] = g; + this.frames[frameIndex + ColorTimeline.B] = b; + this.frames[frameIndex + ColorTimeline.A] = a; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let r = 0, g = 0, b = 0, a = 0; + if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { // Time is after last frame. + let i = frames.length; + r = frames[i + ColorTimeline.PREV_R]; + g = frames[i + ColorTimeline.PREV_G]; + b = frames[i + ColorTimeline.PREV_B]; + a = frames[i + ColorTimeline.PREV_A]; + } else { + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); + r = frames[frame + ColorTimeline.PREV_R]; + g = frames[frame + ColorTimeline.PREV_G]; + b = frames[frame + ColorTimeline.PREV_B]; + a = frames[frame + ColorTimeline.PREV_A]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); + + r += (frames[frame + ColorTimeline.R] - r) * percent; + g += (frames[frame + ColorTimeline.G] - g) * percent; + b += (frames[frame + ColorTimeline.B] - b) * percent; + a += (frames[frame + ColorTimeline.A] - a) * percent; + } + let color: Color = skeleton.slots[this.slotIndex].color; + if (alpha < 1) + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + else + color.set(r, g, b, a); + } + } + + export class AttachmentTimeline implements Timeline { + slotIndex: number; + frames: ArrayLike // time, ... + attachmentNames: Array; + + constructor (frameCount: number) { + this.frames = Utils.newFloatArray(frameCount); + this.attachmentNames = new Array(frameCount); + } + + getFrameCount () { + return this.frames.length; + } + + /** Sets the time and value of the specified keyframe. */ + setFrame (frameIndex: number, time: number, attachmentName: string) { + this.frames[frameIndex] = time; + this.attachmentNames[frameIndex] = attachmentName; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let frameIndex = 0; + if (time >= frames[frames.length - 1]) // Time is after last frame. + frameIndex = frames.length - 1; + else + frameIndex = Animation.binarySearch(frames, time, 1) - 1; + + let attachmentName = this.attachmentNames[frameIndex]; + skeleton.slots[this.slotIndex] + .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + } + } + + export class EventTimeline implements Timeline { + frames: ArrayLike; // time, ... + events: Array; + + constructor (frameCount: number) { + this.frames = Utils.newFloatArray(frameCount); + this.events = new Array(frameCount); + } + + getFrameCount () { + return this.frames.length; + } + + /** Sets the time of the specified keyframe. */ + setFrame (frameIndex: number, event: Event) { + this.frames[frameIndex] = event.time; + this.events[frameIndex] = event; + } + + /** Fires events for frames > lastTime and <= time. */ + apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number) { + if (firedEvents == null) return; + let frames = this.frames; + let frameCount = this.frames.length; + + if (lastTime > time) { // Fire events after last time for looped animations. + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha); + lastTime = -1; + } else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame. + return; + if (time < frames[0]) return; // Time is before first frame. + + let frame = 0; + if (lastTime < frames[0]) + frame = 0; + else { + frame = Animation.binarySearch(frames, lastTime); + let frameTime = frames[frame]; + while (frame > 0) { // Fire multiple events with the same frame. + if (frames[frame - 1] != frameTime) break; + frame--; + } + } + for (; frame < frameCount && time >= frames[frame]; frame++) + firedEvents.push(this.events[frame]); + } + } + + export class DrawOrderTimeline implements Timeline { + frames: ArrayLike; // time, ... + drawOrders: Array>; + + constructor (frameCount: number) { + this.frames = Utils.newFloatArray(frameCount); + this.drawOrders = new Array>(frameCount); + } + + getFrameCount () { + return this.frames.length; + } + + /** Sets the time of the specified keyframe. + * @param drawOrder May be null to use bind pose draw order. */ + setFrame (frameIndex: number, time: number, drawOrder: Array) { + this.frames[frameIndex] = time; + this.drawOrders[frameIndex] = drawOrder; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let frame = 0; + if (time >= frames[frames.length - 1]) // Time is after last frame. + frame = frames.length - 1; + else + frame = Animation.binarySearch(frames, time) - 1; + + let drawOrder: Array = skeleton.drawOrder; + let slots: Array = skeleton.slots; + let drawOrderToSetupIndex = this.drawOrders[frame]; + if (drawOrderToSetupIndex == null) + Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); + else { + for (let i = 0, n = drawOrderToSetupIndex.length; i < n; i++) + drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + } + } + } + + export class DeformTimeline extends CurveTimeline { + frames: ArrayLike; // time, ... + frameVertices: Array>; + slotIndex: number; + attachment: VertexAttachment; + + constructor (frameCount: number) { + super(frameCount); + this.frames = Utils.newFloatArray(frameCount); + this.frameVertices = new Array>(frameCount); + } + + /** Sets the time of the specified keyframe. */ + setFrame (frameIndex: number, time: number, vertices: ArrayLike) { + this.frames[frameIndex] = time; + this.frameVertices[frameIndex] = vertices; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number) { + let slot: Slot = skeleton.slots[this.slotIndex]; + let slotAttachment: Attachment = slot.getAttachment(); + if (!(slotAttachment instanceof VertexAttachment) || !(slotAttachment).applyDeform(this.attachment)) return; + + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let frameVertices = this.frameVertices; + let vertexCount = frameVertices[0].length; + + let verticesArray: Array = slot.attachmentVertices; + if (verticesArray.length != vertexCount) alpha = 1; // Don't mix from uninitialized slot vertices. + let vertices: Array = Utils.setArraySize(verticesArray, vertexCount); + + if (time >= frames[frames.length - 1]) { // Time is after last frame. + let lastVertices = frameVertices[frames.length - 1]; + if (alpha < 1) { + for (let i = 0; i < vertexCount; i++) + vertices[i] += (lastVertices[i] - vertices[i]) * alpha; + } else + Utils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount); + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time); + let prevVertices = frameVertices[frame - 1]; + let nextVertices = frameVertices[frame]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); + + if (alpha < 1) { + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + vertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha; + } + } else { + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + vertices[i] = prev + (nextVertices[i] - prev) * percent; + } + } + } + } + + export class IkConstraintTimeline extends CurveTimeline { + static ENTRIES = 3; + static PREV_TIME = -3; static PREV_MIX = -2; static PREV_BEND_DIRECTION = -1; + static MIX = 1; static BEND_DIRECTION = 2; + + ikConstraintIndex: number; + frames: ArrayLike; // time, mix, bendDirection, ... + + constructor (frameCount: number) { + super(frameCount); + this.frames = Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); + } + + /** Sets the time, mix and bend direction of the specified keyframe. */ + setFrame (frameIndex: number, time: number, mix: number, bendDirection: number) { + frameIndex *= IkConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; + this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let constraint: IkConstraint = skeleton.ikConstraints[this.ikConstraintIndex]; + + if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { // Time is after last frame. + constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]); + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); + let mix = frames[frame + IkConstraintTimeline.PREV_MIX]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); + + constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; + constraint.bendDirection = Math.floor(frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]); + } + } + + export class TransformConstraintTimeline extends CurveTimeline { + static ENTRIES = 5; + static PREV_TIME = -5; static PREV_ROTATE = -4; static PREV_TRANSLATE = -3; static PREV_SCALE = -2; static PREV_SHEAR = -1; + static ROTATE = 1; static TRANSLATE = 2; static SCALE = 3; static SHEAR = 4; + + transformConstraintIndex: number; + frames: ArrayLike; // time, rotate mix, translate mix, scale mix, shear mix, ... + + constructor (frameCount: number) { + super(frameCount); + this.frames = Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); + } + + /** Sets the time and mixes of the specified keyframe. */ + setFrame (frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number) { + frameIndex *= TransformConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; + this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; + this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let constraint: TransformConstraint = skeleton.transformConstraints[this.transformConstraintIndex]; + + if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { // Time is after last frame. + let i = frames.length; + constraint.rotateMix += (frames[i + TransformConstraintTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + TransformConstraintTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + constraint.scaleMix += (frames[i + TransformConstraintTimeline.PREV_SCALE] - constraint.scaleMix) * alpha; + constraint.shearMix += (frames[i + TransformConstraintTimeline.PREV_SHEAR] - constraint.shearMix) * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); + + let rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; + let translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; + let scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; + let shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; + constraint.rotateMix += (rotate + (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + constraint.scaleMix += (scale + (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent - constraint.scaleMix) * alpha; + constraint.shearMix += (shear + (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent - constraint.shearMix) * alpha; + } + } + + export class PathConstraintPositionTimeline extends CurveTimeline { + static ENTRIES = 2; + static PREV_TIME = -2; static PREV_VALUE = -1; + static VALUE = 1; + + pathConstraintIndex: number; + + frames: ArrayLike; // time, position, ... + + constructor (frameCount: number) { + super(frameCount); + this.frames = Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); + } + + /** Sets the time and value of the specified keyframe. */ + setFrame (frameIndex: number, time: number, value: number) { + frameIndex *= PathConstraintPositionTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex]; + + if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) { // Time is after last frame. + let i = frames.length; + constraint.position += (frames[i + PathConstraintPositionTimeline.PREV_VALUE] - constraint.position) * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); + let position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); + + constraint.position += (position + (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent - constraint.position) * alpha; + } + } + + export class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor (frameCount: number) { + super(frameCount); + } + + apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex]; + + if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) { // Time is after last frame. + let i = frames.length; + constraint.spacing += (frames[i + PathConstraintSpacingTimeline.PREV_VALUE] - constraint.spacing) * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); + let spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); + + constraint.spacing += (spacing + (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent - constraint.spacing) * alpha; + } + } + + export class PathConstraintMixTimeline extends CurveTimeline { + static ENTRIES = 3; + static PREV_TIME = -3; static PREV_ROTATE = -2; static PREV_TRANSLATE = -1; + static ROTATE = 1; static TRANSLATE = 2; + + pathConstraintIndex: number; + + frames: ArrayLike; // time, rotate mix, translate mix, ... + + constructor (frameCount: number) { + super(frameCount); + this.frames = Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); + } + + /** Sets the time and mixes of the specified keyframe. */ + setFrame (frameIndex: number, time: number, rotateMix: number, translateMix: number) { + frameIndex *= PathConstraintMixTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; + } + + apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number) { + let frames = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + let constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex]; + + if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { // Time is after last frame. + let i = frames.length; + constraint.rotateMix += (frames[i + PathConstraintMixTimeline.PREV_ROTATE] - constraint.rotateMix) * alpha; + constraint.translateMix += (frames[i + PathConstraintMixTimeline.PREV_TRANSLATE] - constraint.translateMix) * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + let frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); + let rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; + let translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, + 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); + + constraint.rotateMix += (rotate + (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent - constraint.rotateMix) * alpha; + constraint.translateMix += (translate + (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent - constraint.translateMix) + * alpha; + } + } +} diff --git a/spine-ts/core/src/AnimationState.ts b/spine-ts/core/src/AnimationState.ts new file mode 100644 index 000000000..351c80ed9 --- /dev/null +++ b/spine-ts/core/src/AnimationState.ts @@ -0,0 +1,321 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class AnimationState { + data: AnimationStateData; + tracks = new Array(); + events = new Array(); + listeners = new Array(); + timeScale = 1; + + constructor (data: AnimationStateData = null) { + if (data == null) throw new Error("data cannot be null."); + this.data = data; + } + + update (delta: number) { + delta *= this.timeScale; + for (let i = 0; i < this.tracks.length; i++) { + let current = this.tracks[i]; + if (current == null) continue; + + let next = current.next; + if (next != null) { + let nextTime = current.lastTime - next.delay; + if (nextTime >= 0) { + let nextDelta = delta * next.timeScale; + next.time = nextTime + nextDelta; // For start event to see correct time. + current.time += delta * current.timeScale; // For end event to see correct time. + this.setCurrent(i, next); + next.time -= nextDelta; // Prevent increasing time twice, below. + current = next; + } + } else if (!current.loop && current.lastTime >= current.endTime) { + // End non-looping animation when it reaches its end time and there is no next entry. + this.clearTrack(i); + continue; + } + + current.time += delta * current.timeScale; + if (current.previous != null) { + let previousDelta = delta * current.previous.timeScale; + current.previous.time += previousDelta; + current.mixTime += previousDelta; + } + } + } + + apply (skeleton: Skeleton) { + let events = this.events; + let listenerCount = this.listeners.length; + + for (let i = 0; i < this.tracks.length; i++) { + let current = this.tracks[i]; + if (current == null) continue; + + events.length = 0; + + let time = current.time; + let lastTime = current.lastTime; + let endTime = current.endTime; + let loop = current.loop; + if (!loop && time > endTime) time = endTime; + + let previous = current.previous; + if (previous == null) + current.animation.mix(skeleton, lastTime, time, loop, events, current.mix); + else { + let previousTime = previous.time; + if (!previous.loop && previousTime > previous.endTime) previousTime = previous.endTime; + previous.animation.apply(skeleton, previousTime, previousTime, previous.loop, null); + + let alpha = current.mixTime / current.mixDuration * current.mix; + if (alpha >= 1) { + alpha = 1; + current.previous = null; + } + current.animation.mix(skeleton, lastTime, time, loop, events, alpha); + } + + for (let ii = 0, nn = events.length; ii < nn; ii++) { + let event = events[ii]; + if (current.listener != null) current.listener.event(i, event); + for (let iii = 0; iii < listenerCount; iii++) + this.listeners[iii].event(i, event); + } + + // Check if completed the animation or a loop iteration. + if (loop ? (lastTime % endTime > time % endTime) : (lastTime < endTime && time >= endTime)) { + let count = MathUtils.toInt(time / endTime); + if (current.listener != null) current.listener.complete(i, count); + for (let ii = 0, nn = this.listeners.length; ii < nn; ii++) + this.listeners[ii].complete(i, count); + } + + current.lastTime = current.time; + } + } + + clearTracks () { + for (let i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + } + + clearTrack (trackIndex: number) { + if (trackIndex >= this.tracks.length) return; + let current = this.tracks[trackIndex]; + if (current == null) return; + + if (current.listener != null) current.listener.end(trackIndex); + for (let i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(trackIndex); + + this.tracks[trackIndex] = null; + + this.freeAll(current); + } + + freeAll (entry: TrackEntry) { + while (entry != null) { + let next = entry.next; + entry = next; + } + } + + expandToIndex (index: number) { + if (index < this.tracks.length) return this.tracks[index]; + Utils.setArraySize(this.tracks, index - this.tracks.length + 1, null); + this.tracks.length = index + 1; + return null; + } + + setCurrent (index: number, entry: TrackEntry) { + let current = this.expandToIndex(index); + if (current != null) { + let previous = current.previous; + current.previous = null; + + if (current.listener != null) current.listener.end(index); + for (let i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].end(index); + + entry.mixDuration = this.data.getMix(current.animation, entry.animation); + if (entry.mixDuration > 0) { + entry.mixTime = 0; + // If a mix is in progress, mix from the closest animation. + if (previous != null && current.mixTime / current.mixDuration < 0.5) { + entry.previous = previous; + previous = current; + } else + entry.previous = current; + } + } + + this.tracks[index] = entry; + + if (entry.listener != null) entry.listener.start(index); + for (let i = 0, n = this.listeners.length; i < n; i++) + this.listeners[i].start(index); + } + + /** @see #setAnimation(int, Animation, boolean) */ + setAnimation (trackIndex: number, animationName: string, loop: boolean) { + let animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + } + + /** Set the current animation. Any queued animations are cleared. */ + setAnimationWith (trackIndex: number, animation: Animation, loop: boolean) { + let current = this.expandToIndex(trackIndex); + if (current != null) this.freeAll(current.next); + + let entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + this.setCurrent(trackIndex, entry); + return entry; + } + + /** {@link #addAnimation(int, Animation, boolean, float)} */ + addAnimation (trackIndex: number, animationName: string, loop: boolean, delay: number) { + let animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + } + + /** Adds an animation to be played delay seconds after the current or last queued animation. + * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */ + addAnimationWith (trackIndex: number, animation: Animation, loop: boolean, delay: number) { + let entry = new TrackEntry(); + entry.animation = animation; + entry.loop = loop; + entry.endTime = animation.duration; + + let last = this.expandToIndex(trackIndex); + if (last != null) { + while (last.next != null) + last = last.next; + last.next = entry; + } else + this.tracks[trackIndex] = entry; + + if (delay <= 0) { + if (last != null) + delay += last.endTime - this.data.getMix(last.animation, animation); + else + delay = 0; + } + entry.delay = delay; + + return entry; + } + + /** @return May be null. */ + getCurrent (trackIndex: number) { + if (trackIndex >= this.tracks.length) return null; + return this.tracks[trackIndex]; + } + + /** Adds a listener to receive events for all animations. */ + addListener (listener: AnimationStateListener) { + if (listener == null) throw new Error("listener cannot be null."); + this.listeners.push(listener); + } + + /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */ + removeListener (listener: AnimationStateListener) { + let index = this.listeners.indexOf(listener); + if (index >= 0) this.listeners.splice(index, 1); + } + + clearListeners () { + this.listeners.length = 0; + } + } + + export class TrackEntry { + next: TrackEntry; previous: TrackEntry; + animation: Animation; + loop = false; + delay = 0; time = 0; lastTime = -1; endTime = 0; timeScale = 1; + mixTime = 0; mixDuration = 0; + listener: AnimationStateListener; + mix = 1; + + reset () { + this.next = null; + this.previous = null; + this.animation = null; + this.listener = null; + this.timeScale = 1; + this.lastTime = -1; // Trigger events on frame zero. + this.time = 0; + } + + /** Returns true if the current time is greater than the end time, regardless of looping. */ + isComplete () : boolean { + return this.time >= this.endTime; + } + } + + export abstract class AnimationStateAdapter implements AnimationStateListener { + event (trackIndex: number, event: Event) { + } + + complete (trackIndex: number, loopCount: number) { + } + + start (trackIndex: number) { + } + + end (trackIndex: number) { + } + } + + export interface AnimationStateListener { + /** Invoked when the current animation triggers an event. */ + event (trackIndex: number, event: Event): void; + + /** Invoked when the current animation has completed. + * @param loopCount The number of times the animation reached the end. */ + complete (trackIndex: number, loopCount: number): void; + + /** Invoked just after the current animation is set. */ + start (trackIndex: number): void; + + /** Invoked just before the current animation is replaced. */ + end (trackIndex: number): void; + } +} diff --git a/spine-ts/core/src/AnimationStateData.ts b/spine-ts/core/src/AnimationStateData.ts new file mode 100644 index 000000000..632d59b82 --- /dev/null +++ b/spine-ts/core/src/AnimationStateData.ts @@ -0,0 +1,64 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class AnimationStateData { + skeletonData: SkeletonData; + animationToMixTime: Map = { }; + defaultMix = 0; + + constructor (skeletonData: SkeletonData) { + if (skeletonData == null) throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + + setMix (fromName: string, toName: string, duration: number) { + let from = this.skeletonData.findAnimation(fromName); + if (from == null) throw new Error("Animation not found: " + fromName); + let to = this.skeletonData.findAnimation(toName); + if (to == null) throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + } + + setMixWith (from: Animation, to: Animation, duration: number) { + if (from == null) throw new Error("from cannot be null."); + if (to == null) throw new Error("to cannot be null."); + let key = from.name + to.name; + this.animationToMixTime[key] = duration; + } + + getMix (from: Animation, to: Animation) { + let key = from.name + to.name; + let value = this.animationToMixTime[key]; + return value === undefined ? this.defaultMix : value; + } + } +} diff --git a/spine-ts/core/src/BlendMode.ts b/spine-ts/core/src/BlendMode.ts new file mode 100644 index 000000000..a1ce7ae92 --- /dev/null +++ b/spine-ts/core/src/BlendMode.ts @@ -0,0 +1,39 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export enum BlendMode { + Normal, + Additive, + Multiply, + Screen + } +} diff --git a/spine-ts/core/src/Bone.ts b/spine-ts/core/src/Bone.ts new file mode 100644 index 000000000..1b935a9b7 --- /dev/null +++ b/spine-ts/core/src/Bone.ts @@ -0,0 +1,293 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class Bone implements Updatable { + data: BoneData; + skeleton: Skeleton; + parent: Bone; + children = new Array(); + x = 0; y = 0; rotation = 0; scaleX = 0; scaleY = 0; shearX = 0; shearY = 0; + appliedRotation = 0; + + a = 0; b = 0; worldX = 0; + c = 0; d = 0; worldY = 0; + worldSignX = 0; worldSignY = 0; + + sorted = false; + + /** @param parent May be null. */ + constructor (data: BoneData, skeleton: Skeleton, parent: Bone) { + if (data == null) throw new Error("data cannot be null."); + if (skeleton == null) throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + + /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */ + update () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + } + + /** Computes the world transform using the parent bone and this bone's local transform. */ + updateWorldTransform () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + } + + /** Computes the world transform using the parent bone and the specified local transform. */ + updateWorldTransformWith (x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number) { + this.appliedRotation = rotation; + + let rotationY = rotation + 90 + shearY; + let la = MathUtils.cosDeg(rotation + shearX) * scaleX, lb = MathUtils.cosDeg(rotationY) * scaleY; + let lc = MathUtils.sinDeg(rotation + shearX) * scaleX, ld = MathUtils.sinDeg(rotationY) * scaleY; + + let parent = this.parent; + if (parent == null) { // Root bone. + let skeleton = this.skeleton; + if (skeleton.flipX) { + x = -x; + la = -la; + lb = -lb; + } + if (skeleton.flipY) { + y = -y; + lc = -lc; + ld = -ld; + } + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + this.worldX = x; + this.worldY = y; + this.worldSignX = MathUtils.signum(scaleX); + this.worldSignY = MathUtils.signum(scaleY); + return; + } + + let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + this.worldSignX = parent.worldSignX * MathUtils.signum(scaleX); + this.worldSignY = parent.worldSignY * MathUtils.signum(scaleY); + + if (this.data.inheritRotation && this.data.inheritScale) { + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } else { + if (this.data.inheritRotation) { // No scale inheritance. + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + let cos = MathUtils.cosDeg(parent.appliedRotation), sin = MathUtils.sinDeg(parent.appliedRotation); + let temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + + if (!parent.data.inheritRotation) break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } else if (this.data.inheritScale) { // No rotation inheritance. + pa = 1; + pb = 0; + pc = 0; + pd = 1; + do { + let cos = MathUtils.cosDeg(parent.appliedRotation), sin = MathUtils.sinDeg(parent.appliedRotation); + let psx = parent.scaleX, psy = parent.scaleY; + let za = cos * psx, zb = sin * psy, zc = sin * psx, zd = cos * psy; + let temp = pa * za + pb * zc; + pb = pb * zd - pa * zb; + pa = temp; + temp = pc * za + pd * zc; + pd = pd * zd - pc * zb; + pc = temp; + + if (psx >= 0) sin = -sin; + temp = pa * cos + pb * sin; + pb = pb * cos - pa * sin; + pa = temp; + temp = pc * cos + pd * sin; + pd = pd * cos - pc * sin; + pc = temp; + + if (!parent.data.inheritScale) break; + parent = parent.parent; + } while (parent != null); + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } else { + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + } + if (this.skeleton.flipX) { + this.a = -this.a; + this.b = -this.b; + } + if (this.skeleton.flipY) { + this.c = -this.c; + this.d = -this.d; + } + } + } + + setToSetupPose () { + let data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + } + + getWorldRotationX () { + return Math.atan2(this.c, this.a) * MathUtils.radDeg; + } + + getWorldRotationY () { + return Math.atan2(this.d, this.b) * MathUtils.radDeg; + } + + getWorldScaleX () { + return Math.sqrt(this.a * this.a + this.b * this.b) * this.worldSignX; + } + + getWorldScaleY () { + return Math.sqrt(this.c * this.c + this.d * this.d) * this.worldSignY; + } + + worldToLocalRotationX () { + let parent = this.parent; + if (parent == null) return this.rotation; + let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, a = this.a, c = this.c; + return Math.atan2(pa * c - pc * a, pd * a - pb * c) * MathUtils.radDeg; + } + + worldToLocalRotationY () { + let parent = this.parent; + if (parent == null) return this.rotation; + let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d, b = this.b, d = this.d; + return Math.atan2(pa * d - pc * b, pd * b - pb * d) * MathUtils.radDeg; + } + + rotateWorld (degrees: number) { + let a = this.a, b = this.b, c = this.c, d = this.d; + let cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + } + + /** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ + updateLocalTransform () { + let parent = this.parent; + if (parent == null) { + this.x = this.worldX; + this.y = this.worldY; + this.rotation = Math.atan2(this.c, this.a) * MathUtils.radDeg; + this.scaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.scaleY = Math.sqrt(this.b * this.b + this.d * this.d); + let det = this.a * this.d - this.b * this.c; + this.shearX = 0; + this.shearY = Math.atan2(this.a * this.b + this.c * this.d, det) * MathUtils.radDeg; + return; + } + let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + let pid = 1 / (pa * pd - pb * pc); + let dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.x = (dx * pd * pid - dy * pb * pid); + this.y = (dy * pa * pid - dx * pc * pid); + let ia = pid * pd; + let id = pid * pa; + let ib = pid * pb; + let ic = pid * pc; + let ra = ia * this.a - ib * this.c; + let rb = ia * this.b - ib * this.d; + let rc = id * this.c - ic * this.a; + let rd = id * this.d - ic * this.b; + this.shearX = 0; + this.scaleX = Math.sqrt(ra * ra + rc * rc); + if (this.scaleX > 0.0001) { + let det = ra * rd - rb * rc; + this.scaleY = det / this.scaleX; + this.shearY = Math.atan2(ra * rb + rc * rd, det) * MathUtils.radDeg; + this.rotation = Math.atan2(rc, ra) * MathUtils.radDeg; + } else { + this.scaleX = 0; + this.scaleY = Math.sqrt(rb * rb + rd * rd); + this.shearY = 0; + this.rotation = 90 - Math.atan2(rd, rb) * MathUtils.radDeg; + } + this.appliedRotation = this.rotation; + } + + worldToLocal (world: Vector2) { + let a = this.a, b = this.b, c = this.c, d = this.d; + let invDet = 1 / (a * d - b * c); + let x = world.x - this.worldX, y = world.y - this.worldY; + world.x = (x * d * invDet - y * b * invDet); + world.y = (y * a * invDet - x * c * invDet); + return world; + } + + localToWorld (local: Vector2) { + let x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + } + } +} diff --git a/spine-ts/core/src/BoneData.ts b/spine-ts/core/src/BoneData.ts new file mode 100644 index 000000000..84a9d9483 --- /dev/null +++ b/spine-ts/core/src/BoneData.ts @@ -0,0 +1,49 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class BoneData { + index: number; + name: string; + parent: BoneData; + length: number; + x = 0; y = 0; rotation = 0; scaleX = 1; scaleY = 1; shearX = 0; shearY = 0; + inheritRotation = true; inheritScale = true; + + constructor (index: number, name: string, parent: BoneData) { + if (index < 0) throw new Error("index must be >= 0."); + if (name == null) throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + } +} diff --git a/spine-ts/core/src/Event.ts b/spine-ts/core/src/Event.ts new file mode 100644 index 000000000..445e03989 --- /dev/null +++ b/spine-ts/core/src/Event.ts @@ -0,0 +1,46 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + + constructor (time: number, data: EventData) { + if (data == null) throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + } +} diff --git a/spine-ts/core/src/EventData.ts b/spine-ts/core/src/EventData.ts new file mode 100644 index 000000000..fd8cbcc5d --- /dev/null +++ b/spine-ts/core/src/EventData.ts @@ -0,0 +1,43 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + + constructor (name: string) { + this.name = name; + } + } +} diff --git a/spine-ts/core/src/IkConstraint.ts b/spine-ts/core/src/IkConstraint.ts new file mode 100644 index 000000000..3c5a9fa8d --- /dev/null +++ b/spine-ts/core/src/IkConstraint.ts @@ -0,0 +1,223 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class IkConstraint implements Updatable { + data: IkConstraintData; + bones: Array; + target: Bone; + mix = 1; + bendDirection = 0; + + level = 0; + + constructor (data: IkConstraintData, skeleton: Skeleton) { + if (data == null) throw new Error("data cannot be null."); + if (skeleton == null) throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.bendDirection = data.bendDirection; + + this.bones = new Array(); + for (let i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + + apply () { + this.update(); + } + + update () { + let target = this.target; + let bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.mix); + break; + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix); + break; + } + } + + /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world + * coordinate system. */ + apply1 (bone: Bone, targetX: number, targetY: number, alpha: number) { + let pp = bone.parent; + let id = 1 / (pp.a * pp.d - pp.b * pp.c); + let x = targetX - pp.worldX, y = targetY - pp.worldY; + let tx = (x * pp.d - y * pp.b) * id - bone.x, ty = (y * pp.a - x * pp.c) * id - bone.y; + let rotationIK = Math.atan2(ty, tx) * MathUtils.radDeg - bone.shearX - bone.rotation; + if (bone.scaleX < 0) rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK < -180) rotationIK += 360; + bone.updateWorldTransformWith(bone.x, bone.y, bone.rotation + rotationIK * alpha, bone.scaleX, bone.scaleY, bone.shearX, + bone.shearY); + } + + /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The + * target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + apply2 (parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number) { + if (alpha == 0) { + child.updateWorldTransform(); + return; + } + let px = parent.x, py = parent.y, psx = parent.scaleX, psy = parent.scaleY, csx = child.scaleX; + let os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } else + os2 = 0; + let cx = child.x, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + let u = Math.abs(psx - psy) <= 0.0001; + if (!u) { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } else { + cy = child.y; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } + let pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + let id = 1 / (a * d - b * c), x = targetX - pp.worldX, y = targetY - pp.worldY; + let tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + x = cwx - pp.worldX; + y = cwy - pp.worldY; + let dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + let l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0; + outer: + if (u) { + l2 *= psx; + let cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) + cos = -1; + else if (cos > 1) cos = 1; + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } else { + a = psx * l2; + b = psy * l2; + let aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + let c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + let q = Math.sqrt(d); + if (c1 < 0) q = -q; + q = -(c1 + q) / 2; + let r0 = q / c2, r1 = c / q; + let r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + let minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; + let maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; + x = l1 + a; + d = x * x; + if (d > maxDist) { + maxAngle = 0; + maxDist = d; + maxX = x; + } + x = l1 - a; + d = x * x; + if (d < minDist) { + minAngle = MathUtils.PI; + minDist = d; + minX = x; + } + let angle = Math.acos(-a * l1 / (aa - bb)); + x = a * Math.cos(angle) + l1; + y = b * Math.sin(angle); + d = x * x + y * y; + if (d < minDist) { + minAngle = angle; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = angle; + maxDist = d; + maxX = x; + maxY = y; + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + let os = Math.atan2(cy, cx) * s2; + let rotation = parent.rotation; + a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 < -180) a1 += 360; + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.scaleX, parent.scaleY, 0, 0); + rotation = child.rotation; + a2 = ((a2 + os) * MathUtils.radDeg - child.shearX) * s2 + os2 - rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 < -180) a2 += 360; + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.scaleX, child.scaleY, child.shearX, child.shearY); + } + } +} diff --git a/spine-ts/core/src/IkConstraintData.ts b/spine-ts/core/src/IkConstraintData.ts new file mode 100644 index 000000000..de3ea18a9 --- /dev/null +++ b/spine-ts/core/src/IkConstraintData.ts @@ -0,0 +1,44 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class IkConstraintData { + name: string; + bones = new Array(); + target: BoneData; + bendDirection = 1; + mix = 1; + + constructor (name: string) { + this.name = name; + } + } +} diff --git a/spine-ts/core/src/PathConstraint.ts b/spine-ts/core/src/PathConstraint.ts new file mode 100644 index 000000000..632cf60f6 --- /dev/null +++ b/spine-ts/core/src/PathConstraint.ts @@ -0,0 +1,388 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class PathConstraint implements Updatable { + static NONE = -1; static BEFORE = -2; static AFTER = -3; + + data: PathConstraintData; + bones: Array; + target: Slot; + position = 0; spacing = 0; rotateMix = 0; translateMix = 0; + + spaces = new Array(); positions = new Array(); + world = new Array(); curves = new Array(); lengths = new Array(); + segments = new Array(); + + constructor (data: PathConstraintData, skeleton: Skeleton) { + if (data == null) throw new Error("data cannot be null."); + if (skeleton == null) throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (let i = 0, n = data.bones.length; i < n; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + } + + apply () { + this.update(); + } + + update () { + let attachment = this.target.getAttachment(); + if (!(attachment instanceof PathAttachment)) return; + + let rotateMix = this.rotateMix, translateMix = this.translateMix; + let translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) return; + + let data = this.data; + let spacingMode = data.spacingMode; + let lengthSpacing = spacingMode == SpacingMode.Length; + let rotateMode = data.rotateMode; + let tangents = rotateMode == RotateMode.Tangent, scale = rotateMode == RotateMode.ChainScale; + let boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + let bones = this.bones; + let spaces = Utils.setArraySize(this.spaces, spacesCount), lengths: Array = null; + let spacing = this.spacing; + if (scale || lengthSpacing) { + if (scale) lengths = Utils.setArraySize(this.lengths, boneCount); + for (let i = 0, n = spacesCount - 1; i < n;) { + let bone = bones[i]; + let length = bone.data.length, x = length * bone.a, y = length * bone.c; + length = Math.sqrt(x * x + y * y); + if (scale) lengths[i] = length; + spaces[++i] = lengthSpacing ? Math.max(0, length + spacing) : spacing; + } + } else { + for (let i = 1; i < spacesCount; i++) + spaces[i] = spacing; + } + + let positions = this.computeWorldPositions(attachment, spacesCount, tangents, + data.positionMode == PositionMode.Percent, spacingMode == SpacingMode.Percent); + let skeleton = this.target.bone.skeleton; + let skeletonX = skeleton.x, skeletonY = skeleton.y; + let boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + let tip = rotateMode == RotateMode.Chain && offsetRotation == 0; + for (let i = 0, p = 3; i < boneCount; i++, p += 3) { + let bone = bones[i]; + bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; + bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; + let x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + let length = lengths[i]; + if (length != 0) { + let s = (Math.sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + let a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a) - offsetRotation * MathUtils.degRad; + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + let length = bone.data.length; + boneX += (length * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length * (sin * a + cos * c) - dy) * rotateMix; + } + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) // + r += MathUtils.PI2; + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + } + } + + computeWorldPositions (path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, + percentSpacing: boolean) { + let target = this.target; + let position = this.position; + let spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world: Array = null; + let closed = path.closed; + let verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + + if (!path.constantSpeed) { + let lengths = path.lengths; + curveCount -= closed ? 1 : 2; + let pathLength = lengths[curveCount]; + if (percentPosition) position *= pathLength; + if (percentSpacing) { + for (let i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + world = Utils.setArraySize(this.world, 8); + for (let i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + let space = spaces[i]; + position += space; + let p = position; + + if (closed) { + p %= pathLength; + if (p < 0) p += pathLength; + curve = 0; + } else if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVerticesWith(target, 2, 4, world, 0); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } else if (p > pathLength) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVerticesWith(target, verticesLength - 6, 4, world, 0); + } + this.addAfterPosition(p - pathLength, world, 0, out, o); + continue; + } + + // Determine curve containing position. + for (;; curve++) { + let length = lengths[curve]; + if (p > length) continue; + if (curve == 0) + p /= length; + else { + let prev = lengths[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVerticesWith(target, verticesLength - 4, 4, world, 0); + path.computeWorldVerticesWith(target, 0, 4, world, 4); + } else + path.computeWorldVerticesWith(target, curve * 6 + 2, 8, world, 0); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, + tangents || (i > 0 && space == 0)); + } + return out; + } + + // World vertices. + if (closed) { + verticesLength += 2; + world = Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength - 4, world, 0); + path.computeWorldVerticesWith(target, 0, 2, world, verticesLength - 4); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } else { + curveCount--; + verticesLength -= 4; + world = Utils.setArraySize(this.world, verticesLength); + path.computeWorldVerticesWith(target, 2, verticesLength, world, 0); + } + + // Curve lengths. + let curves = Utils.setArraySize(this.curves, curveCount); + let pathLength = 0; + let x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + let tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (let i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) position *= pathLength; + if (percentSpacing) { + for (let i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + + let segments = this.segments; + let curveLength = 0; + for (let i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + let space = spaces[i]; + position += space; + let p = position; + + if (closed) { + p %= pathLength; + if (p < 0) p += pathLength; + curve = 0; + } else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + + // Determine curve containing position. + for (;; curve++) { + let length = curves[curve]; + if (p > length) continue; + if (curve == 0) + p /= length; + else { + let prev = curves[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + + // Curve segment lengths. + if (curve != prevCurve) { + prevCurve = curve; + let ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + + // Weight by segment length. + p *= curveLength; + for (;; segment++) { + let length = segments[segment]; + if (p > length) continue; + if (segment == 0) + p /= length; + else { + let prev = segments[segment - 1]; + p = segment + (p - prev) / (length - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + + addBeforePosition (p: number, temp: Array, i: number, out: Array, o: number) { + let x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + } + + addAfterPosition (p: number, temp: Array, i: number, out: Array, o: number) { + let x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + } + + addCurvePosition (p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, + out: Array, o: number, tangents: boolean) { + if (p == 0) p = 0.0001; + let tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + let ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + let x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + } + } +} diff --git a/spine-ts/core/src/PathConstraintData.ts b/spine-ts/core/src/PathConstraintData.ts new file mode 100644 index 000000000..77ba38bbd --- /dev/null +++ b/spine-ts/core/src/PathConstraintData.ts @@ -0,0 +1,59 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class PathConstraintData { + name: string; + bones = new Array(); + target: SlotData; + positionMode: PositionMode; + spacingMode: SpacingMode; + rotateMode: RotateMode; + offsetRotation: number; + position: number; spacing: number; rotateMix: number; translateMix: number; + + constructor (name: string) { + this.name = name; + } + } + + export enum PositionMode { + Fixed, Percent + } + + export enum SpacingMode { + Length, Fixed, Percent + } + + export enum RotateMode { + Tangent, Chain, ChainScale + } +} diff --git a/spine-ts/core/src/Skeleton.ts b/spine-ts/core/src/Skeleton.ts new file mode 100644 index 000000000..1d4f65a4e --- /dev/null +++ b/spine-ts/core/src/Skeleton.ts @@ -0,0 +1,469 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class Skeleton { + data: SkeletonData; + bones: Array; + slots: Array; + drawOrder: Array; + ikConstraints: Array; ikConstraintsSorted: Array; + transformConstraints: Array; + pathConstraints: Array; + _updateCache = new Array(); + skin: Skin; + color: Color; + time = 0; + flipX = false; flipY = false; + x = 0; y = 0; + + constructor (data: SkeletonData) { + if (data == null) throw new Error("data cannot be null."); + this.data = data; + + this.bones = new Array(); + for (let i = 0; i < data.bones.length; i++) { + let boneData = data.bones[i]; + let bone: Bone; + if (boneData.parent == null) + bone = new Bone(boneData, this, null); + else { + let parent = this.bones[boneData.parent.index]; + bone = new Bone(boneData, this, parent); + parent.children.push(bone); + } + this.bones.push(bone); + } + + this.slots = new Array(); + this.drawOrder = new Array(); + for (let i = 0; i < data.slots.length; i++) { + let slotData = data.slots[i]; + let bone = this.bones[slotData.boneData.index]; + let slot = new Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + + this.ikConstraints = new Array(); + this.ikConstraintsSorted = new Array(); + for (let i = 0; i < data.ikConstraints.length; i++) { + let ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new IkConstraint(ikConstraintData, this)); + } + + this.transformConstraints = new Array(); + for (let i = 0; i < data.transformConstraints.length; i++) { + let transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new TransformConstraint(transformConstraintData, this)); + } + + this.pathConstraints = new Array(); + for (let i = 0; i < data.pathConstraints.length; i++) { + let pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new PathConstraint(pathConstraintData, this)); + } + + this.color = new Color(1, 1, 1, 1); + this.updateCache(); + } + + updateCache () { + let updateCache = this._updateCache; + updateCache.length = 0; + + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + bones[i].sorted = false; + + // IK first, lowest hierarchy depth first. + let ikConstraints = this.ikConstraintsSorted; + ikConstraints.length = 0; + for (let i = 0; i < this.ikConstraints.length; i++) + ikConstraints.push(this.ikConstraints[i]); + let ikCount = ikConstraints.length; + for (let i = 0, level = 0, n = ikCount; i < n; i++) { + let ik = ikConstraints[i]; + let bone = ik.bones[0].parent; + for (level = 0; bone != null; level++) + bone = bone.parent; + ik.level = level; + } + for (let i = 1, ii = 0; i < ikCount; i++) { + let ik = ikConstraints[i]; + let level = ik.level; + for (ii = i - 1; ii >= 0; ii--) { + let other = ikConstraints[ii]; + if (other.level < level) break; + ikConstraints[ii + 1] = other; + } + ikConstraints[ii + 1] = ik; + } + for (let i = 0, n = ikConstraints.length; i < n; i++) { + let constraint = ikConstraints[i]; + let target = constraint.target; + this.sortBone(target); + + let constrained = constraint.bones; + let parent = constrained[0]; + this.sortBone(parent); + + updateCache.push(constraint); + + this.sortReset(parent.children); + constrained[constrained.length - 1].sorted = true; + } + + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) { + let constraint = pathConstraints[i]; + + let slot = constraint.target; + let slotIndex = slot.data.index; + let slotBone = slot.bone; + if (this.skin != null) this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) + this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (let ii = 0, nn = this.data.skins.length; ii < nn; ii++) + this.sortPathConstraintAttachment(this.data.skins[ii], slotIndex, slotBone); + + let attachment = slot.getAttachment(); + if (attachment instanceof PathAttachment) this.sortPathConstraintAttachmentWith(attachment, slotBone); + + let constrained = constraint.bones; + let boneCount = constrained.length; + for (let ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + + updateCache.push(constraint); + + for (let ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (let ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + + let transformConstraints = this.transformConstraints; + for (let i = 0, n = transformConstraints.length; i < n; i++) { + let constraint = transformConstraints[i]; + + this.sortBone(constraint.target); + + let constrained = constraint.bones; + let boneCount = constrained.length; + for (let ii = 0; ii < boneCount; ii++) + this.sortBone(constrained[ii]); + + updateCache.push(constraint); + + for (let ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (let ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + + for (let i = 0, n = bones.length; i < n; i++) + this.sortBone(bones[i]); + } + + sortPathConstraintAttachment (skin: Skin, slotIndex: number, slotBone: Bone) { + let attachments = skin.attachments[slotIndex]; + if (!attachments) return; + for (let key in attachments) { + this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + } + } + + sortPathConstraintAttachmentWith (attachment: Attachment, slotBone: Bone) { + if (!(attachment instanceof PathAttachment)) return; + let pathBones = (attachment).bones; + if (pathBones == null) + this.sortBone(slotBone); + else { + let bones = this.bones; + for (let i = 0; i < pathBones.length; i++) { + let boneIndex = pathBones[i]; + this.sortBone(bones[boneIndex]); + } + } + } + + sortBone (bone: Bone) { + if (bone.sorted) return; + let parent = bone.parent; + if (parent != null) this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + } + + sortReset (bones: Array) { + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (bone.sorted) this.sortReset(bone.children); + bone.sorted = false; + } + } + + /** Updates the world transform for each bone and applies constraints. */ + updateWorldTransform () { + let updateCache = this._updateCache; + for (let i = 0, n = updateCache.length; i < n; i++) + updateCache[i].update(); + } + + /** Sets the bones, constraints, and slots to their setup pose values. */ + setToSetupPose () { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + } + + /** Sets the bones and constraints to their setup pose values. */ + setBonesToSetupPose () { + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + bones[i].setToSetupPose(); + + let ikConstraints = this.ikConstraints; + for (let i = 0, n = ikConstraints.length; i < n; i++) { + let constraint = ikConstraints[i]; + constraint.bendDirection = constraint.data.bendDirection; + constraint.mix = constraint.data.mix; + } + + let transformConstraints = this.transformConstraints; + for (let i = 0, n = transformConstraints.length; i < n; i++) { + let constraint = transformConstraints[i]; + let data = constraint.data; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + } + + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) { + let constraint = pathConstraints[i]; + let data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + } + } + + setSlotsToSetupPose () { + let slots = this.slots; + Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (let i = 0, n = slots.length; i < n; i++) + slots[i].setToSetupPose(); + } + + /** @return May return null. */ + getRootBone () { + if (this.bones.length == 0) return null; + return this.bones[0]; + } + + /** @return May be null. */ + findBone (boneName: string) { + if (boneName == null) throw new Error("boneName cannot be null."); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (bone.data.name == boneName) return bone; + } + return null; + } + + /** @return -1 if the bone was not found. */ + findBoneIndex (boneName: string) { + if (boneName == null) throw new Error("boneName cannot be null."); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name == boneName) return i; + return -1; + } + + /** @return May be null. */ + findSlot (slotName: string) { + if (slotName == null) throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (slot.data.name == slotName) return slot; + } + return null; + } + + /** @return -1 if the bone was not found. */ + findSlotIndex (slotName: string) { + if (slotName == null) throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name == slotName) return i; + return -1; + } + + /** Sets a skin by name. + * @see #setSkin(Skin) */ + setSkinByName (skinName: string) { + let skin = this.data.findSkin(skinName); + if (skin == null) throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + } + + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}. + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * @param newSkin May be null. */ + setSkin (newSkin: Skin) { + if (newSkin != null) { + if (this.skin != null) + newSkin.attachAll(this, this.skin); + else { + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + let name = slot.data.attachmentName; + if (name != null) { + let attachment: Attachment = newSkin.getAttachment(i, name); + if (attachment != null) slot.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + } + + /** @return May be null. */ + getAttachmentByName (slotName: string, attachmentName: string): Attachment { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + } + + /** @return May be null. */ + getAttachment (slotIndex: number, attachmentName: string): Attachment { + if (attachmentName == null) throw new Error("attachmentName cannot be null."); + if (this.skin != null) { + let attachment: Attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (attachment != null) return attachment; + } + if (this.data.defaultSkin != null) return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + } + + /** @param attachmentName May be null. */ + setAttachment (slotName: string, attachmentName: string) { + if (slotName == null) throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (slot.data.name == slotName) { + let attachment: Attachment = null; + if (attachmentName != null) { + attachment = this.getAttachment(i, attachmentName); + if (attachment == null) + throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + } + + /** @return May be null. */ + findIkConstraint (constraintName: string) { + if (constraintName == null) throw new Error("constraintName cannot be null."); + let ikConstraints = this.ikConstraints; + for (let i = 0, n = ikConstraints.length; i < n; i++) { + let ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) return ikConstraint; + } + return null; + } + + /** @return May be null. */ + findTransformConstraint (constraintName: string) { + if (constraintName == null) throw new Error("constraintName cannot be null."); + let transformConstraints = this.transformConstraints; + for (let i = 0, n = transformConstraints.length; i < n; i++) { + let constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) return constraint; + } + return null; + } + + /** @return May be null. */ + findPathConstraint (constraintName: string) { + if (constraintName == null) throw new Error("constraintName cannot be null."); + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) { + let constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) return constraint; + } + return null; + } + + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset The distance from the skeleton origin to the bottom left corner of the AABB. + * @param size The width and height of the AABB. */ + getBounds (offset: Vector2, size: Vector2) { + if (offset == null) throw new Error("offset cannot be null."); + if (size == null) throw new Error("size cannot be null."); + let drawOrder = this.drawOrder; + let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (let i = 0, n = drawOrder.length; i < n; i++) { + let slot = drawOrder[i]; + let vertices: ArrayLike = null; + let attachment = slot.getAttachment(); + if (attachment instanceof RegionAttachment) + vertices = (attachment).updateWorldVertices(slot, false); + else if (attachment instanceof MeshAttachment) // + vertices = (attachment).updateWorldVertices(slot, true); + if (vertices != null) { + for (let ii = 0, nn = vertices.length; ii < nn; ii += 5) { + let x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + } + + update (delta: number) { + this.time += delta; + } + } +} diff --git a/spine-ts/core/src/SkeletonBounds.ts b/spine-ts/core/src/SkeletonBounds.ts new file mode 100644 index 000000000..c9a4aa909 --- /dev/null +++ b/spine-ts/core/src/SkeletonBounds.ts @@ -0,0 +1,193 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class SkeletonBounds { + minX = 0; minY = 0; maxX = 0; maxY = 0; + boundingBoxes = new Array(); + polygons = new Array>(); + private _polygonPool = new Pool>(() => { + return Utils.newFloatArray(16); + }); + + update (skeleton: Skeleton, updateAabb: boolean) { + if (skeleton == null) throw new Error("skeleton cannot be null."); + let boundingBoxes = this.boundingBoxes; + let polygons = this.polygons; + let polygonPool = this._polygonPool; + let slots = skeleton.slots; + let slotCount = slots.length; + + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + + for (let i = 0; i < slotCount; i++) { + let slot = slots[i]; + let attachment = slot.getAttachment(); + if (attachment instanceof BoundingBoxAttachment) { + let boundingBox = attachment as BoundingBoxAttachment; + boundingBoxes.push(boundingBox); + + let polygon = polygonPool.obtain(); + if (polygon.length != boundingBox.worldVerticesLength) { + polygon = Utils.newFloatArray(boundingBox.worldVerticesLength); + } + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, polygon); + } + } + + if (updateAabb) this.aabbCompute(); + } + + aabbCompute () { + let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + let polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) { + let polygon = polygons[i]; + let vertices = polygon; + for (let ii = 0, nn = polygon.length; ii < nn; ii += 2) { + let x = vertices[ii]; + let y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + } + + /** Returns true if the axis aligned bounding box contains the point. */ + aabbContainsPoint (x: number, y: number) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + } + + /** Returns true if the axis aligned bounding box intersects the line segment. */ + aabbIntersectsSegment (x1: number, y1: number, x2: number, y2: number) { + let minX = this.minX; + let minY = this.minY; + let maxX = this.maxX; + let maxY = this.maxY; + if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) + return false; + let m = (y2 - y1) / (x2 - x1); + let y = m * (minX - x1) + y1; + if (y > minY && y < maxY) return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) return true; + let x = (minY - y1) / m + x1; + if (x > minX && x < maxX) return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) return true; + return false; + } + + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + aabbIntersectsSkeleton (bounds: SkeletonBounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + } + + /** 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. */ + containsPoint (x: number, y: number): BoundingBoxAttachment { + let polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) return this.boundingBoxes[i]; + return null; + } + + /** Returns true if the polygon contains the point. */ + containsPointPolygon (polygon: ArrayLike, x: number, y: number) { + let vertices = polygon; + let nn = polygon.length; + + let prevIndex = nn - 2; + let inside = false; + for (let ii = 0; ii < nn; ii += 2) { + let vertexY = vertices[ii + 1]; + let prevY = vertices[prevIndex + 1]; + if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { + let vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) inside = !inside; + } + prevIndex = ii; + } + return inside; + } + + /** Returns the first bounding box attachment that contains any part of 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. */ + intersectsSegment (x1: number, y1: number, x2: number, y2: number) { + let polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) return this.boundingBoxes[i]; + return null; + } + + /** Returns true if the polygon contains any part of the line segment. */ + intersectsSegmentPolygon (polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number) { + let vertices = polygon; + let nn = polygon.length; + + let width12 = x1 - x2, height12 = y1 - y2; + let det1 = x1 * y2 - y1 * x2; + let x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (let ii = 0; ii < nn; ii += 2) { + let x4 = vertices[ii], y4 = vertices[ii + 1]; + let det2 = x3 * y4 - y3 * x4; + let width34 = x3 - x4, height34 = y3 - y4; + let det3 = width12 * height34 - height12 * width34; + let x = (det1 * width34 - width12 * det2) / det3; + if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { + let y = (det1 * height34 - height12 * det2) / det3; + if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) return true; + } + x3 = x4; + y3 = y4; + } + return false; + } + + /** Returns the polygon for the specified bounding box, or null. */ + getPolygon (boundingBox: BoundingBoxAttachment) { + if (boundingBox == null) throw new Error("boundingBox cannot be null."); + let index = this.boundingBoxes.indexOf(boundingBox); + return index == -1 ? null : this.polygons[index]; + } + } + +} diff --git a/spine-ts/core/src/SkeletonData.ts b/spine-ts/core/src/SkeletonData.ts new file mode 100644 index 000000000..4eba74c75 --- /dev/null +++ b/spine-ts/core/src/SkeletonData.ts @@ -0,0 +1,151 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class SkeletonData { + name: string; + bones = new Array(); // Ordered parents first. + slots = new Array(); // Setup pose draw order. + skins = new Array(); + defaultSkin: Skin; + events = new Array(); + animations = new Array(); + ikConstraints = new Array(); + transformConstraints = new Array(); + pathConstraints = new Array(); + width: number; height: number; + version: string; hash: string; imagesPath: string; + + findBone (boneName: string) { + if (boneName == null) throw new Error("boneName cannot be null."); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (bone.name == boneName) return bone; + } + return null; + } + + findBoneIndex (boneName: string) { + if (boneName == null) throw new Error("boneName cannot be null."); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + if (bones[i].name == boneName) return i; + return -1; + } + + findSlot (slotName: string) { + if (slotName == null) throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (slot.name == slotName) return slot; + } + return null; + } + + findSlotIndex (slotName: string) { + if (slotName == null) throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) + if (slots[i].name == slotName) return i; + return -1; + } + + findSkin (skinName: string) { + if (skinName == null) throw new Error("skinName cannot be null."); + let skins = this.skins; + for (let i = 0, n = skins.length; i < n; i++) { + let skin = skins[i]; + if (skin.name == skinName) return skin; + } + return null; + } + + findEvent (eventDataName: string) { + if (eventDataName == null) throw new Error("eventDataName cannot be null."); + let events = this.events; + for (let i = 0, n = events.length; i < n; i++) { + let event = events[i]; + if (event.name == eventDataName) return event; + } + return null; + } + + findAnimation (animationName: string) { + if (animationName == null) throw new Error("animationName cannot be null."); + let animations = this.animations; + for (let i = 0, n = animations.length; i < n; i++) { + let animation = animations[i]; + if (animation.name == animationName) return animation; + } + return null; + } + + findIkConstraint (constraintName: string) { + if (constraintName == null) throw new Error("constraintName cannot be null."); + let ikConstraints = this.ikConstraints; + for (let i = 0, n = ikConstraints.length; i < n; i++) { + let constraint = ikConstraints[i]; + if (constraint.name == constraintName) return constraint; + } + return null; + } + + findTransformConstraint (constraintName: string) { + if (constraintName == null) throw new Error("constraintName cannot be null."); + let transformConstraints = this.transformConstraints; + for (let i = 0, n = transformConstraints.length; i < n; i++) { + let constraint = transformConstraints[i]; + if (constraint.name == constraintName) return constraint; + } + return null; + } + + findPathConstraint (constraintName: string) { + if (constraintName == null) throw new Error("constraintName cannot be null."); + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) { + let constraint = pathConstraints[i]; + if (constraint.name == constraintName) return constraint; + } + return null; + } + + findPathConstraintIndex (pathConstraintName: string) { + if (pathConstraintName == null) throw new Error("pathConstraintName cannot be null."); + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) + if (pathConstraints[i].name == pathConstraintName) return i; + return -1; + } + } +} diff --git a/spine-ts/core/src/SkeletonJson.ts b/spine-ts/core/src/SkeletonJson.ts new file mode 100644 index 000000000..7d1a52486 --- /dev/null +++ b/spine-ts/core/src/SkeletonJson.ts @@ -0,0 +1,715 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class SkeletonJson { + attachmentLoader: AttachmentLoader; + scale = 1; + private linkedMeshes = new Array(); + + constructor (attachmentLoader: AttachmentLoader) { + this.attachmentLoader = attachmentLoader; + } + + readSkeletonData (json: string): SkeletonData { + let scale = this.scale; + let skeletonData = new SkeletonData(); + let root = JSON.parse(json); + + // Skeleton + let skeletonMap = root.skeleton; + if (skeletonMap != null) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.imagesPath = skeletonMap.images; + } + + // Bones + if (root.bones) { + for (let i = 0; i < root.bones.length; i++) { + let boneMap = root.bones[i]; + + let parent: BoneData = null; + let parentName: string = this.getValue(boneMap, "parent", null); + if (parentName != null) { + parent = skeletonData.findBone(parentName); + if (parent == null) throw new Error("Parent bone not found: " + parentName); + } + let data = new BoneData(skeletonData.bones.length, boneMap.name, parent); + data.length = this.getValue(boneMap, "length", 0) * scale; + data.x = this.getValue(boneMap, "x", 0) * scale; + data.y = this.getValue(boneMap, "y", 0) * scale; + data.rotation = this.getValue(boneMap, "rotation", 0); + data.scaleX = this.getValue(boneMap, "scaleX", 1); + data.scaleY = this.getValue(boneMap, "scaleY", 1); + data.shearX = this.getValue(boneMap, "shearX", 0); + data.shearY = this.getValue(boneMap, "shearY", 0); + data.inheritRotation = this.getValue(boneMap, "inheritRotation", true); + data.inheritScale = this.getValue(boneMap, "inheritScale", true); + + skeletonData.bones.push(data); + } + } + + // Slots. + if (root.slots) { + for (let i = 0; i < root.slots.length; i++) { + let slotMap = root.slots[i]; + let slotName: string = slotMap.name; + let boneName: string = slotMap.bone; + let boneData = skeletonData.findBone(boneName); + if (boneData == null) throw new Error("Slot bone not found: " + boneName); + let data = new SlotData(skeletonData.slots.length, slotName, boneData); + + let color: string = slotMap.color ? slotMap.color : null; + if (color != null) data.color.setFromString(color); + + data.attachmentName = this.getValue(slotMap, "attachment", null); + data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + } + + // IK constraints + if (root.ik) { + for (let i = 0; i < root.ik.length; i++) { + let constraintMap = root.ik[i]; + let data = new IkConstraintData(constraintMap.name); + + for (let j = 0; j < constraintMap.bones.length; j++) { + let boneName = constraintMap.bones[j]; + let bone = skeletonData.findBone(boneName); + if (bone == null) throw new Error("IK bone not found: " + boneName); + data.bones.push(bone); + } + + let targetName: string = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) throw new Error("IK target bone not found: " + targetName); + + data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.mix = constraintMap.mix ? constraintMap.mix : 1; + + skeletonData.ikConstraints.push(data); + } + } + + // Transform constraints. + if (root.transform) { + for (let i = 0; i < root.transform.length; i++) { + let constraintMap = root.transform[i]; + let data = new TransformConstraintData(constraintMap.name); + + for (let j = 0; j < constraintMap.bones.length; j++) { + let boneName = constraintMap.bones[j]; + let bone = skeletonData.findBone(boneName); + if (bone == null) throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + + let targetName: string = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) throw new Error("Transform constraint target bone not found: " + targetName); + + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.offsetX = this.getValue(constraintMap, "x", 0) * scale; + data.offsetY = this.getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); + data.offsetShearY = this.getValue(constraintMap, "shearY", 0); + + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); + data.shearMix = this.getValue(constraintMap, "shearMix", 1); + + skeletonData.transformConstraints.push(data); + } + } + + // Path constraints. + if (root.path) { + for (let i = 0; i < root.path.length; i++) { + let constraintMap = root.path[i]; + let data = new PathConstraintData(constraintMap.name); + + for (let j = 0; j < constraintMap.bones.length; j++) { + let boneName = constraintMap.bones[j]; + let bone = skeletonData.findBone(boneName); + if (bone == null) throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + + let targetName: string = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + if (data.target == null) throw new Error("Path target slot not found: " + targetName); + + data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); + data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); + data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.position = this.getValue(constraintMap, "position", 0); + if (data.positionMode == PositionMode.Fixed) data.position *= scale; + data.spacing = this.getValue(constraintMap, "spacing", 0); + if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) data.spacing *= scale; + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + + skeletonData.pathConstraints.push(data); + } + } + + // Skins. + if (root.skins) { + for (let skinName in root.skins) { + let skinMap = root.skins[skinName] + let skin = new Skin(skinName); + for (let slotName in skinMap) { + let slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) throw new Error("Slot not found: " + slotName); + let slotMap = skinMap[slotName]; + for (let entryName in slotMap) { + let attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName); + if (attachment != null) skin.addAttachment(slotIndex, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name == "default") skeletonData.defaultSkin = skin; + } + } + + // Linked meshes. + for (let i = 0, n = this.linkedMeshes.length; i < n; i++) { + let linkedMesh = this.linkedMeshes[i]; + let skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (skin == null) throw new Error("Skin not found: " + linkedMesh.skin); + let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (parent == null) throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.setParentMesh( parent); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + + // Events. + if (root.events) { + for (let eventName in root.events) { + let eventMap = root.events[eventName]; + let data = new EventData(eventName); + data.intValue = this.getValue(eventMap, "int", 0); + data.floatValue = this.getValue(eventMap, "float", 0); + data.stringValue = this.getValue(eventMap, "string", null); + skeletonData.events.push(data); + } + } + + // Animations. + if (root.animations) { + for (let animationName in root.animations) { + let animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + + return skeletonData; + } + + readAttachment (map: any, skin: Skin, slotIndex: number, name: string): Attachment { + let scale = this.scale; + name = this.getValue(map, "name", name); + + let type = this.getValue(map, "type", "region"); + + switch (type) { + case "region": { + let path = this.getValue(map, "path", name); + let region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (region == null) return null; + region.path = path; + region.x = this.getValue(map, "x", 0) * scale; + region.y = this.getValue(map, "y", 0) * scale; + region.scaleX = this.getValue(map, "scaleX", 1); + region.scaleY = this.getValue(map, "scaleY", 1); + region.rotation = this.getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + + let color: string = this.getValue(map, "color", null); + if (color != null) region.color.setFromString(color); + + region.updateOffset(); + return region; + } + case "boundingbox": { + let box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (box == null) return null; + this.readVertices(map, box, map.vertexCount << 1); + return box; + } + case "mesh": + case "linkedmesh": { + let path = this.getValue(map, "path", name); + let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) return null; + mesh.path = path; + + let color = this.getValue(map, "color", null); + if (color != null) mesh.color.setFromString(color); + + let parent: string = this.getValue(map, "parent", null); + if (parent != null) { + mesh.inheritDeform = this.getValue(map, "deform", true); + this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent)); + return mesh; + } + + let uvs: Array = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + + mesh.hullLength = this.getValue(map, "hull", 0) * 2; + return mesh; + } + case "path": { + let path = this.attachmentLoader.newPathAttachment(skin, name); + if (path == null) return null; + path.closed = this.getValue(map, "closed", false); + path.constantSpeed = this.getValue(map, "constantSpeed", true); + + let vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + + let lengths: Array = Utils.newArray(vertexCount / 3, 0); + for (let i = 0; i < map.lengths.length; i++) + lengths[i++] = map.lengths[i] * scale; + path.lengths = lengths; + return path; + } + } + return null; + } + + readVertices (map: any, attachment: VertexAttachment, verticesLength: number) { + let scale = this.scale; + attachment.worldVerticesLength = verticesLength; + let vertices: Array = map.vertices; + if (verticesLength == vertices.length) { + if (scale != 1) { + for (let i = 0, n = vertices.length; i < n; i++) + vertices[i] *= scale; + } + attachment.vertices = Utils.toFloatArray(vertices); + return; + } + let weights = new Array(); + let bones = new Array(); + for (let i = 0, n = vertices.length; i < n;) { + let boneCount = vertices[i++]; + bones.push(boneCount); + for (let nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = Utils.toFloatArray(weights); + } + + readAnimation (map: any, name: string, skeletonData: SkeletonData) { + let scale = this.scale; + let timelines = new Array(); + let duration = 0; + + // Slot timelines. + if (map.slots) { + for (let slotName in map.slots) { + let slotMap = map.slots[slotName]; + let slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) throw new Error("Slot not found: " + slotName); + for (let timelineName in slotMap) { + let timelineMap = slotMap[timelineName]; + if (timelineName == "color") { + let timeline = new ColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + let color = new Color(); + color.setFromString(valueMap.color); + timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * ColorTimeline.ENTRIES]); + + } else if (timelineName = "attachment") { + let timeline = new AttachmentTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + timeline.setFrame(frameIndex++, valueMap.time, valueMap.name); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } else + throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); + } + } + } + + // Bone timelines. + if (map.bones) { + for (let boneName in map.bones) { + let boneMap = map.bones[boneName]; + let boneIndex = skeletonData.findBoneIndex(boneName); + if (boneIndex == -1) throw new Error("Bone not found: " + boneName); + for (let timelineName in boneMap) { + let timelineMap = boneMap[timelineName]; + if (timelineName === "rotate") { + let timeline = new RotateTimeline(timelineMap.length); + timeline.boneIndex = boneIndex; + + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, valueMap.angle); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * RotateTimeline.ENTRIES]); + + } else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { + let timeline: TranslateTimeline = null; + let timelineScale = 1; + if (timelineName === "scale") + timeline = new ScaleTimeline(timelineMap.length); + else if (timelineName === "shear") + timeline = new ShearTimeline(timelineMap.length); + else { + timeline = new TranslateTimeline(timelineMap.length); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + let x = this.getValue(valueMap, "x", 0), y = this.getValue(valueMap, "y", 0); + timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * TranslateTimeline.ENTRIES]); + + } else + throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); + } + } + } + + // IK constraint timelines. + if (map.ik) { + for (let constraintName in map.ik) { + let constraintMap = map.ik[constraintName]; + let constraint = skeletonData.findIkConstraint(constraintName); + let timeline = new IkConstraintTimeline(constraintMap.length); + timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); + let frameIndex = 0; + for (let i = 0; i < constraintMap.length; i++) { + let valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "mix", 1), + this.getValue(valueMap, "bendPositive", true) ? 1 : -1); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * IkConstraintTimeline.ENTRIES]); + } + } + + // Transform constraint timelines. + if (map.transform) { + for (let constraintName in map.transform) { + let constraintMap = map.transform[constraintName]; + let constraint = skeletonData.findTransformConstraint(constraintName); + let timeline = new TransformConstraintTimeline(constraintMap.length); + timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); + let frameIndex = 0; + for (let i = 0; i < constraintMap.length; i++) { + let valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), + this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, + timeline.frames[(timeline.getFrameCount() - 1) * TransformConstraintTimeline.ENTRIES]); + } + } + + // Path constraint timelines. + if (map.paths) { + for (let constraintName in map.paths) { + let constraintMap = map.paths[constraintName]; + let index = skeletonData.findPathConstraintIndex(constraintName); + if (index == -1) throw new Error("Path constraint not found: " + constraintName); + let data = skeletonData.pathConstraints[index]; + for (let timelineName in constraintMap) { + let timelineMap = constraintMap[timelineName]; + if (timelineName === "position" || timelineName === "spacing") { + let timeline: PathConstraintPositionTimeline = null; + let timelineScale = 1; + if (timelineName === "spacing") { + timeline = new PathConstraintSpacingTimeline(timelineMap.length); + if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) timelineScale = scale; + } else { + timeline = new PathConstraintPositionTimeline(timelineMap.length); + if (data.positionMode == PositionMode.Fixed) timelineScale = scale; + } + timeline.pathConstraintIndex = index; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, + timeline.frames[(timeline.getFrameCount() - 1) * PathConstraintPositionTimeline.ENTRIES]); + } else if (timelineName === "mix") { + let timeline = new PathConstraintMixTimeline(timelineMap.length); + timeline.pathConstraintIndex = index; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), + this.getValue(valueMap, "translateMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, + timeline.frames[(timeline.getFrameCount() - 1) * PathConstraintMixTimeline.ENTRIES]); + } + } + } + } + + // Deform timelines. + if (map.deform) { + for (let deformName in map.deform) { + let deformMap = map.deform[deformName]; + let skin = skeletonData.findSkin(deformName); + if (skin == null) throw new Error("Skin not found: " + deformName); + for (let slotName in deformMap) { + let slotMap = deformMap[slotName]; + let slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) throw new Error("Slot not found: " + slotMap.name); + for (let timelineName in slotMap) { + let timelineMap = slotMap[timelineName]; + let attachment = skin.getAttachment(slotIndex, timelineName); + if (attachment == null) throw new Error("Deform attachment not found: " + timelineMap.name); + let weighted = attachment.bones != null; + let vertices = attachment.vertices; + let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + + let timeline = new DeformTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + + let frameIndex = 0; + for (let j = 0; j < timelineMap.length; j++) { + let valueMap = timelineMap[j]; + let deform: ArrayLike; + let verticesValue: Array = this.getValue(valueMap, "vertices", null); + if (verticesValue == null) + deform = weighted ? Utils.newFloatArray(deformLength) : vertices; + else { + deform = Utils.newFloatArray(deformLength); + let start = this.getValue(valueMap, "offset", 0); + Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale != 1) { + for (let i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (let i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + + timeline.setFrame(frameIndex, valueMap.time, deform); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + } + } + } + + // Draw order timeline. + let drawOrderNode = map.drawOrder; + if (drawOrderNode == null) drawOrderNode = map.draworder; + if (drawOrderNode != null) { + let timeline = new DrawOrderTimeline(drawOrderNode.length); + let slotCount = skeletonData.slots.length; + let frameIndex = 0; + for (let j = 0; j < drawOrderNode.length; j++) { + let drawOrderMap = drawOrderNode[j]; + let drawOrder: Array = null; + let offsets = this.getValue(drawOrderMap, "offsets", null); + if (offsets != null) { + drawOrder = Utils.newArray(slotCount, -1); + let unchanged = Utils.newArray(slotCount - offsets.length, 0); + let originalIndex = 0, unchangedIndex = 0; + for (let i = 0; i < offsets.length; i++) { + let offsetMap = offsets[i]; + let slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + if (slotIndex == -1) throw new Error("Slot not found: " + offsetMap.slot); + // Collect unchanged items. + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + // Collect remaining unchanged items. + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. + for (let i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] == -1) drawOrder[i] = unchanged[--unchangedIndex]; + } + timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + + // Event timeline. + if (map.events) { + let timeline = new EventTimeline(map.events.length); + let frameIndex = 0; + for (let i = 0; i < map.events.length; i++) { + let eventMap = map.events[i]; + let eventData = skeletonData.findEvent(eventMap.name); + if (eventData == null) throw new Error("Event not found: " + eventMap.name); + let event = new Event(eventMap.time, eventData); + event.intValue = this.getValue(eventMap, "int", eventData.intValue); + event.floatValue = this.getValue(eventMap, "float", eventData.floatValue); + event.stringValue = this.getValue(eventMap, "string", eventData.stringValue); + timeline.setFrame(frameIndex++, event); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + + if (isNaN(duration)) { + throw new Error("Error while parsing animation, duration is NaN"); + } + + skeletonData.animations.push(new Animation(name, timelines, duration)); + } + + readCurve (map: any, timeline: CurveTimeline, frameIndex: number) { + if (!map.curve) return; + if (map.curve === "stepped") + timeline.setStepped(frameIndex); + else if (Object.prototype.toString.call(map.curve) === '[object Array]') { + let curve: Array = map.curve; + timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]); + } + } + + getValue (map: any, prop: string, defaultValue: any) { + return map[prop] !== undefined ? map[prop] : defaultValue; + } + + static blendModeFromString (str: string) { + str = str.toLowerCase(); + if (str == "normal") return BlendMode.Normal; + if (str == "additive") return BlendMode.Additive; + if (str == "multiply") return BlendMode.Multiply; + if (str == "screen") return BlendMode.Screen; + throw new Error(`Unknown blend mode: ${str}`); + } + + static positionModeFromString (str: string) { + str = str.toLowerCase(); + if (str == "fixed") return PositionMode.Fixed; + if (str == "percent") return PositionMode.Percent; + throw new Error(`Unknown position mode: ${str}`); + } + + static spacingModeFromString (str: string) { + str = str.toLowerCase(); + if (str == "length") return SpacingMode.Length; + if (str == "fixed") return SpacingMode.Fixed; + if (str == "percent") return SpacingMode.Percent; + throw new Error(`Unknown position mode: ${str}`); + } + + static rotateModeFromString (str: string) { + str = str.toLowerCase(); + if (str == "tangent") return RotateMode.Tangent; + if (str == "chain") return RotateMode.Chain; + if (str == "chainscale") return RotateMode.ChainScale; + throw new Error(`Unknown rotate mode: ${str}`); + } + } + + class LinkedMesh { + parent: string; skin: string; + slotIndex: number; + mesh: MeshAttachment; + + constructor (mesh: MeshAttachment, skin: string, slotIndex: number, parent: string) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + } + } +} diff --git a/spine-ts/core/src/Skin.ts b/spine-ts/core/src/Skin.ts new file mode 100644 index 000000000..0b5fd0708 --- /dev/null +++ b/spine-ts/core/src/Skin.ts @@ -0,0 +1,77 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class Skin { + name: string; + attachments = new Array>(); + + constructor (name: string) { + if (name == null) throw new Error("name cannot be null."); + this.name = name; + } + + addAttachment (slotIndex: number, name: string, attachment: Attachment) { + if (attachment == null) throw new Error("attachment cannot be null."); + let attachments = this.attachments; + if (slotIndex >= attachments.length) attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) attachments[slotIndex] = { }; + attachments[slotIndex][name] = attachment; + } + + /** @return May be null. */ + getAttachment (slotIndex: number, name: string): Attachment { + let dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + } + + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + attachAll (skeleton: Skeleton, oldSkin: Skin) { + let slotIndex = 0; + for (let i = 0; i < skeleton.slots.length; i++) { + let slot = skeleton.slots[i]; + let slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + let dictionary = oldSkin.attachments[slotIndex]; + for (let key in dictionary) { + let skinAttachment:Attachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + let attachment = this.getAttachment(slotIndex, name); + if (attachment != null) slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + } + } +} diff --git a/spine-ts/core/src/Slot.ts b/spine-ts/core/src/Slot.ts new file mode 100644 index 000000000..3a761f082 --- /dev/null +++ b/spine-ts/core/src/Slot.ts @@ -0,0 +1,83 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class Slot { + data: SlotData; + bone: Bone; + color: Color; + private attachment: Attachment; + private attachmentTime: number; + attachmentVertices = new Array(); + + constructor (data: SlotData, bone: Bone) { + if (data == null) throw new Error("data cannot be null."); + if (bone == null) throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new Color(); + this.setToSetupPose(); + } + + /** @return May be null. */ + getAttachment (): Attachment { + return this.attachment; + } + + /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}. + * @param attachment May be null. */ + setAttachment (attachment: Attachment) { + if (this.attachment == attachment) return; + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + this.attachmentVertices.length = 0; + } + + setAttachmentTime (time: number) { + this.attachmentTime = this.bone.skeleton.time - time; + } + + /** Returns the time since the attachment was set. */ + getAttachmentTime (): number { + return this.bone.skeleton.time - this.attachmentTime; + } + + setToSetupPose () { + this.color.setFromColor(this.data.color); + if (this.data.attachmentName == null) + this.attachment = null; + else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + } + } +} diff --git a/spine-ts/core/src/SlotData.ts b/spine-ts/core/src/SlotData.ts new file mode 100644 index 000000000..ac14a4b31 --- /dev/null +++ b/spine-ts/core/src/SlotData.ts @@ -0,0 +1,50 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class SlotData { + index: number; + name: string; + boneData: BoneData; + color = new Color(1, 1, 1, 1); + attachmentName: string; + blendMode: BlendMode; + + constructor (index: number, name: string, boneData: BoneData) { + if (index < 0) throw new Error("index must be >= 0."); + if (name == null) throw new Error("name cannot be null."); + if (boneData == null) throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + } +} diff --git a/spine-ts/core/src/TransformConstraint.ts b/spine-ts/core/src/TransformConstraint.ts new file mode 100644 index 000000000..dc628ba35 --- /dev/null +++ b/spine-ts/core/src/TransformConstraint.ts @@ -0,0 +1,117 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class TransformConstraint implements Updatable { + data: TransformConstraintData; + bones: Array; + target: Bone; + rotateMix = 0; translateMix = 0; scaleMix = 0; shearMix = 0; + temp = new Vector2(); + + constructor (data: TransformConstraintData, skeleton: Skeleton) { + if (data == null) throw new Error("data cannot be null."); + if (skeleton == null) throw new Error("skeleton cannot be null."); + this.data = data; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this.scaleMix = data.scaleMix; + this.shearMix = data.shearMix; + this.bones = new Array(); + for (let i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + + apply () { + this.update(); + } + + update () { + let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + let target = this.target; + let ta = target.a, tb = target.b, tc = target.c, td = target.d; + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + + if (rotateMix > 0) { + let a = bone.a, b = bone.b, c = bone.c, d = bone.d; + let r = Math.atan2(tc, ta) - Math.atan2(c, a) + this.data.offsetRotation * MathUtils.degRad; + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) + r += MathUtils.PI2; + r *= rotateMix; + let cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + + if (translateMix > 0) { + let temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + } + + if (scaleMix > 0) { + let bs = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + let ts = Math.sqrt(ta * ta + tc * tc); + let s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleX) * scaleMix) / bs : 0; + bone.a *= s; + bone.c *= s; + bs = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = Math.sqrt(tb * tb + td * td); + s = bs > 0.00001 ? (bs + (ts - bs + this.data.offsetScaleY) * scaleMix) / bs : 0; + bone.b *= s; + bone.d *= s; + } + + if (shearMix > 0) { + let b = bone.b, d = bone.d; + let by = Math.atan2(d, b); + let r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) + r += MathUtils.PI2; + r = by + (r + this.data.offsetShearY * MathUtils.degRad) * shearMix; + let s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + } + } + } + } +} diff --git a/spine-ts/core/src/TransformConstraintData.ts b/spine-ts/core/src/TransformConstraintData.ts new file mode 100644 index 000000000..e2144646b --- /dev/null +++ b/spine-ts/core/src/TransformConstraintData.ts @@ -0,0 +1,45 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class TransformConstraintData { + name: string; + bones = new Array(); + target: BoneData; + rotateMix = 0; translateMix = 0; scaleMix = 0; shearMix = 0; + offsetRotation = 0; offsetX = 0; offsetY = 0; offsetScaleX = 0; offsetScaleY = 0; offsetShearY = 0; + + constructor (name: string) { + if (name == null) throw new Error("name cannot be null."); + this.name = name; + } + } +} diff --git a/spine-ts/core/src/Updatable.ts b/spine-ts/core/src/Updatable.ts new file mode 100644 index 000000000..ec2267ebb --- /dev/null +++ b/spine-ts/core/src/Updatable.ts @@ -0,0 +1,36 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export interface Updatable { + update(): void; + } +} diff --git a/spine-ts/core/src/Utils.ts b/spine-ts/core/src/Utils.ts new file mode 100644 index 000000000..0ae496c24 --- /dev/null +++ b/spine-ts/core/src/Utils.ts @@ -0,0 +1,198 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export interface Map { + [key: string]: T; + } + + export interface Disposable { + dispose (): void; + } + + export class Color { + constructor (public r: number = 0, public g: number = 0, public b: number = 0, public a: number = 0) { + } + + set (r: number, g: number, b: number, a: number) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.clamp(); + } + + setFromColor (c: Color) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + } + + setFromString (hex: string) { + hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255.0; + this.g = parseInt(hex.substr(2, 2), 16) / 255.0; + this.b = parseInt(hex.substr(4, 2), 16) / 255.0; + this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; + } + + add (r: number, g: number, b: number, a: number) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + this.clamp(); + } + + clamp () { + if (this.r < 0) this.r = 0; + else if (this.r > 1) this.r = 1; + + if (this.g < 0) this.g = 0; + else if (this.g > 1) this.g = 1; + + if (this.b < 0) this.b = 0; + else if (this.b > 1) this.b = 1; + + if (this.a < 0) this.a = 0; + else if (this.a > 1) this.a = 1; + return this; + } + } + + export class MathUtils { + static PI = 3.1415927; + static PI2 = MathUtils.PI * 2; + static radiansToDegrees = 180 / MathUtils.PI; + static radDeg = MathUtils.radiansToDegrees; + static degreesToRadians = MathUtils.PI / 180; + static degRad = MathUtils.degreesToRadians; + + static clamp (value: number, min: number, max: number) { + if (value < min) return min; + if (value > max) return max; + return value; + } + + static cosDeg (degrees: number) { + return Math.cos(degrees * MathUtils.degRad); + } + + static sinDeg (degrees: number) { + return Math.sin(degrees * MathUtils.degRad); + } + + static signum (value: number): number { + return value >= 0 ? 1 : -1; + } + + static toInt (x: number) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + } + } + + export class Utils { + static SUPPORTS_TYPED_ARRAYS = typeof(Float32Array) !== "undefined"; + + static arrayCopy (source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number) { + for (let i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + } + + static setArraySize (array: Array, size: number, value: any = 0): Array { + let oldSize = array.length; + if (oldSize == size) return array; + array.length = size; + if (oldSize < size) { + for (let i = oldSize; i < size; i++) array[i] = value; + } + return array; + } + + static newArray (size: number, defaultValue: T): Array { + let array = new Array(size); + for (let i = 0; i < size; i++) array[i] = defaultValue; + return array; + } + + static newFloatArray (size: number): ArrayLike { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Float32Array(size) + } else { + let array = new Array(size); + for (let i = 0; i < array.length; i++) array[i] = 0; + return array; + } + } + + static toFloatArray (array: Array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + } + } + + export class Pool { + private _items = new Array(16); + private _instantiator: () => T; + + constructor (instantiator: () => T) { + this._instantiator = instantiator; + } + + obtain () { + return this._items.length > 0 ? this._items.pop() : this._instantiator(); + } + + free (item: T) { + this._items.push(item); + } + + freeAll (items: ArrayLike) { + for (let i = 0; i < items.length; i++) this._items[i] = items[i]; + } + + clear () { + this._items.length = 0; + } + } + + export class Vector2 { + constructor (public x = 0, public y = 0) { + } + + set (x: number, y: number): Vector2 { + this.x = x; + this.y = y; + return this; + } + } +} diff --git a/spine-ts/core/src/attachments/Attachment.ts b/spine-ts/core/src/attachments/Attachment.ts new file mode 100644 index 000000000..dfadbaa3c --- /dev/null +++ b/spine-ts/core/src/attachments/Attachment.ts @@ -0,0 +1,124 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export abstract class Attachment { + name: string; + + constructor (name: string) { + if (name == null) throw new Error("name cannot be null."); + this.name = name; + } + } + + export abstract class VertexAttachment extends Attachment { + bones: Array; + vertices: ArrayLike; + worldVerticesLength = 0; + + constructor (name: string) { + super(name); + } + + computeWorldVertices (slot: Slot, worldVertices: ArrayLike) { + this.computeWorldVerticesWith(slot, 0, this.worldVerticesLength, worldVertices, 0); + } + + /** Transforms local vertices to world coordinates. + * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start. + * @param worldVertices The output world vertices. Must have a length >= offset + count. + * @param offset The worldVertices index to begin writing values. */ + computeWorldVerticesWith (slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number) { + count += offset; + let skeleton = slot.bone.skeleton; + let x = skeleton.x, y = skeleton.y; + let deformArray = slot.attachmentVertices; + let vertices = this.vertices; + let bones = this.bones; + if (bones == null) { + if (deformArray.length > 0) vertices = deformArray; + let bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + let a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (let v = start, w = offset; w < count; v += 2, w += 2) { + let vx = vertices[v], vy = vertices[v + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + let v = 0, skip = 0; + for (let i = 0; i < start; i += 2) { + let n = bones[v]; + v += n + 1; + skip += n; + } + let skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (let w = offset, b = skip * 3; w < count; w += 2) { + let wx = x, wy = y; + let n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + let bone = skeletonBones[bones[v]]; + let vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } else { + let deform = deformArray; + for (let w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) { + let wx = x, wy = y; + let n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + let bone = skeletonBones[bones[v]]; + let vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + } + + /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */ + applyDeform (sourceAttachment: VertexAttachment) { + return this == sourceAttachment; + } + } +} diff --git a/spine-ts/core/src/attachments/AttachmentLoader.ts b/spine-ts/core/src/attachments/AttachmentLoader.ts new file mode 100644 index 000000000..d75dd33ed --- /dev/null +++ b/spine-ts/core/src/attachments/AttachmentLoader.ts @@ -0,0 +1,46 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export interface AttachmentLoader { + /** @return May be null to not load an attachment. */ + newRegionAttachment (skin: Skin, name: string, path: string): RegionAttachment; + + /** @return May be null to not load an attachment. */ + newMeshAttachment (skin: Skin, name: string, path: string) : MeshAttachment; + + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment (skin: Skin, name: string) : BoundingBoxAttachment; + + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + } +} diff --git a/spine-ts/core/src/attachments/AttachmentType.ts b/spine-ts/core/src/attachments/AttachmentType.ts new file mode 100644 index 000000000..ea01e62a8 --- /dev/null +++ b/spine-ts/core/src/attachments/AttachmentType.ts @@ -0,0 +1,36 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export enum AttachmentType { + Region, BoundingBox, Mesh, LinkedMesh, Path + } +} diff --git a/spine-ts/core/src/attachments/BoundingBoxAttachment.ts b/spine-ts/core/src/attachments/BoundingBoxAttachment.ts new file mode 100644 index 000000000..a533f8949 --- /dev/null +++ b/spine-ts/core/src/attachments/BoundingBoxAttachment.ts @@ -0,0 +1,38 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class BoundingBoxAttachment extends VertexAttachment { + constructor (name: string) { + super(name); + } + } +} diff --git a/spine-ts/core/src/attachments/MeshAttachment.ts b/spine-ts/core/src/attachments/MeshAttachment.ts new file mode 100644 index 000000000..be18f6a67 --- /dev/null +++ b/spine-ts/core/src/attachments/MeshAttachment.ts @@ -0,0 +1,173 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class MeshAttachment extends VertexAttachment { + region: TextureRegion; + path: string; + regionUVs: ArrayLike; worldVertices: ArrayLike; + triangles: Array; + color = new Color(1, 1, 1, 1); + hullLength: number; + private _parentMesh: MeshAttachment; + inheritDeform = false; + tempColor = new Color(0, 0, 0, 0); + + constructor (name: string) { + super(name); + } + + updateUVs () { + let regionUVs = this.regionUVs; + let verticesLength = regionUVs.length; + let worldVerticesLength = (verticesLength >> 1) * 8; + if (this.worldVertices == null || this.worldVertices.length != worldVerticesLength) + this.worldVertices = Utils.newFloatArray(worldVerticesLength); + + let u = 0, v = 0, width = 0, height = 0; + if (this.region == null) { + u = v = 0; + width = height = 1; + } else { + u = this.region.u; + v = this.region.v; + width = this.region.u2 - u; + height = this.region.v2 - v; + } + if (this.region.rotate) { + for (let i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i + 1] * width; + this.worldVertices[w + 1] = v + height - regionUVs[i] * height; + } + } else { + for (let i = 0, w = 6; i < verticesLength; i += 2, w += 8) { + this.worldVertices[w] = u + regionUVs[i] * width; + this.worldVertices[w + 1] = v + regionUVs[i + 1] * height; + } + } + } + + /** @return The updated world vertices. */ + updateWorldVertices (slot: Slot, premultipliedAlpha: boolean) { + let skeleton = slot.bone.skeleton; + let skeletonColor = skeleton.color, slotColor = slot.color, meshColor = this.color; + let alpha = skeletonColor.a * slotColor.a * meshColor.a; + let multiplier = premultipliedAlpha ? alpha : 1; + let color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * meshColor.r * multiplier, + skeletonColor.g * slotColor.g * meshColor.g * multiplier, + skeletonColor.b * slotColor.b * meshColor.b * multiplier, + alpha); + + let x = skeleton.x, y = skeleton.y; + let deformArray = slot.attachmentVertices; + let vertices = this.vertices, worldVertices = this.worldVertices; + let bones = this.bones; + if (bones == null) { + let verticesLength = vertices.length; + if (deformArray.length > 0) vertices = deformArray; + let bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + let a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (let v = 0, w = 0; v < verticesLength; v += 2, w += 8) { + let vx = vertices[v], vy = vertices[v + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + return worldVertices; + } + let skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (let w = 0, v = 0, b = 0, n = bones.length; v < n; w += 8) { + let wx = x, wy = y; + let nn = bones[v++] + v; + for (; v < nn; v++, b += 3) { + let bone = skeletonBones[bones[v]]; + let vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } else { + let deform = deformArray; + for (let w = 0, v = 0, b = 0, f = 0, n = bones.length; v < n; w += 8) { + let wx = x, wy = y; + let nn = bones[v++] + v; + for (; v < nn; v++, b += 3, f += 2) { + let bone = skeletonBones[bones[v]]; + let vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + worldVertices[w + 2] = color.r; + worldVertices[w + 3] = color.g; + worldVertices[w + 4] = color.b; + worldVertices[w + 5] = color.a; + } + } + return worldVertices; + } + + applyDeform (sourceAttachment: VertexAttachment): boolean { + return this == sourceAttachment || (this.inheritDeform && this._parentMesh == sourceAttachment); + } + + getParentMesh () { + return this._parentMesh; + } + + /** @param parentMesh May be null. */ + setParentMesh (parentMesh: MeshAttachment) { + this._parentMesh = parentMesh; + if (parentMesh != null) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + } + } + } + +} diff --git a/spine-ts/core/src/attachments/PathAttachment.ts b/spine-ts/core/src/attachments/PathAttachment.ts new file mode 100644 index 000000000..9f0af2f91 --- /dev/null +++ b/spine-ts/core/src/attachments/PathAttachment.ts @@ -0,0 +1,41 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class PathAttachment extends VertexAttachment { + lengths: Array; + closed = false; constantSpeed = false; + + constructor (name: string) { + super(name); + } + } +} diff --git a/spine-ts/core/src/attachments/RegionAttachment.ts b/spine-ts/core/src/attachments/RegionAttachment.ts new file mode 100644 index 000000000..b1199014e --- /dev/null +++ b/spine-ts/core/src/attachments/RegionAttachment.ts @@ -0,0 +1,206 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class RegionAttachment extends Attachment { + static OX1 = 0; + static OY1 = 1; + static OX2 = 2; + static OY2 = 3; + static OX3 = 4; + static OY3 = 5; + static OX4 = 6; + static OY4 = 7; + + static X1 = 0; + static Y1 = 1; + static C1R = 2; + static C1G = 3; + static C1B = 4; + static C1A = 5; + static U1 = 6; + static V1 = 7; + + static X2 = 8; + static Y2 = 9; + static C2R = 10; + static C2G = 11; + static C2B = 12; + static C2A = 13; + static U2 = 14; + static V2 = 15; + + static X3 = 16; + static Y3 = 17; + static C3R = 18; + static C3G = 19; + static C3B = 20; + static C3A = 21; + static U3 = 22; + static V3 = 23; + + static X4 = 24; + static Y4 = 25; + static C4R = 26; + static C4G = 27; + static C4B = 28; + static C4A = 29; + static U4 = 30; + static V4 = 31; + + x = 0; y = 0; scaleX = 1; scaleY = 1; rotation = 0; width = 0; height = 0; + color = new Color(1, 1, 1, 1); + + path: string; + rendererObject: any; + region: TextureRegion; + + offset = Utils.newFloatArray(8); + vertices = Utils.newFloatArray(8 * 4); + + tempColor = new Color(1, 1, 1, 1); + + constructor (name:string) { + super(name); + } + + setRegion (region: TextureRegion) : void { + let vertices = this.vertices; + if (region.rotate) { + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v2; + vertices[RegionAttachment.U3] = region.u; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v; + vertices[RegionAttachment.U1] = region.u2; + vertices[RegionAttachment.V1] = region.v2; + } else { + vertices[RegionAttachment.U1] = region.u; + vertices[RegionAttachment.V1] = region.v2; + vertices[RegionAttachment.U2] = region.u; + vertices[RegionAttachment.V2] = region.v; + vertices[RegionAttachment.U3] = region.u2; + vertices[RegionAttachment.V3] = region.v; + vertices[RegionAttachment.U4] = region.u2; + vertices[RegionAttachment.V4] = region.v2; + } + } + + updateOffset () : void { + let regionScaleX = this.width / this.region.originalWidth * this.scaleX; + let regionScaleY = this.height / this.region.originalHeight * this.scaleY; + let localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + let localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + let localX2 = localX + this.region.width * regionScaleX; + let localY2 = localY + this.region.height * regionScaleY; + let radians = this.rotation * Math.PI / 180; + let cos = Math.cos(radians); + let sin = Math.sin(radians); + let localXCos = localX * cos + this.x; + let localXSin = localX * sin; + let localYCos = localY * cos + this.y; + let localYSin = localY * sin; + let localX2Cos = localX2 * cos + this.x; + let localX2Sin = localX2 * sin; + let localY2Cos = localY2 * cos + this.y; + let localY2Sin = localY2 * sin; + let offset = this.offset; + offset[RegionAttachment.OX1] = localXCos - localYSin; + offset[RegionAttachment.OY1] = localYCos + localXSin; + offset[RegionAttachment.OX2] = localXCos - localY2Sin; + offset[RegionAttachment.OY2] = localY2Cos + localXSin; + offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; + offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; + offset[RegionAttachment.OX4] = localX2Cos - localYSin; + offset[RegionAttachment.OY4] = localYCos + localX2Sin; + } + + updateWorldVertices (slot: Slot, premultipliedAlpha: boolean) { + let skeleton = slot.bone.skeleton; + let skeletonColor = skeleton.color; + let slotColor = slot.color; + let regionColor = this.color; + let alpha = skeletonColor.a * slotColor.a * regionColor.a; + let multiplier = premultipliedAlpha ? alpha : 1; + let color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, + skeletonColor.g * slotColor.g * regionColor.g * multiplier, + skeletonColor.b * slotColor.b * regionColor.b * multiplier, + alpha); + + let vertices = this.vertices; + let offset = this.offset; + let bone = slot.bone; + let x = skeleton.x + bone.worldX, y = skeleton.y + bone.worldY; + let a = bone.a, b = bone.b, c = bone.c, d = bone.d; + let offsetX = 0, offsetY = 0; + + offsetX = offset[RegionAttachment.OX1]; + offsetY = offset[RegionAttachment.OY1]; + vertices[RegionAttachment.X1] = offsetX * a + offsetY * b + x; // br + vertices[RegionAttachment.Y1] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C1R] = color.r; + vertices[RegionAttachment.C1G] = color.g; + vertices[RegionAttachment.C1B] = color.b; + vertices[RegionAttachment.C1A] = color.a; + + offsetX = offset[RegionAttachment.OX2]; + offsetY = offset[RegionAttachment.OY2]; + vertices[RegionAttachment.X2] = offsetX * a + offsetY * b + x; // bl + vertices[RegionAttachment.Y2] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C2R] = color.r; + vertices[RegionAttachment.C2G] = color.g; + vertices[RegionAttachment.C2B] = color.b; + vertices[RegionAttachment.C2A] = color.a; + + offsetX = offset[RegionAttachment.OX3]; + offsetY = offset[RegionAttachment.OY3]; + vertices[RegionAttachment.X3] = offsetX * a + offsetY * b + x; // ul + vertices[RegionAttachment.Y3] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C3R] = color.r; + vertices[RegionAttachment.C3G] = color.g; + vertices[RegionAttachment.C3B] = color.b; + vertices[RegionAttachment.C3A] = color.a; + + offsetX = offset[RegionAttachment.OX4]; + offsetY = offset[RegionAttachment.OY4]; + vertices[RegionAttachment.X4] = offsetX * a + offsetY * b + x; // ur + vertices[RegionAttachment.Y4] = offsetX * c + offsetY * d + y; + vertices[RegionAttachment.C4R] = color.r; + vertices[RegionAttachment.C4G] = color.g; + vertices[RegionAttachment.C4B] = color.b; + vertices[RegionAttachment.C4A] = color.a; + + return vertices; + } + } +} diff --git a/spine-ts/core/src/attachments/TextureRegion.ts b/spine-ts/core/src/attachments/TextureRegion.ts new file mode 100644 index 000000000..519dbdf59 --- /dev/null +++ b/spine-ts/core/src/attachments/TextureRegion.ts @@ -0,0 +1,42 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class TextureRegion { + renderObject: any; + u = 0; v = 0; + u2 = 0; v2 = 0; + width = 0; height = 0; + rotate = false; + offsetX = 0; offsetY = 0; + originalWidth = 0; originalHeight = 0; + } +} diff --git a/spine-ts/tsconfig.core.json b/spine-ts/tsconfig.core.json new file mode 100644 index 000000000..efb8f8c58 --- /dev/null +++ b/spine-ts/tsconfig.core.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "none", + "noImplicitAny": true, + "removeComments": false, + "preserveConstEnums": true, + "outFile": "build/spine-core.js", + "sourceMap": true, + "declaration": true + }, + "include": [ + "core/src/**/*" + ], + "exclude": [ + "webgl/src/*.ts", + "build", + "build/*.d.ts" + ] +} \ No newline at end of file diff --git a/spine-ts/tsconfig.json b/spine-ts/tsconfig.json new file mode 100644 index 000000000..d7c22fd13 --- /dev/null +++ b/spine-ts/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "none", + "noImplicitAny": true, + "removeComments": false, + "preserveConstEnums": true, + "outFile": "build/spine-all.js", + "sourceMap": true, + "declaration": true + }, + "include": [ + "core/src/**/*", + "webgl/src/**/*", + "widget/src/**/*" + ], + "exclude": [ + "build", + "build/*.js", + "build/*.d.ts", + "build/*.js.map" + ] +} \ No newline at end of file diff --git a/spine-ts/tsconfig.webgl.json b/spine-ts/tsconfig.webgl.json new file mode 100644 index 000000000..cb40effe0 --- /dev/null +++ b/spine-ts/tsconfig.webgl.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "module": "none", + "noImplicitAny": true, + "removeComments": false, + "preserveConstEnums": true, + "outFile": "build/spine-webgl.js", + "sourceMap": true, + "declaration": true + }, + "include": [ + "core/src/**/*", + "webgl/src/**/*" + ], + "exclude": [ + "build", + "build/*.d.ts", + "build/*.js", + "build/*.js.map" + ] +} \ No newline at end of file diff --git a/spine-ts/tsconfig.widget.json b/spine-ts/tsconfig.widget.json new file mode 100644 index 000000000..391a247ba --- /dev/null +++ b/spine-ts/tsconfig.widget.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "none", + "noImplicitAny": true, + "removeComments": false, + "preserveConstEnums": true, + "outFile": "build/spine-widget.js", + "sourceMap": true, + "declaration": true + }, + "include": [ + "core/src/**/*", + "webgl/src/**/*", + "widget/src/**/*" + ], + "exclude": [ + "build", + "build/*.d.ts", + "build/*.js", + "build/*.js.map" + ] +} \ No newline at end of file diff --git a/spine-ts/webgl/example/assets/goblins-mesh.atlas b/spine-ts/webgl/example/assets/goblins-mesh.atlas new file mode 100644 index 000000000..d674db469 --- /dev/null +++ b/spine-ts/webgl/example/assets/goblins-mesh.atlas @@ -0,0 +1,293 @@ + +goblins-mesh.png +size: 1024,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +dagger + rotate: true + xy: 372, 100 + size: 26, 108 + orig: 26, 108 + offset: 0, 0 + index: -1 +goblin/eyes-closed + rotate: false + xy: 2, 7 + size: 34, 12 + orig: 34, 12 + offset: 0, 0 + index: -1 +goblin/head + rotate: false + xy: 107, 36 + size: 103, 66 + orig: 103, 66 + offset: 0, 0 + index: -1 +goblin/left-arm + rotate: false + xy: 901, 56 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblin/left-foot + rotate: false + xy: 929, 95 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblin/left-hand + rotate: false + xy: 452, 2 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/left-lower-leg + rotate: true + xy: 713, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblin/left-shoulder + rotate: false + xy: 610, 44 + size: 29, 44 + orig: 29, 44 + offset: 0, 0 + index: -1 +goblin/left-upper-leg + rotate: true + xy: 638, 93 + size: 33, 73 + orig: 33, 73 + offset: 0, 0 + index: -1 +goblin/neck + rotate: false + xy: 490, 2 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/pelvis + rotate: false + xy: 482, 45 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblin/right-arm + rotate: true + xy: 690, 2 + size: 23, 50 + orig: 23, 50 + offset: 0, 0 + index: -1 +goblin/right-foot + rotate: false + xy: 771, 58 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblin/right-hand + rotate: false + xy: 940, 56 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblin/right-lower-leg + rotate: true + xy: 482, 90 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblin/right-shoulder + rotate: true + xy: 602, 3 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblin/right-upper-leg + rotate: true + xy: 641, 57 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblin/torso + rotate: true + xy: 212, 34 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblin/undie-straps + rotate: false + xy: 380, 5 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblin/undies + rotate: false + xy: 174, 5 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +goblingirl/eyes-closed + rotate: false + xy: 269, 11 + size: 37, 21 + orig: 37, 21 + offset: 0, 0 + index: -1 +goblingirl/head + rotate: false + xy: 2, 21 + size: 103, 81 + orig: 103, 81 + offset: 0, 0 + index: -1 +goblingirl/left-arm + rotate: true + xy: 978, 56 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblingirl/left-foot + rotate: false + xy: 107, 3 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblingirl/left-hand + rotate: false + xy: 565, 2 + size: 35, 40 + orig: 35, 40 + offset: 0, 0 + index: -1 +goblingirl/left-lower-leg + rotate: true + xy: 785, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/left-shoulder + rotate: true + xy: 690, 27 + size: 28, 46 + orig: 28, 46 + offset: 0, 0 + index: -1 +goblingirl/left-upper-leg + rotate: true + xy: 857, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/neck + rotate: false + xy: 528, 2 + size: 35, 41 + orig: 35, 41 + offset: 0, 0 + index: -1 +goblingirl/pelvis + rotate: false + xy: 546, 45 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblingirl/right-arm + rotate: false + xy: 452, 48 + size: 28, 50 + orig: 28, 50 + offset: 0, 0 + index: -1 +goblingirl/right-foot + rotate: false + xy: 836, 58 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblingirl/right-hand + rotate: true + xy: 771, 20 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblingirl/right-lower-leg + rotate: true + xy: 560, 90 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblingirl/right-shoulder + rotate: false + xy: 649, 10 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblingirl/right-upper-leg + rotate: true + xy: 706, 57 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblingirl/torso + rotate: false + xy: 310, 2 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblingirl/undie-straps + rotate: false + xy: 212, 13 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblingirl/undies + rotate: false + xy: 810, 27 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +shield + rotate: false + xy: 380, 26 + size: 70, 72 + orig: 70, 72 + offset: 0, 0 + index: -1 +spear + rotate: true + xy: 2, 104 + size: 22, 368 + orig: 22, 368 + offset: 0, 0 + index: -1 diff --git a/spine-ts/webgl/example/assets/goblins-mesh.json b/spine-ts/webgl/example/assets/goblins-mesh.json new file mode 100644 index 000000000..82da6832a --- /dev/null +++ b/spine-ts/webgl/example/assets/goblins-mesh.json @@ -0,0 +1,1082 @@ +{ +"skeleton": { "hash": "P7CQ4ImK+tcAICATgSttlZ5HOSM", "spine": "3.4.00", "width": 0, "height": 0, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, + { "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 }, + { "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 }, + { "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 }, + { "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 }, + { "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 }, + { "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 }, + { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "rotation": -16.65, "x": 56.34, "y": 0.98 }, + { "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 }, + { "name": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.07 }, + { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, + { "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 }, + { "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 }, + { "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 }, + { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 }, + { "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 }, + { "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 }, + { "name": "spear1", "parent": "left hand", "length": 65.06, "rotation": 102.43, "x": 0.48, "y": 17.03 }, + { "name": "spear2", "parent": "spear1", "length": 61.41, "rotation": 0.9, "x": 65.05, "y": 0.04 }, + { "name": "spear3", "parent": "spear2", "length": 76.79, "rotation": -0.9, "x": 61.88, "y": 0.57 } +], +"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": "mesh", + "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.5116, 20, -0.31, -6.16, 0.48839, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.06, 0.49728, 1, 10, 4.56, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.41999, -141.1, 1, 1, 10, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.50272, 19, 0.52999, 6.59, 0.49728, 2, 19, 62.18, 6.66, 0.5116, 20, 0.2, 6.09, 0.48839, 1, 20, 30.96, 6.61, 1, 1, 20, 37.25999, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], + "hull": 14, + "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 ], + "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": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ], + "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 ], + "hull": 14, + "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 ], + "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.45999, 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.59999, 23.41, 35.89, 40.16999, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.79999, -24.31, 17.2, -40.65, 20.68, -33.02 ], + "hull": 24, + "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 ], + "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.18999, 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 ], + "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], + "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": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ], + "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 ], + "hull": 10, + "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 ], + "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, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ], + "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.47999, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], + "hull": 9, + "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], + "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": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ], + "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.18999, -18.29 ], + "hull": 11, + "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], + "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.16999, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.73999, -4.66, 6.54 ], + "hull": 8, + "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], + "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": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ], + "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 ], + "hull": 9, + "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], + "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.04999, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], + "hull": 10, + "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 ], + "width": 36, + "height": 41 + } + }, + "pelvis": { + "pelvis": { + "name": "goblin/pelvis", + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "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.17999 ], + "hull": 8, + "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], + "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": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ], + "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 ], + "hull": 14, + "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 ], + "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": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ], + "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.87999, -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 ], + "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], + "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": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ], + "vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ], + "hull": 5, + "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], + "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": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ], + "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.09999, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.76999, -1.03, 58.99, -9.18999, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], + "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], + "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 ], + "hull": 8, + "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 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": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ], + "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.50999, 10.18, 19.12999, 18.46999, 2.85, 16.32, -8.39999, 6.14 ], + "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], + "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.87999, 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 ], + "hull": 16, + "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 ], + "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": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ], + "vertices": [ -10.56, 12.87, 6.53, 9.89999, 25.62, 17.70999, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], + "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], + "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": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ], + "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.58999, 22.22, 6.11, 22.92, 14.05, 3.75, 9.43999, -13.08, 13.71, 4.21, -2.58999, 4.03, 2.05 ], + "hull": 10, + "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 ], + "width": 36, + "height": 29 + } + } + }, + "goblingirl": { + "eyes": { + "eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 } + }, + "head": { + "head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } + }, + "left arm": { + "left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 } + }, + "left foot": { + "left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 } + }, + "left hand": { + "left hand": { + "name": "goblingirl/left-hand", + "x": 4.34, + "y": 2.39, + "scaleX": 0.896, + "scaleY": 0.896, + "rotation": 30.34, + "width": 35, + "height": 40 + } + }, + "left lower leg": { + "left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 } + }, + "left shoulder": { + "left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 } + }, + "left upper leg": { + "left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 } + }, + "neck": { + "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 } + }, + "pelvis": { + "pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 } + }, + "right arm": { + "right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 } + }, + "right foot": { + "right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 } + }, + "right hand": { + "right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } + }, + "right hand thumb": { + "right hand thumb": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } + }, + "right lower leg": { + "right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 } + }, + "right shoulder": { + "right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 } + }, + "right upper leg": { + "right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 } + }, + "torso": { + "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 } + }, + "undie straps": { + "undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 } + }, + "undies": { + "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "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 } + ] + } + }, + "deform": { + "default": { + "left hand item": { + "spear": [ + { "time": 0 } + ] + }, + "right hand item": { + "dagger": [ + { + "time": 0, + "offset": 26, + "vertices": [ 2.34754, 0.14469 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 8, + "vertices": [ -1.19415, 4.31531, 0.07279, 6.41351, 1.66048, 6.18882, 1.75232, 3.59555 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "offset": 26, + "vertices": [ 2.34754, 0.14469 ] + } + ] + } + }, + "goblin": { + "head": { + "head": [ + { + "time": 0, + "curve": [ 0.632, 0, 0.75, 1 ] + }, + { + "time": 0.2, + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391, -1.08534, 0.08391, -1.08534, 0.08391, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017, 1.47305, 0.09017, 1.47305, 0.09017, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017 ], + "curve": [ 0.621, 0, 0.75, 1 ] + }, + { + "time": 0.7, + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183, -1.1755, -0.17182, -1.1755, -0.17183, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.8666, + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1 } + ] + }, + "left foot": { + "left foot": [ + { + "time": 0, + "offset": 8, + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] + }, + { "time": 0.1333 }, + { + "time": 0.2333, + "offset": 8, + "vertices": [ -3.96072, -2.34594, -5.80445, -12.47629, -2.23129, -12.99037, 2.02941, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ] + }, + { + "time": 0.3666, + "offset": 8, + "vertices": [ 0.66504, 0.33548, 0.33902, 2.69014, -0.4817, 2.54524, -1.13592, 1.38562, 0, 0, 0, 0, 0, 0, -0.11907, 0.79273 ] + }, + { "time": 0.5, "curve": "stepped" }, + { "time": 0.6333 }, + { + "time": 0.7333, + "offset": 8, + "vertices": [ -2.97737, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72606, 6.30798, 0, 0, -1.48902, 4.88944, -7.06773, 10.70101 ] + }, + { + "time": 0.8333, + "offset": 6, + "vertices": [ 1.05318, 1.56361, -2.52722, 7.9974, -5.5203, 17.14136, -8.93317, 15.79635, -10.73747, 10.22055, -4.23801, 5.36992, 0, 0, 0, 0, -5.83147, 8.55531 ] + }, + { + "time": 1, + "offset": 8, + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] + } + ] + }, + "pelvis": { + "pelvis": [ + { "time": 0 }, + { + "time": 0.1333, + "offset": 6, + "vertices": [ -0.68989, -4.13283 ] + }, + { + "time": 0.3333, + "offset": 6, + "vertices": [ -1.04945, -3.10476 ] + }, + { + "time": 0.7, + "offset": 6, + "vertices": [ -1.4245, -6.30616 ] + }, + { + "time": 0.8666, + "offset": 6, + "vertices": [ -1.13541, -1.79035 ] + }, + { "time": 1 } + ] + }, + "right foot": { + "right foot": [ + { "time": 0 }, + { + "time": 0.1333, + "offset": 2, + "vertices": [ -2.81258, 2.63114, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09854, -0.34812, 3.42912, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91371, -1.32986, 3.65703 ] + }, + { + "time": 0.2333, + "offset": 2, + "vertices": [ -6.39088, 6.41245, -7.74575, 8.27191, -7.02471, 11.35894, -4.0347, 13.93454, -2.50399, 12.62962, -1.46124, 7.58915, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84765, 2.61215, -4.53955, 7.92357 ] + }, + { + "time": 0.3, + "offset": 2, + "vertices": [ -8.27184, 6.68821, -9.29764, 10.13797, -8.62231, 14.71339, -4.58629, 18.81939, -2.20304, 17.10709, -0.07794, 9.9046, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94624, 2.38007, -4.59398, 10.01888 ] + }, + { + "time": 0.3666, + "offset": 2, + "vertices": [ -10.47683, 9.44175, -13.36882, 12.40982, -14.32568, 16.94392, -9.24462, 23.55674, -5.51711, 21.51377, -1.19581, 11.53192, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14847, 2.29389, -6.63418, 11.37127 ] + }, + { + "time": 0.5, + "offset": 2, + "vertices": [ -5.42473, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12805, -1.45497, 18.05411, 4.86619, 6.41678, 2.81462, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.94829 ] + }, + { "time": 0.6333 }, + { + "time": 0.7333, + "offset": 4, + "vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08367, -7.15892, -11.63193, -5.6792, -4.83544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06163, -6.93844 ] + }, + { + "time": 0.8, + "offset": 4, + "vertices": [ 0.65731, -3.42049, -0.43952, -6.27239, -2.99255, -7.04183, -3.57946, -5.81596, -2.83959, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79687, -1.2802, 0, 0, 0, 0, -1.03081, -3.46922 ] + }, + { "time": 0.8666 } + ] + }, + "right hand": { + "right hand": [ + { + "time": 0, + "offset": 4, + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] + }, + { "time": 0.5 }, + { + "time": 1, + "offset": 4, + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] + } + ] + }, + "right lower leg": { + "right lower leg": [ + { "time": 0 }, + { + "time": 0.6, + "offset": 6, + "vertices": [ 1.80396, -1.56552 ] + }, + { "time": 1 } + ] + }, + "right upper leg": { + "right upper leg": [ + { + "time": 0, + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] + }, + { "time": 0.3333 }, + { + "time": 0.8666, + "offset": 14, + "vertices": [ 0.13424, -2.35377, -1.33317, -5.99572, -1.35861, -4.43323 ] + }, + { + "time": 1, + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] + } + ] + }, + "torso": { + "torso": [ + { + "time": 0, + "offset": 14, + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] + }, + { + "time": 0.1333, + "offset": 14, + "vertices": [ 1.31318, -0.59727, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] + }, + { + "time": 0.3, + "offset": 14, + "vertices": [ 6.03761, -3.13561, 7.55475, -1.38111, 6.79747, 0.31171, 4.23503, 1.14012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07575, -5.16824, 0, 0, 4.0041, 0.27245, 0, 0, 0, 0, 3.4376, -3.52286 ] + }, + { + "time": 0.5, + "offset": 14, + "vertices": [ 2.25942, -0.87202, 2.575, -0.56861, 3.17112, -0.57003, 1.48704, 0.9924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22451, -4.43862, 0, 0, 1.48691, 0.01586, 0, 0, 0, 0, 0.31388, -3.28095, -1.53797, 0.17803 ] + }, + { + "time": 0.6333, + "offset": 14, + "vertices": [ 0.75002, -1.51701, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] + }, + { + "time": 0.8666, + "offset": 14, + "vertices": [ 0.62202, -1.26262, 0.38489, -2.20701, 3.25048, -0.50042, 2.41108, 2.39315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6639, -3.10099, 0, 0, 2.30655, -1.15196, 0, 0, 0, 0, -0.07676, -3.63497, -0.9321, 0.1079 ] + }, + { + "time": 1, + "offset": 14, + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] + } + ] + }, + "undie straps": { + "undie straps": [ + { + "time": 0, + "offset": 2, + "vertices": [ -1.77696, 0.54759, -0.96145, -1.03793, -0.39148, -0.24071, -1.77696, 0.54759 ] + }, + { + "time": 0.1333, + "offset": 2, + "vertices": [ -2.25683, -1.03177, -1.49719, -4.23861, -0.74469, -2.84906, -1.90072, 0.54477 ] + }, + { + "time": 0.3333, + "offset": 2, + "vertices": [ -2.37974, -0.05431, -0.49433, 0.19436, -0.90861, 1.16519, -1.60956, 2.70798, 0.96186, 0.80615 ] + }, + { + "time": 0.7, + "offset": 2, + "vertices": [ -0.91714, -2.76567, -0.62214, -3.63489, -0.8494, -2.26772, -2.56076, 0.5297 ] + }, + { + "time": 0.8666, + "offset": 2, + "vertices": [ -2.56076, 0.5297, -1.58064, 0.32031, -1.3847, 0.32476, -2.56076, 0.5297 ] + }, + { + "time": 1, + "offset": 2, + "vertices": [ -1.77696, 0.54759, -0.80128, 0.53413, -0.80128, 0.53413, -1.77696, 0.54759 ] + } + ] + }, + "undies": { + "undies": [ + { + "time": 0, + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] + }, + { + "time": 0.1333, + "vertices": [ 0.72659, 0.43319, 7.20416, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99861, -2.95085, -1.37542, -3.07404, 1.37759, 0, 0.35279, -0.29279, 2.99218, -0.07019, 3.90478, -0.14039 ] + }, + { + "time": 0.3333, + "vertices": [ 1.16999, 0, 2.10599, -0.234, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ] + }, + { + "time": 0.5333, + "vertices": [ 1.16999, 0, -0.234, -0.93599, -2.92499, 0.35099, 0, 0, 0, 0, 0.49999, -0.24999, -0.64078, -2.07914, -0.64078, -2.07914 ] + }, + { + "time": 0.7, + "vertices": [ 1.8627, -0.11514, 4.66326, -0.09099, -1.76428, 0.21171, 0, 0, -0.56832, 0.32832, -1.13833, -1.1511, -2.19996, -3.47068, -1.29718, -3.47068, 0, 0, 0, 0, 1.58785, -0.04642, 2.65941, 0.16714 ] + }, + { + "time": 0.8333, + "vertices": [ 2.41687, -0.20725, 8.58108, 0.585, -0.83571, 0.10028, 0, 0, -1.02299, 0.59098, -2.44899, -1.872, -1.62499, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08356, 4.78695, 0.30086 ] + }, + { + "time": 0.8666, + "vertices": [ 2.01969, -0.0214, 8.98545, 0.4446, -0.20937, 0.08022, 0.45919, 0, -0.35919, 0.47279, -1.84159, -1.4488, -0.79153, 1.2642, 0.53285, 1.23981, 0.45919, 0, 0.11759, -0.09759, 3.2839, -0.09025, 5.13115, 0.19388 ] + }, + { + "time": 1, + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] + } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-ts/webgl/example/assets/goblins-mesh.png b/spine-ts/webgl/example/assets/goblins-mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..fc524c564c810011889f6fe8276f45445f597368 GIT binary patch literal 160909 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 >My0Lu}IAze3K(Wc!UQsW}}_- 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%0D}FHjE!HVsVmG} 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 literal 0 HcmV?d00001 diff --git a/spine-ts/webgl/example/assets/raptor.atlas b/spine-ts/webgl/example/assets/raptor.atlas new file mode 100644 index 000000000..11728a52d --- /dev/null +++ b/spine-ts/webgl/example/assets/raptor.atlas @@ -0,0 +1,279 @@ + +raptor.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back_arm + rotate: true + xy: 140, 191 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +back_bracer + rotate: true + xy: 167, 317 + size: 39, 28 + orig: 39, 28 + offset: 0, 0 + index: -1 +back_hand + rotate: false + xy: 167, 358 + size: 36, 34 + orig: 36, 34 + offset: 0, 0 + index: -1 +back_knee + rotate: false + xy: 299, 478 + size: 49, 67 + orig: 49, 67 + offset: 0, 0 + index: -1 +back_thigh + rotate: true + xy: 167, 437 + size: 39, 24 + orig: 39, 24 + offset: 0, 0 + index: -1 +eyes_closed + rotate: true + xy: 2, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +eyes_open + rotate: true + xy: 49, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +eyes_surprised + rotate: true + xy: 96, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +front_arm + rotate: false + xy: 419, 544 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 880, 695 + size: 41, 29 + orig: 41, 29 + offset: 0, 0 + index: -1 +front_hand + rotate: true + xy: 167, 394 + size: 41, 38 + orig: 41, 38 + offset: 0, 0 + index: -1 +front_open_hand + rotate: false + xy: 880, 726 + size: 43, 44 + orig: 43, 44 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 360, 545 + size: 57, 29 + orig: 57, 29 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 785, 774 + size: 107, 103 + orig: 107, 103 + offset: 0, 0 + index: -1 +gun_nohand + rotate: false + xy: 614, 703 + size: 105, 102 + orig: 105, 102 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 137 + size: 136, 149 + orig: 136, 149 + offset: 0, 0 + index: -1 +lower_leg + rotate: true + xy: 780, 699 + size: 73, 98 + orig: 73, 98 + offset: 0, 0 + index: -1 +mouth_grind + rotate: false + xy: 469, 544 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: true + xy: 894, 772 + size: 105, 30 + orig: 105, 30 + offset: 0, 0 + index: -1 +mouth_smile + rotate: true + xy: 140, 239 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +neck + rotate: true + xy: 538, 577 + size: 18, 21 + orig: 18, 21 + offset: 0, 0 + index: -1 +raptor_arm_back + rotate: false + xy: 940, 936 + size: 82, 86 + orig: 82, 86 + offset: 0, 0 + index: -1 +raptor_body + rotate: false + xy: 2, 737 + size: 610, 285 + orig: 610, 285 + offset: 0, 0 + index: -1 +raptor_front_arm + rotate: true + xy: 195, 464 + size: 81, 102 + orig: 81, 102 + offset: 0, 0 + index: -1 +raptor_front_leg + rotate: false + xy: 2, 478 + size: 191, 257 + orig: 191, 257 + offset: 0, 0 + index: -1 +raptor_hindleg_back + rotate: false + xy: 614, 807 + size: 169, 215 + orig: 169, 215 + offset: 0, 0 + index: -1 +raptor_horn + rotate: false + xy: 360, 655 + size: 182, 80 + orig: 182, 80 + offset: 0, 0 + index: -1 +raptor_horn_back + rotate: false + xy: 360, 576 + size: 176, 77 + orig: 176, 77 + offset: 0, 0 + index: -1 +raptor_jaw + rotate: false + xy: 785, 879 + size: 153, 143 + orig: 153, 143 + offset: 0, 0 + index: -1 +raptor_saddle_noshadow + rotate: false + xy: 2, 288 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_saddle_strap_front + rotate: false + xy: 721, 710 + size: 57, 95 + orig: 57, 95 + offset: 0, 0 + index: -1 +raptor_saddle_strap_rear + rotate: true + xy: 940, 880 + size: 54, 74 + orig: 54, 74 + offset: 0, 0 + index: -1 +raptor_saddle_w_shadow + rotate: false + xy: 195, 547 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_tongue + rotate: true + xy: 544, 649 + size: 86, 64 + orig: 86, 64 + offset: 0, 0 + index: -1 +stirrup_back + rotate: true + xy: 140, 145 + size: 44, 35 + orig: 44, 35 + offset: 0, 0 + index: -1 +stirrup_front + rotate: false + xy: 538, 597 + size: 45, 50 + orig: 45, 50 + offset: 0, 0 + index: -1 +stirrup_strap + rotate: false + xy: 350, 497 + size: 49, 46 + orig: 49, 46 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 610, 647 + size: 54, 91 + orig: 54, 91 + offset: 0, 0 + index: -1 +visor + rotate: false + xy: 2, 51 + size: 131, 84 + orig: 131, 84 + offset: 0, 0 + index: -1 diff --git a/spine-ts/webgl/example/assets/raptor.json b/spine-ts/webgl/example/assets/raptor.json new file mode 100644 index 000000000..d2b55b74c --- /dev/null +++ b/spine-ts/webgl/example/assets/raptor.json @@ -0,0 +1,2621 @@ +{ +"skeleton": { "hash": "/7FMTV1eoFH7zhIaaG8BAH+NQOw", "spine": "3.4.00", "width": 1223.72, "height": 1055.62, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "rotation": 3.15, "x": -136.78, "y": 415.47, "color": "fbff00ff" }, + { "name": "torso1", "parent": "hip", "length": 126.25, "rotation": -4.97, "x": 30.03, "y": -0.4, "color": "eaff00ff" }, + { "name": "saddle", "parent": "torso1", "length": 50.91, "rotation": 91.8, "x": 4.56, "y": 71.86, "color": "ff7300ff" }, + { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "rotation": 90.01, "x": 81.88, "y": 2.68, "color": "ffffffff" }, + { + "name": "spineboy_torso", + "parent": "spineboy_hip", + "length": 122.45, + "rotation": -75.85, + "x": 1.05, + "y": -2.1, + "color": "ffffffff" + }, + { + "name": "back_arm", + "parent": "spineboy_torso", + "length": 67.21, + "rotation": -120.89, + "x": 96.33, + "y": -38.46, + "color": "ffffffff" + }, + { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "rotation": 17.48, "x": 67.21, "y": -0.31, "color": "ffffffff" }, + { + "name": "back_hand", + "parent": "back_bracer", + "length": 41.97, + "rotation": 9.2, + "x": 43.68, + "y": 0.06, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "rotation": 160.75, "x": -9.57, "y": 2.31, "color": "ffffffff" }, + { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "rotation": -54.97, "x": 71.15, "y": -0.28, "color": "ffffffff" }, + { + "name": "front_arm", + "parent": "spineboy_torso", + "length": 74.51, + "rotation": -118.16, + "x": 101.37, + "y": 9.78, + "color": "ffffffff" + }, + { "name": "torso2", "parent": "torso1", "length": 121.2, "rotation": 39.84, "x": 126.25, "y": -0.37, "color": "eaff00ff" }, + { "name": "front_arm1", "parent": "torso2", "length": 109.99, "rotation": 224.54, "x": 46.37, "y": -84.61, "color": "15ff00ff" }, + { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "rotation": 105.23, "x": 109.99, "y": 0.2, "color": "15ff00ff" }, + { "name": "neck", "parent": "torso2", "length": 70.59, "rotation": 41.37, "x": 121.19, "y": 0.34, "color": "eaff00ff" }, + { "name": "head", "parent": "neck", "length": 105.5, "rotation": 9.82, "x": 70.59, "y": 0.03, "color": "eaff00ff" }, + { "name": "horn_front", "parent": "head", "length": 87.48, "rotation": 49.36, "x": 82.09, "y": -221.36, "color": "15ff00ff" }, + { "name": "front_arm_target", "parent": "horn_front", "rotation": -138.59, "x": 294.58, "y": 234.17, "color": "15ff00ff" }, + { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "rotation": 20.3, "x": 74.52, "y": -0.41, "color": "ffffffff" }, + { "name": "front_leg1", "parent": "hip", "length": 251.74, "rotation": -51.5, "x": 27.36, "y": -28.27, "color": "15ff00ff" }, + { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "rotation": 261.93, "x": 251.03, "y": 0.16, "color": "15ff00ff" }, + { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "rotation": 85.46, "x": 208.5, "y": -1.63, "color": "15ff00ff" }, + { + "name": "front_foot1", + "parent": "front_leg3", + "length": 57.79, + "rotation": 54.46, + "x": 118.19, + "y": -0.79, + "scaleX": 1.126, + "color": "15ff00ff" + }, + { + "name": "front_foot2", + "parent": "front_foot1", + "length": 56.19, + "rotation": -2.15, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "inheritRotation": false, + "color": "15ff00ff" + }, + { + "name": "front_foot3", + "parent": "front_foot2", + "length": 129.88, + "rotation": -2.7, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "color": "15ff00ff" + }, + { "name": "front_foot_goal", "parent": "root", "rotation": -0.94, "x": -45.79, "y": -28.67, "color": "ff0000ff" }, + { "name": "front_hand", "parent": "front_arm2", "length": 47.55, "rotation": -56.83, "x": 86.33, "y": 0.06, "color": "15ff00ff" }, + { + "name": "front_hand2", + "parent": "front_bracer", + "length": 58.18, + "rotation": 13.9, + "x": 39.98, + "y": -0.89, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "front_leg_goal", "parent": "front_foot_goal", "x": -106.06, "y": 115.58, "color": "ff0000ff" }, + { + "name": "front_thigh", + "parent": "spineboy_hip", + "length": 77.79, + "rotation": 163.34, + "x": 15.51, + "y": 17.01, + "color": "ffffffff" + }, + { + "name": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "rotation": 107.11, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "color": "ffffffff" + }, + { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "rotation": -45.22, "x": 113.44, "y": -15.21, "color": "ffffffff" }, + { "name": "head2", "parent": "neck2", "length": 249.64, "rotation": 11.65, "x": 23.01, "y": 3.47, "color": "ffffffff" }, + { "name": "horn_rear", "parent": "head", "length": 73.78, "rotation": 44.31, "x": 99.27, "y": -226.79, "color": "e07800ff" }, + { "name": "jaw", "parent": "head", "length": 203.76, "rotation": -140.14, "x": 29.36, "y": -40.15, "color": "ffff00ff" }, + { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "rotation": -49.62, "x": 77.92, "y": -0.1, "color": "ffffffff" }, + { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "rotation": -124.71, "x": 57.05, "y": -95.38, "color": "e07800ff" }, + { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "rotation": 123.56, "x": 109.56, "color": "e07800ff" }, + { "name": "rear_arm_target", "parent": "horn_rear", "rotation": -133.55, "x": 232.68, "y": 245.84, "color": "e07800ff" }, + { "name": "rear_leg1", "parent": "hip", "length": 226.27, "rotation": -54.76, "x": 55.19, "y": -71.25, "color": "e07800ff" }, + { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "rotation": -92.25, "x": 226.32, "y": 0.23, "color": "e07800ff" }, + { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "rotation": 82.81, "x": 172.31, "y": 2.21, "color": "e07800ff" }, + { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "rotation": 75.43, "x": 102.37, "y": -0.02, "color": "e07800ff" }, + { + "name": "rear_foot2", + "parent": "rear_foot1", + "length": 102.31, + "rotation": -6.13, + "x": 84.49, + "y": -0.34, + "inheritRotation": false, + "color": "e07800ff" + }, + { "name": "rear_foot_goal", "parent": "root", "x": 33.43, "y": 30.81, "color": "ff0000ff" }, + { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "rotation": -76.28, "x": 85.8, "y": 0.1, "color": "e07800ff" }, + { "name": "rear_leg_goal", "parent": "rear_foot_goal", "x": -127.51, "y": 75.99, "color": "ff0000ff" }, + { + "name": "saddle_strap_front1", + "parent": "saddle", + "length": 97.27, + "rotation": -148.11, + "x": -27.36, + "y": -73.38, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_front2", + "parent": "saddle_strap_front1", + "length": 102.74, + "rotation": -11.13, + "x": 97.29, + "y": 0.3, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_rear1", + "parent": "saddle", + "length": 38.62, + "rotation": 151.13, + "x": -33.34, + "y": 87.32, + "color": "ff7300ff" + }, + { "name": "saddle_strap_rear2", "parent": "saddle_strap_rear1", "length": 54.36, "x": 38.63, "y": -0.02, "color": "ff7300ff" }, + { + "name": "saddle_strap_rear3", + "parent": "saddle_strap_rear2", + "length": 44.04, + "rotation": 3.63, + "x": 54.86, + "y": 0.19, + "color": "ff7300ff" + }, + { "name": "spineboy_front_arm_goal", "parent": "saddle", "x": -50.7, "y": -96.93, "color": "ff0004ff" }, + { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08, "color": "ff0001ff" }, + { "name": "stirrup", "parent": "saddle", "length": 78.17, "rotation": -68.85, "x": -81.94, "y": -103.38, "color": "ff7300ff" }, + { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "rotation": -135, "x": -20.38, "y": -29.37, "color": "ff7300ff" }, + { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "rotation": 9.38, "x": 43.7, "color": "ff7300ff" }, + { "name": "tail1", "parent": "hip", "length": 162.53, "rotation": 162.92, "x": -20.86, "y": 6.87, "color": "eaff00ff" }, + { "name": "tail2", "parent": "tail1", "length": 130.02, "rotation": 30.3, "x": 162.53, "y": -0.82, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 141.06, "rotation": 6.88, "x": 130.02, "y": 0.1, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 126.25, "rotation": -18.86, "x": 141.05, "y": 0.64, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 91.06, "rotation": -22.34, "x": 126.25, "y": -0.47, "color": "eaff00ff" }, + { "name": "tongue1", "parent": "head", "length": 55.11, "rotation": -129.04, "x": 20.81, "y": -104.75, "color": "ffff00ff" }, + { "name": "tongue2", "parent": "tongue1", "length": 44.66, "rotation": 8.93, "x": 55.59, "y": 0.93, "color": "fff200ff" }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "rotation": 12.86, "x": 44.26, "y": -0.2, "color": "fff200ff" } +], +"slots": [ + { "name": "back_hand", "bone": "back_hand", "attachment": "back_hand" }, + { "name": "back_arm", "bone": "back_arm", "attachment": "back_arm" }, + { "name": "back_bracer", "bone": "back_bracer", "attachment": "back_bracer" }, + { "name": "back_knee", "bone": "back_knee", "attachment": "back_knee" }, + { "name": "raptor_horn_back", "bone": "horn_rear", "attachment": "raptor_horn_back" }, + { "name": "raptor_tongue", "bone": "root", "attachment": "raptor_tongue" }, + { "name": "raptor_hindleg_back", "bone": "rear_leg1", "attachment": "raptor_hindleg_back" }, + { "name": "raptor_arm_back", "bone": "root", "attachment": "raptor_arm_back" }, + { "name": "raptor_body", "bone": "torso1", "attachment": "raptor_body" }, + { "name": "back_thigh", "bone": "back_thigh", "attachment": "back_thigh" }, + { "name": "raptor_saddle_strap_front", "bone": "saddle_strap_front1", "attachment": "raptor_saddle_strap_front" }, + { "name": "raptor_saddle_strap_rear", "bone": "saddle_strap_rear1", "attachment": "raptor_saddle_strap_rear" }, + { "name": "raptor_saddle_w_shadow", "bone": "saddle", "attachment": "raptor_saddle_w_shadow" }, + { "name": "raptor_saddle_noshadow", "bone": "saddle" }, + { "name": "raptor_front_arm", "bone": "root", "attachment": "raptor_front_arm" }, + { "name": "raptor_front_leg", "bone": "front_leg1", "attachment": "raptor_front_leg" }, + { "name": "raptor_jaw", "bone": "jaw", "attachment": "raptor_jaw" }, + { "name": "neck", "bone": "neck2", "attachment": "neck" }, + { "name": "spineboy_torso", "bone": "spineboy_torso", "attachment": "torso" }, + { "name": "head", "bone": "head2", "attachment": "head" }, + { "name": "eyes_open", "bone": "head2", "attachment": "eyes_open" }, + { "name": "mouth_smile", "bone": "head2", "attachment": "mouth_smile" }, + { "name": "visor", "bone": "head2", "attachment": "visor" }, + { "name": "raptor_horn", "bone": "horn_front", "attachment": "raptor_horn" }, + { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, + { "name": "stirrup_back", "bone": "stirrup", "attachment": "stirrup_back" }, + { "name": "lower_leg", "bone": "lower_leg", "attachment": "lower_leg" }, + { "name": "stirrup_strap", "bone": "stirrup", "attachment": "stirrup_strap" }, + { "name": "stirrup_front", "bone": "stirrup", "attachment": "stirrup_front" }, + { "name": "gun", "bone": "gun", "attachment": "gun_nohand" }, + { "name": "front_arm", "bone": "front_arm", "attachment": "front_arm" }, + { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, + { "name": "front_hand", "bone": "front_hand2", "attachment": "front_hand" } +], +"ik": [ + { + "name": "front_arm_goal", + "bones": [ "front_arm", "front_bracer" ], + "target": "front_arm_target" + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_arm_goal", + "bones": [ "back_arm", "back_bracer" ], + "target": "rear_arm_target" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "spineboy_front_leg_goal", + "bones": [ "front_thigh", "lower_leg" ], + "target": "spineboy_front_arm_goal", + "bendPositive": false + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "bendPositive": false + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + } +], +"skins": { + "default": { + "back_arm": { + "back_arm": { "x": 29.71, "y": 2.04, "rotation": 16.75, "width": 91, "height": 57 } + }, + "back_bracer": { + "back_bracer": { "x": 13.19, "y": -4.28, "rotation": -0.72, "width": 77, "height": 55 } + }, + "back_hand": { + "back_hand": { "x": 18.6, "y": 4.23, "rotation": -10.99, "width": 72, "height": 68 } + }, + "back_knee": { + "back_knee": { "x": 45.77, "y": 20.47, "rotation": 74.22, "width": 97, "height": 134 } + }, + "back_thigh": { + "back_thigh": { "x": 37.85, "y": -4.36, "rotation": 19.24, "width": 78, "height": 47 } + }, + "eyes_open": { + "eyes_open": { "x": 93.23, "y": -25.45, "rotation": -70.57, "width": 93, "height": 89 } + }, + "front_arm": { + "front_arm": { "x": 31.38, "y": 5.09, "rotation": 14.02, "width": 96, "height": 60 } + }, + "front_bracer": { + "front_bracer": { "x": 11.68, "y": -1.36, "rotation": -6.28, "width": 81, "height": 58 } + }, + "front_hand": { + "front_hand": { "x": 35.7, "y": 7.84, "rotation": -13.96, "width": 82, "height": 75 }, + "front_open_hand": { "x": 42.54, "y": 4.62, "rotation": 62.19, "width": 86, "height": 87 }, + "gun": { "x": 98.9, "y": 22.97, "rotation": 56.34, "width": 213, "height": 206 } + }, + "front_thigh": { + "front_thigh": { "x": 45.7, "y": -3.1, "rotation": 16.65, "width": 114, "height": 58 } + }, + "gun": { + "gun_nohand": { + "type": "mesh", + "uvs": [ 0.71081, 0.16149, 0.85807, 0.41784, 1, 0.6649, 1, 1, 0.71457, 1, 0.49802, 0.6905, 0.30182, 0.41009, 0, 0.58226, 0, 0.1174, 0.27187, 0.12429, 0.24857, 0, 0.36658, 0, 0.61804, 0, 0.70575, 0.53546, 0.53668, 0.26855 ], + "triangles": [ 3, 13, 2, 5, 13, 4, 3, 4, 13, 13, 6, 14, 13, 5, 6, 13, 1, 2, 6, 8, 9, 6, 7, 8, 13, 14, 1, 14, 0, 1, 6, 9, 14, 9, 11, 14, 14, 12, 0, 14, 11, 12, 9, 10, 11 ], + "vertices": [ 23.48, 50.63, 83.86, 46.32, 142.05, 42.17, 197.91, 3.34, 163.7, -45.86, 86.15, -47.34, 15.9, -48.68, 8.42, -120.68, -69.06, -66.81, -35.32, -20.73, -58.83, -10.35, -44.69, 9.99, -14.55, 53.35, 85.21, 6.43, 20.45, 8.2 ], + "hull": 13, + "edges": [ 14, 12, 6, 8, 6, 4, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 8, 10, 10, 12, 6, 26, 10, 26, 4, 2, 26, 2, 22, 28, 28, 26, 12, 28, 2, 0, 0, 24, 28, 0, 18, 12 ], + "width": 210, + "height": 203 + } + }, + "head": { + "head": { "x": 132.33, "y": 1.19, "rotation": -70.57, "width": 271, "height": 298 } + }, + "lower_leg": { + "lower_leg": { "x": 76.2, "y": 22.2, "rotation": 66.28, "width": 146, "height": 195 } + }, + "mouth_smile": { + "mouth_smile": { "x": 27.66, "y": -31.33, "rotation": -70.57, "width": 93, "height": 59 } + }, + "neck": { + "neck": { "x": 15.09, "y": -1.66, "rotation": -58.91, "width": 36, "height": 41 } + }, + "raptor_arm_back": { + "raptor_arm_back": { + "type": "mesh", + "uvs": [ 0.38711, 0.29362, 0.31382, 0.46513, 0.29242, 0.51521, 0.32475, 0.4931, 0.57587, 0.32138, 0.63254, 0.28263, 0.71632, 0.34507, 0.94948, 0.51888, 0.94947, 0.60129, 1, 0.65257, 1, 0.90624, 0.95462, 0.99934, 0.88957, 0.83204, 0.80294, 0.99998, 0.75236, 0.75696, 0.6654, 0.713, 0.62288, 0.63242, 0.58194, 0.65031, 0.22478, 0.80641, 0.07791, 0.73315, 0.07825, 0.66549, 0.07984, 0.34306, 0, 0.29728, 0, 0, 0.32334, 0 ], + "triangles": [ 6, 15, 16, 5, 6, 16, 5, 16, 4, 6, 7, 15, 16, 17, 4, 8, 15, 7, 14, 15, 8, 12, 14, 8, 12, 8, 9, 12, 9, 10, 11, 12, 10, 13, 14, 12, 17, 3, 4, 19, 20, 2, 18, 19, 2, 18, 2, 3, 18, 3, 17, 21, 22, 23, 24, 21, 23, 0, 21, 24, 1, 21, 0, 1, 20, 21, 2, 20, 1 ], + "vertices": [ 2, 37, 36.95, 33.31, 0.91666, 38, 68.53, 41.05, 0.08333, 2, 37, 66.01999, 20.35, 0.76813, 38, 41.41, 24.39, 0.23186, 2, 37, 74.51, 16.57, 0.64468, 38, 33.49, 19.53, 0.35531, 2, 37, 70.89, 21.97, 0.29071, 38, 39.99, 19.45999, 0.70928, 3, 37, 42.77, 63.89, 0.11483, 38, 90.47, 18.95, 0.60854, 46, -17.2, 9, 0.2766, 2, 38, 101.86, 18.83, 0.45955, 46, -14.38, 20.04, 0.54044, 2, 38, 106.47, 2.08, 0.0625, 46, 2.98, 20.56, 0.9375, 1, 46, 51.32, 21.98, 1, 1, 46, 60.41, 11.1, 1, 1, 46, 72.39, 9.60999, 1, 1, 46, 100.37, -23.87, 1, 1, 46, 104.96, -40.9, 1, 1, 46, 78.37, -25.61, 1, 1, 46, 86.05, -56.84, 1, 1, 46, 52.92, -30.04, 1, 2, 38, 62.24, -43.92, 0.0625, 46, 37.18999, -33.33, 0.9375, 2, 38, 64.89, -28.65, 0.3125, 46, 22.98, -27.14, 0.6875, 2, 38, 57.69, -27.17, 0.30612, 46, 19.83, -33.78, 0.69387, 2, 37, 124.19, 3.83, 0.19395, 38, -5.09, -14.23, 0.80604, 2, 37, 110.77, -19.65, 0.3125, 38, -16.87999, 10.1, 0.6875, 2, 37, 99.14, -19.2, 0.51612, 38, -9.93, 19.44, 0.48386, 2, 37, 43.73, -17.03, 0.9375, 38, 23.17, 63.92, 0.0625, 1, 37, 35.41, -29.77, 1, 1, 37, -15.68, -28.02, 1, 1, 37, -13.87, 24.65, 1 ], + "hull": 25, + "edges": [ 44, 46, 44, 42, 38, 36, 32, 30, 30, 28, 28, 26, 24, 22, 18, 16, 16, 14, 46, 48, 38, 4, 6, 4, 6, 36, 42, 40, 40, 38, 4, 2, 2, 0, 40, 2, 10, 32, 36, 34, 34, 32, 10, 8, 8, 6, 34, 8, 14, 12, 12, 10, 12, 30, 18, 20, 22, 20, 26, 24, 48, 0 ], + "width": 163, + "height": 172 + } + }, + "raptor_body": { + "raptor_body": { + "type": "mesh", + "uvs": [ 0.89014, 0.11136, 1, 0.22194, 1, 0.42847, 0.88179, 0.38589, 0.874, 0.47986, 0.84783, 0.51728, 0.82504, 0.54984, 0.82403, 0.61606, 0.82305, 0.67972, 0.74042, 0.86709, 0.61596, 0.93097, 0.49649, 0.90968, 0.41186, 0.71379, 0.36955, 0.70086, 0.32823, 0.68824, 0.30082, 0.69962, 0.27515, 0.71028, 0.25301, 0.71948, 0.22568, 0.73082, 0.20832, 0.72362, 0.19092, 0.7164, 0.15952, 0.70337, 0.1301, 0.69116, 0.09227, 0.67546, 0.06029, 0.63165, 0.02855, 0.58817, 0, 0.49874, 0.05045, 0.53494, 0.08267, 0.54507, 0.11815, 0.55623, 0.14733, 0.54161, 0.17913, 0.52568, 0.20324, 0.5136, 0.22867, 0.50087, 0.24871, 0.47664, 0.27523, 0.44458, 0.32026, 0.39015, 0.37517, 0.35747, 0.43476, 0.32201, 0.4893, 0.35534, 0.56021, 0.39867, 0.61587, 0.40674, 0.67769, 0.4157, 0.69094, 0.31314, 0.69362, 0.14742, 0.79219, 0.08354, 0.51541, 0.74573, 0.62393, 0.75425, 0.70856, 0.7287, 0.76132, 0.63288, 0.7566, 0.49454, 0.80613, 0.27517, 0.65885, 0.59037, 0.53929, 0.54937, 0.42632, 0.52207, 0.3246, 0.55241, 0.22715, 0.618, 0.10574, 0.61341, 0.03969, 0.56109, 0.77916, 0.39461, 0.37556, 0.53721, 0.27743, 0.58416, 0.16958, 0.61582, 0.07259, 0.58715, 0.87545, 0.31683, 0.85488, 0.21417, 0.81012, 0.17403, 0.83214, 0.25662, 0.83823, 0.32214, 0.84622, 0.41719, 0.59954, 0.57003, 0.49074, 0.53763, 0.76917, 0.43888, 0.75912, 0.56845, 0.871, 0.3701, 0.85431, 0.43545, 0.89558, 0.32412, 0.90105, 0.22877, 0.91523, 0.20564, 0.93086, 0.219, 0.93446, 0.25858, 0.91956, 0.2776, 0.9061, 0.26423, 0.9415, 0.25929, 0.93589, 0.21545, 0.91669, 0.19192, 0.89297, 0.22201, 0.90245, 0.28513, 0.92006, 0.281, 0.92143, 0.29619, 0.94856, 0.2643, 0.19894, 0.61694, 0.13973, 0.61469, 0.25158, 0.60156, 0.88779, 0.26675 ], + "triangles": [ 13, 60, 12, 12, 71, 46, 46, 70, 47, 11, 12, 46, 47, 11, 46, 10, 11, 47, 13, 14, 55, 15, 93, 14, 16, 56, 15, 58, 26, 27, 28, 58, 27, 63, 28, 29, 63, 58, 28, 25, 26, 58, 25, 58, 63, 57, 63, 29, 92, 29, 30, 57, 29, 92, 24, 25, 63, 24, 63, 57, 23, 24, 57, 92, 23, 57, 22, 23, 92, 62, 22, 92, 21, 22, 62, 20, 21, 91, 92, 30, 62, 91, 21, 62, 62, 30, 31, 91, 62, 31, 31, 32, 93, 20, 91, 56, 56, 19, 20, 17, 19, 56, 18, 19, 17, 93, 91, 31, 55, 34, 35, 33, 34, 55, 61, 33, 55, 61, 32, 33, 93, 32, 61, 56, 91, 93, 56, 93, 15, 16, 17, 56, 36, 37, 54, 60, 35, 36, 54, 60, 36, 60, 55, 35, 61, 55, 14, 93, 61, 14, 60, 13, 55, 12, 60, 54, 39, 54, 37, 39, 37, 38, 71, 54, 39, 40, 71, 39, 53, 71, 40, 53, 40, 41, 12, 54, 71, 46, 71, 53, 66, 45, 0, 44, 45, 66, 1, 84, 85, 65, 66, 0, 0, 85, 65, 85, 86, 65, 85, 0, 1, 78, 85, 84, 79, 78, 84, 78, 86, 85, 77, 86, 78, 77, 78, 79, 67, 66, 65, 83, 80, 79, 84, 83, 79, 77, 79, 80, 84, 90, 83, 82, 77, 80, 1, 90, 84, 94, 65, 86, 94, 86, 77, 94, 77, 82, 67, 65, 94, 51, 44, 66, 51, 66, 67, 81, 82, 80, 83, 88, 81, 87, 94, 82, 87, 82, 81, 87, 81, 88, 88, 90, 89, 87, 88, 89, 80, 83, 81, 90, 88, 83, 43, 44, 51, 64, 67, 94, 64, 94, 87, 68, 67, 64, 51, 67, 68, 76, 64, 87, 76, 87, 89, 74, 68, 64, 74, 64, 76, 3, 74, 76, 59, 43, 51, 59, 51, 68, 69, 59, 68, 74, 69, 68, 69, 74, 3, 90, 1, 2, 89, 90, 2, 76, 89, 2, 3, 76, 2, 75, 69, 3, 4, 75, 3, 75, 72, 69, 5, 75, 4, 5, 72, 75, 72, 59, 69, 59, 42, 43, 72, 42, 59, 50, 42, 72, 50, 72, 5, 6, 50, 5, 73, 50, 6, 52, 70, 42, 50, 52, 42, 73, 52, 50, 7, 73, 6, 49, 73, 7, 52, 73, 49, 8, 49, 7, 48, 52, 49, 48, 49, 8, 47, 52, 48, 70, 53, 41, 70, 41, 42, 46, 53, 70, 47, 70, 52, 9, 48, 8, 47, 48, 9, 10, 47, 9 ], + "vertices": [ 1, 16, 147.48, -145.48, 1, 1, 16, 89.4, -281.62, 1, 1, 16, -28.24, -285.93, 1, 1, 16, -14.58, -194.68, 1, 4, 12, 238.39, -84.13, 0.20851, 15, 32.09999, -140.85, 0.19336, 16, -61.96, -132.26, 0.42115, 35, 129.57, 6.39, 0.17696, 5, 2, 332.7, 63.71, 0.06905, 12, 199.57, -83.03, 0.29424, 15, 3.69, -114.37, 0.2194, 16, -85.43, -101.32, 0.30859, 35, 127.34, -26.64, 0.1087, 5, 2, 307.08, 43.5, 0.11018, 12, 166.95, -82.12999, 0.37282, 15, -20.18, -92.14, 0.24572, 16, -105.18, -75.33999, 0.21862, 35, 123.08, -64.79, 0.05264, 4, 2, 307.75, 5.7, 0.18627, 12, 143.25, -111.59, 0.58009, 15, -57.43, -98.57, 0.12363, 16, -142.98, -75.33, 0.10999, 2, 2, 308.7, -30.55, 0.25, 12, 120.75, -140.04, 0.75, 2, 2, 213.94, -142.7, 0.75, 12, -23.83, -165.45, 0.25, 3, 2, 64.44999, -187.34, 0.31139, 58, -158.45, 158.33, 0.10379, 1, 84.16, -190.98, 0.5848, 1, 1, -61.47, -178.84, 1, 4, 58, 118.47, 114.74, 0.07383, 59, 17.17, 122.49, 0.17504, 60, -100.71, 132.55, 0.06818, 1, -166.91, -67.94999, 0.68294, 4, 58, 170.4, 123.13, 0.06537, 59, 66.71, 104.77, 0.20999, 60, -53.08, 110.21, 0.12016, 1, -217.69, -61.33, 0.60447, 6, 58, 221.11, 131.31, 0.02179, 59, 115.07, 87.47, 0.23058, 60, -6.58, 88.39, 0.16258, 61, -168.92, 31, 0.02826, 62, -282.82, -90.19, 0.029, 1, -267.66, -55.14, 0.52776, 5, 59, 146.51, 86.08, 0.23635, 60, 26.66, 83.39, 0.19338, 61, -134.99, 41.34, 0.06624, 62, -257.52, -60.65, 0.06962, 1, -298.87, -61.99, 0.43436, 5, 59, 178.73, 86.41, 0.22521, 60, 56.68, 81.29, 0.20997, 61, -107.13, 46.31, 0.11271, 62, -232.44, -51.26, 0.12148, 1, -328.68, -69.24, 0.3306, 5, 59, 203.26, 86.51, 0.21603, 60, 83.06, 77.01999, 0.22457, 61, -79.56, 53.53, 0.13939, 62, -210.89, -28.3, 0.15618, 1, -354.01, -75.41, 0.26379, 5, 59, 238.06, 85.41, 0.20114, 60, 115.65, 74.66, 0.2315, 61, -49.53, 60.58, 0.16455, 62, -185.49, -14.98, 0.19123, 1, -385.33, -83.15, 0.21156, 5, 59, 255.33, 78.85, 0.18224, 60, 133.83, 63.18, 0.23194, 61, -27.04, 56.84, 0.18907, 62, -163.58, -5.26, 0.22658, 1, -406.45, -79.89, 0.17015, 5, 59, 275.48, 71.62, 0.16169, 60, 152.97, 53.58, 0.22885, 61, -5.82, 53.94, 0.21292, 62, -142.85, 0.11, 0.26159, 1, -427.72, -77.47, 0.13493, 5, 59, 313.81, 53.61, 0.14198, 60, 188.04, 35.82, 0.22293, 61, 31.84, 49.3, 0.23478, 62, -106.46, 7.49, 0.29326, 1, -465.96, -72.58999, 0.10702, 5, 59, 345.74, 45.54, 0.12502, 60, 219.6, 19.28, 0.2179, 61, 68.31, 43.02, 0.25622, 62, -70.12999, 18.19, 0.32248, 1, -502.09, -68.19, 0.07835, 4, 59, 390.81, 21.3, 0.11758, 60, 261.62, -3.66, 0.22607, 61, 114.55, 37.83, 0.29087, 62, -26.15, 30.34, 0.36547, 4, 59, 423.87, -11.11, 0.10536, 60, 291.46, -39.06, 0.21954, 61, 154.83, 14.99, 0.30098, 62, 19.91, 25.67, 0.37409, 4, 59, 456.68, -43.27, 0.09949, 60, 321.06, -74.19999, 0.21749, 61, 194.79, -7.66, 0.30788, 62, 65.62, 21.04, 0.37513, 4, 59, 480.34, -100.28, 0.10045, 60, 339.2, -133.2, 0.22026, 61, 232.3, -56.69, 0.31103, 62, 119.7, -8.68999, 0.36824, 4, 59, 424.34, -67.51999, 0.10379, 60, 286.57, -95.27, 0.23087, 61, 169.77, -39.4, 0.30828, 62, 55.51, -18.08, 0.35705, 4, 59, 387.08, -53.84, 0.11505, 60, 250.77, -78.11, 0.2454, 61, 130.24, -35.75, 0.30092, 62, 17.87, -30.67, 0.3386, 4, 59, 346.04, -38.78, 0.13471, 60, 211.34, -59.22, 0.26271, 61, 86.7, -31.72, 0.2888, 62, -23.59, -44.54, 0.31376, 5, 58, 449.17, 125.97, 0.02419, 59, 311.45, -35.25, 0.16384, 60, 175.89, -56.83, 0.2727, 61, 51.53, -43.14, 0.26317, 62, -52.88, -67.87, 0.27607, 5, 58, 418.38, 93.72, 0.05913, 59, 269.72, -40.64, 0.19681, 60, 135.19, -53.82, 0.27688, 61, 13.42, -53.11, 0.23219, 62, -82.03, -93.66, 0.23497, 5, 58, 390.82, 86.58, 0.10638, 59, 241.19, -39.8, 0.2354, 60, 105.59, -52.93, 0.27331, 61, -16.25, -62.16, 0.19459, 62, -108.34, -111.24, 0.19028, 5, 58, 364.8, 62.48, 0.14347, 59, 207.71, -42.14, 0.28099, 60, 73.33, -49.43, 0.26867, 61, -46.11, -70.49, 0.15764, 62, -129.51, -133.56, 0.1492, 5, 58, 345.49, 47.53, 0.18499, 59, 182.34, -50.62, 0.33114, 60, 45.87, -56.62, 0.25881, 61, -71.57, -84.96, 0.1174, 62, -150.85, -153.35, 0.10763, 5, 58, 319.95, 15.15, 0.23755, 59, 145.6, -61.95, 0.39396, 60, 9.60999, -63.26, 0.24619, 61, -101.06, -105.58, 0.06443, 62, -165.65, -187.83, 0.05784, 3, 58, 276.58, -30.61, 0.29942, 59, 85.52, -81.11, 0.46774, 60, -52.01, -76.62, 0.23283, 3, 58, 214.5, -70.36, 0.32855, 59, 11.97, -85.98, 0.48601, 60, -125.69, -74.48, 0.18543, 2, 58, 147.14, -113.5, 0.59565, 59, -67.83999, -91.26, 0.40433, 2, 2, -113.14, 135.84, 0.24192, 58, 91.72, -112.59, 0.75807, 2, 2, -42.12, 116.77, 0.14515, 58, 18.2, -111.17, 0.85484, 1, 2, 44.2, 107.1, 1, 2, 2, 140.09, 96.35, 0.22579, 12, 72.58999, 65.41, 0.7742, 4, 2, 137.69, 169.35, 0.05644, 12, 117.5, 123, 0.24355, 15, 78.3, 94.48, 0.2125, 16, 23.7, 91.74, 0.4875, 2, 15, 171.15, 111.98, 0.25, 16, 118.17, 93.15, 0.75, 1, 16, 158.96, -25.58, 1, 1, 1, -40.63, -86.01, 1, 3, 2, 67.33999, -86.66, 0.33215, 58, -137.02, 59.92, 0.08303, 1, 92.54, -90.61, 0.5848, 2, 2, 170.13, -66.29, 0.75, 12, -8.53, -78.72, 0.25, 2, 2, 231.74, -8.12, 0.4, 12, 76.03, -73.51999, 0.6, 4, 2, 222.04, 70.41, 0.17551, 12, 118.9, -7, 0.55823, 15, -6.58, -3.99, 0.17739, 16, -76.73, 9.18, 0.08884, 1, 16, 50.43, -46.56, 1, 1, 12, -9.88, 20.65, 1, 2, 2, -53.22, 20.53, 0.2, 58, 5.8, -15.09, 0.8, 3, 2, -180.71, 32.22, 0.08564, 58, 132.35, 4.23999, 0.56215, 59, -23.98, 19.01, 0.35219, 3, 58, 246.39, 57.53, 0.30273, 59, 101.61, 10.65, 0.46989, 60, -27.28, 13.2, 0.22737, 5, 58, 346.99, 126.85, 0.13479, 59, 223.17, 22.83, 0.28279, 60, 94.88, 13.77, 0.24481, 61, -47.85, -3.72, 0.17322, 62, -158.02, -73.16, 0.16438, 4, 59, 367.51, -9.96, 0.14656, 60, 235.45, -32.57, 0.23073, 61, 100.06, 1.62, 0.29607, 62, -24.81, -8.63, 0.32661, 4, 59, 440.24, -55.6, 0.10821, 60, 303.52, -84.91, 0.21897, 61, 182.07, -23.8, 0.31097, 62, 60.48, 1.14, 0.36182, 3, 12, 174.99, 22.22, 0.2, 15, 54.82, -19.14, 0.6, 16, -18.79999, -16.2, 0.2, 3, 58, 189.25, 30.83, 0.33253, 59, 38.68, 14.84, 0.48076, 60, -89.52, 23.34, 0.18669, 5, 58, 295.08, 91.08, 0.22891, 59, 160.45, 16.54, 0.38754, 60, 31.85, 13.48, 0.2306, 61, -106.86, -25.89, 0.08042, 62, -203.08, -117.24, 0.0725, 5, 58, 414.43, 146.25, 0.07359, 59, 291.61, 7.27, 0.20198, 60, 161.53, -8.2, 0.23762, 61, 22.27, -1.17999, 0.24024, 62, -94.86, -42.56, 0.24654, 4, 59, 404.01, -32.87, 0.12351, 60, 269.61, -58.84, 0.22261, 61, 141.21, -11.13, 0.30609, 62, 17.98, -3.72, 0.34777, 1, 16, 26.4, -166.06, 1, 1, 16, 87.21, -106.12, 1, 1, 16, 108.19, -49.62, 1, 2, 16, 61.73, -82.12999, 0.50021, 35, 4.42, 52.83, 0.49978, 2, 16, 22.84, -109.4, 0.50021, 35, 51.52, 46.73, 0.49978, 4, 12, 247.12, -50.52, 0.06545, 15, 60.86, -121.4, 0.06069, 16, -30.3, -118, 0.49079, 35, 96.58, 17.21999, 0.38305, 1, 2, 26.73, 14.8, 1, 2, 2, -107.97, 25.67, 0.24192, 58, 60.17, -6.91, 0.75807, 4, 2, 235.53, 102.96, 0.0761, 12, 150.1, 9.35, 0.35533, 15, 27.64, -12.34, 0.41675, 16, -44.43, -4.87, 0.1518, 3, 2, 227.15, 28.49, 0.31015, 12, 95.96, -42.46, 0.60548, 15, -47.23, -15.44, 0.08435, 2, 16, 5.19, -153.1, 0.87618, 35, 90.96, 71.21, 0.12381, 4, 12, 243.13, -60.59, 0.10669, 15, 51.21, -126.33, 0.09893, 16, -40.65, -121.21, 0.47072, 35, 105.71, 17.33, 0.32363, 1, 16, 23.69, -185.21, 1, 1, 16, 79.64, -175.94, 1, 1, 16, 93.96, -187.56, 1, 1, 16, 87.07, -206.55, 1, 1, 16, 64.19999, -216.74, 1, 1, 16, 52.23, -203.68, 1, 1, 16, 59.24, -187.03, 1, 1, 16, 64.26, -223.8, 1, 1, 16, 89.44, -211.41, 1, 1, 16, 102.04, -186.95, 1, 1, 16, 83.1, -166.14, 1, 1, 16, 46.84, -186.41, 1, 1, 16, 50.32, -204.36, 1, 1, 16, 41.7, -206.59, 1, 1, 16, 61.87, -230.97, 1, 5, 58, 374.97, 143.6, 0.10291, 59, 256.29, 17.42, 0.23985, 60, 127.43, 2.07, 0.2431, 61, -13.35, -3.05, 0.20854, 62, -128.14, -55.46, 0.20557, 4, 59, 327.21, 4.42, 0.17789, 60, 196.28, -19.32, 0.24248, 61, 58.71, -1.04999, 0.28055, 62, -62.24, -26.21, 0.29905, 5, 58, 318.32, 113.62, 0.17774, 59, 192.26, 20.14, 0.33383, 60, 64.19, 12.44, 0.24171, 61, -76.55, -13.67, 0.12849, 62, -182.56, -89.31, 0.11821, 2, 16, 56.98, -162.99, 0.89259, 35, 57.54, 112, 0.1074 ], + "hull": 46, + "edges": [ 22, 20, 20, 18, 18, 16, 6, 4, 4, 2, 90, 88, 54, 52, 52, 50, 24, 22, 88, 86, 86, 84, 8, 6, 24, 26, 26, 28, 72, 74, 74, 76, 70, 72, 46, 48, 48, 50, 54, 56, 56, 58, 80, 82, 82, 84, 76, 78, 78, 80, 8, 10, 10, 12, 12, 14, 14, 16, 0, 90, 0, 2, 62, 64, 64, 66, 40, 42, 58, 60, 60, 62, 42, 44, 44, 46, 66, 68, 68, 70, 32, 34, 34, 36, 52, 116, 116, 126, 126, 114, 114, 184, 184, 124, 124, 182, 182, 112, 112, 186, 186, 122, 122, 110, 110, 120, 120, 108, 108, 142, 142, 106, 106, 140, 140, 104, 92, 94, 94, 96, 96, 98, 98, 146, 146, 100, 100, 144, 144, 118, 118, 102, 8, 150, 150, 138, 138, 136, 136, 134, 134, 132, 156, 154, 154, 164, 164, 162, 162, 160, 160, 158, 158, 156, 180, 178, 178, 174, 174, 188, 188, 172, 170, 168, 28, 30, 30, 32, 36, 38, 38, 40 ], + "width": 1219, + "height": 570 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "mesh", + "uvs": [ 0.39562, 0.1396, 0.3877, 0.30212, 0.3123, 0.41784, 0.27287, 0.47835, 0.33388, 0.4507, 0.54879, 0.35328, 0.64092, 0.31152, 0.73024, 0.36529, 1, 0.5277, 1, 0.86606, 0.93242, 1, 0.86176, 0.80967, 0.75576, 0.99765, 0.71748, 1, 0.70276, 0.77442, 0.62031, 0.73448, 0.58792, 0.64519, 0.53561, 0.6582, 0.13448, 0.75798, 0, 0.69218, 0.01846, 0.56357, 0.05498, 0.30917, 0, 0.27863, 0, 0.12423, 0, 0, 0.19596, 0, 0.40242, 0, 0.24536, 0.1924, 0.21678, 0.0811 ], + "triangles": [ 0, 28, 26, 23, 25, 28, 28, 25, 26, 23, 24, 25, 6, 7, 16, 6, 16, 5, 15, 16, 7, 7, 14, 15, 8, 14, 7, 11, 14, 8, 11, 8, 9, 12, 14, 11, 13, 14, 12, 10, 11, 9, 17, 4, 5, 16, 17, 5, 18, 19, 3, 18, 3, 4, 18, 4, 17, 27, 28, 0, 27, 22, 23, 27, 23, 28, 1, 27, 0, 21, 22, 27, 21, 27, 1, 2, 21, 1, 2, 20, 21, 3, 20, 2, 19, 20, 3 ], + "vertices": [ 2, 13, 3.06, 31.88, 0.51075, 12, 66.56, -109.48, 0.48924, 1, 13, 35.87, 35.62, 1, 2, 13, 60.94, 27.12, 0.8464, 14, 46.49, 31.12, 0.15358, 2, 13, 74.05, 22.67, 0.3492, 14, 36.5, 21.53, 0.65078, 3, 13, 67, 31.58, 0.10937, 14, 47.66, 23.68, 0.78125, 27, -40.93, -19.44, 0.10937, 2, 14, 86.98, 31.24, 0.65078, 27, -25.75, 17.61, 0.3492, 2, 14, 103.83, 34.49, 0.34375, 27, -19.24, 33.49, 0.65625, 2, 14, 114.04, 19.51, 0.10937, 27, -1.11, 33.84, 0.89062, 1, 27, 53.62, 34.88, 1, 1, 27, 96.03, -19.16, 1, 1, 27, 104.2, -47.31, 1, 1, 27, 71.33999, -23.98, 1, 1, 27, 81.39, -64.61, 1, 1, 27, 76.8, -68.81, 1, 1, 27, 46.65, -34.25, 1, 2, 14, 73.12999, -45.76, 0.10937, 27, 31.14, -36.12, 0.89062, 2, 14, 73.98, -26.9, 0.34375, 27, 15.82, -25.09, 0.65625, 2, 14, 65.1, -26.69, 0.65078, 27, 10.78, -32.41, 0.3492, 3, 13, 133.56, 9.13, 0.10937, 14, -2.94, -25.03, 0.78125, 27, -27.84, -88.47, 0.10937, 2, 13, 123.67, -14.42, 0.3492, 14, -19.29, -5.39, 0.65078, 2, 13, 97.41, -15.43, 0.8464, 14, -8.08, 18.37, 0.15358, 1, 13, 45.46, -17.43, 1, 2, 13, 40.68999, -27.17, 0.45035, 12, -1.69, -93.8, 0.54964, 2, 13, -2.74, -29.63, 0.44352, 12, 18.99, -72.93, 0.55646, 1, 12, 32.11, -48.45, 1, 1, 12, 57.56, -67.43, 1, 1, 12, 84.38, -87.42, 1, 2, 13, 16.44, 5.21, 0.7182, 12, 46.31, -101.86, 0.28178, 2, 13, -4.51, 5.32, 0.48851, 12, 52.82, -81.94, 0.51147 ], + "hull": 27, + "edges": [ 38, 36, 32, 30, 30, 28, 28, 26, 24, 26, 24, 22, 22, 20, 20, 18, 18, 16, 44, 42, 38, 6, 38, 40, 40, 42, 6, 4, 4, 2, 40, 4, 8, 6, 36, 8, 32, 12, 42, 2, 52, 0, 0, 2, 16, 14, 14, 12, 30, 14, 36, 34, 34, 32, 12, 10, 10, 8, 34, 10, 48, 50, 50, 52, 44, 46, 46, 48, 50, 56, 56, 54 ], + "width": 162, + "height": 203 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "mesh", + "uvs": [ 0.55116, 0.17817, 0.6279, 0.36027, 0.6671, 0.4533, 0.64879, 0.51527, 0.53553, 0.56893, 0.32335, 0.66946, 0.28674, 0.72086, 0.32538, 0.804, 0.36258, 0.80144, 0.42056, 0.79744, 0.61015, 0.78435, 0.84813, 0.84028, 1, 0.93854, 0.62439, 0.91738, 0.72812, 1, 0.58574, 1, 0.36707, 0.96667, 0.26306, 0.95082, 0.16266, 0.93552, 0.03859, 0.72237, 0, 0.66946, 0.0374, 0.62999, 0.1647, 0.49562, 0.23731, 0.4568, 0.27019, 0.43923, 0.28063, 0.43364, 0.223, 0.4057, 0.12565, 0.35851, 0, 0.29759, 0, 0.1524, 0, 0, 0.32132, 0, 0.32222, 0.22778, 0.4493, 0.38031, 0.47664, 0.44361, 0.4615, 0.47375, 0.35106, 0.53247, 0.20091, 0.65256, 0.18527, 0.72148, 0.25222, 0.86314, 0.30941, 0.88124, 0.55694, 0.89613, 0.55857, 0.89207, 0.47493, 0.85339, 0.6059, 0.91526, 0.39705, 0.89129, 0.13229, 0.09352, 0.36997, 0.45345, 0.37163, 0.43827, 0.32515, 0.39424, 0.23759, 0.34425, 0.34065, 0.47414 ], + "triangles": [ 46, 30, 31, 41, 42, 44, 43, 9, 10, 42, 43, 10, 41, 43, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 13, 44, 42, 14, 15, 13, 45, 8, 9, 45, 40, 8, 16, 40, 45, 17, 40, 16, 16, 45, 15, 15, 45, 44, 45, 41, 44, 15, 44, 13, 45, 9, 43, 45, 43, 41, 19, 21, 38, 20, 21, 19, 39, 38, 6, 39, 6, 7, 40, 39, 7, 40, 7, 8, 18, 19, 38, 18, 38, 39, 17, 39, 40, 18, 39, 17, 47, 25, 48, 24, 25, 47, 35, 48, 34, 47, 48, 35, 51, 24, 47, 23, 24, 51, 3, 34, 2, 35, 34, 3, 36, 51, 47, 36, 47, 35, 4, 35, 3, 36, 35, 4, 37, 22, 23, 21, 22, 37, 36, 37, 23, 36, 23, 51, 5, 37, 36, 5, 36, 4, 6, 37, 5, 38, 21, 37, 38, 37, 6, 29, 30, 46, 32, 31, 0, 46, 31, 32, 28, 29, 46, 46, 27, 28, 32, 50, 46, 50, 27, 46, 33, 32, 0, 33, 0, 1, 49, 50, 32, 33, 49, 32, 26, 27, 50, 26, 50, 49, 25, 26, 49, 48, 49, 33, 25, 49, 48, 34, 33, 1, 48, 33, 34, 34, 1, 2 ], + "vertices": [ 2, 20, 128.03, 88.47, 0.8504, 1, 158.83, -71.91, 0.14959, 2, 20, 219.55, 53.15, 0.77988, 21, -48.04, -38.58, 0.22011, 2, 20, 266.3, 35.09999, 0.53544, 21, -36.73, 10.22, 0.46455, 2, 20, 286.89, 9.79, 0.35166, 21, -14.56, 34.14, 0.64832, 2, 20, 281.54, -41.24, 0.09228, 21, 36.71, 36, 0.90771, 3, 20, 271.53, -136.86, 0.05786, 21, 132.77, 39.48, 0.71425, 22, 34.99, 78.76, 0.22787, 3, 21, 158.21, 55.17, 0.5308, 22, 52.65, 54.63, 0.38143, 23, 7.01, 85.54, 0.08776, 5, 21, 167.14, 99.49, 0.21498, 22, 97.55, 49.25, 0.35357, 23, 28.72, 45.87, 0.14219, 24, -21.26, 49.99, 0.22491, 25, -72.29, 25.96, 0.06431, 5, 21, 154.22, 105.55, 0.07537, 22, 102.57, 62.6, 0.23051, 23, 42.51, 49.55, 0.28379, 24, -7.06, 51.39, 0.27004, 25, -58.17, 28.03, 0.14026, 4, 22, 109.72, 83.39, 0.11607, 23, 64.08999, 55.23, 0.08123, 24, 15.12, 53.51, 0.36961, 25, -36.09, 31.19, 0.43307, 1, 25, 35.8, 41.81, 1, 1, 25, 128.11, 17.93, 1, 1, 25, 188.72, -29.42, 1, 2, 24, 93.29, -7.6, 0.47999, 25, 44.86, -26.17, 0.52, 2, 24, 133.17, -49.83, 0.776, 25, 86.69, -66.47, 0.22399, 2, 24, 78.78, -50.15, 0.76799, 25, 32.38, -69.36, 0.232, 1, 24, -4.91, -33.55, 1, 3, 22, 155.04, -5.13, 0.35917, 23, 17.87999, -32.5, 0.30632, 24, -44.62, -25.61, 0.33449, 4, 21, 254.98, 126.27, 0.10154, 22, 131.21, -36.2, 0.54211, 23, -21.24, -31.17, 0.20873, 24, -83.01999, -17.96999, 0.1476, 3, 21, 240.33, 7.81, 0.25586, 22, 11.94, -30.98, 0.61614, 23, -86.31, 68.9, 0.12797, 2, 21, 239.26, -23.1, 0.45486, 22, -18.95999, -32.37, 0.54513, 3, 20, 187.65, -209.73, 0.09777, 21, 216.66, -33.34999, 0.58892, 22, -30.97, -10.65, 0.3133, 2, 20, 163.85, -128.67, 0.19603, 21, 139.75, -68.26, 0.80396, 2, 20, 165.74, -94.49, 0.31962, 21, 105.59, -71.26, 0.68037, 2, 20, 166.39, -79.07, 0.46225, 21, 90.23, -72.76, 0.53774, 2, 20, 166.49, -74.17, 0.53785, 21, 85.42, -73.28, 0.46213, 2, 20, 141.54, -82.46, 0.73138, 21, 97.13, -96.82, 0.26861, 2, 20, 99.76, -97.08, 0.85324, 21, 117.34, -136.23, 0.14675, 2, 20, 45.01, -114.56, 0.83615, 1, -51.09, -135.29, 0.16384, 2, 20, -16.2, -74.76, 0.62989, 1, -42.95, -58.38, 0.3701, 2, 20, -74.73, -19.33, 0.31468, 1, -52.66, 17.54999, 0.68531, 2, 20, 1.67, 76.75, 0.25576, 1, 70.07, 18.78, 0.74423, 1, 20, 93.54, 4.13, 1, 2, 20, 185.14, -6.66, 0.75461, 21, 15.98, -64.26999, 0.24538, 2, 20, 217.11, -18.75, 0.50844, 21, 23.47, -30.93, 0.49154, 2, 20, 225.63, -32.91999, 0.32527, 21, 36.3, -20.5, 0.67472, 2, 20, 223, -84.73, 0.20192, 21, 87.96, -15.86, 0.79807, 3, 20, 235.61, -168.06, 0.0809, 21, 168.69, 8.29, 0.57147, 22, 6.74, 40.47, 0.34761, 3, 21, 191.79, 35.8, 0.32545, 22, 36, 19.62, 0.57243, 23, -31.14, 78.74, 0.10211, 4, 21, 206.64, 111.53, 0.10808, 22, 112.69, 10.82, 0.52067, 23, 6.25, 11.23, 0.23517, 24, -49.03, 19.43, 0.13606, 3, 22, 130.6, 26.41, 0.35067, 23, 29.35, 5.71, 0.28241, 24, -27.12, 10.25, 0.3669, 2, 24, 67.46, 3.16, 0.384, 25, 18.54999, -16.62999, 0.61599, 1, 25, 19.07, -14.51, 1, 2, 24, 36, 24.95, 0.384, 25, -13.89, 3.64, 0.61599, 2, 24, 86.23, -6.55, 0.48799, 25, 37.75, -25.46, 0.512, 4, 21, 164.9, 153.55, 0.02263, 22, 151.18, 56, 0.23908, 23, 65.44, 5.55, 0.19254, 24, 8.45, 4.27, 0.54574, 2, 20, -9.28, -17.5, 0.59605, 1, 7.72, -30.85, 0.40393, 2, 20, 195.9, -53.81, 0.42368, 21, 61.11, -47.06, 0.5763, 2, 20, 190.1, -48.45, 0.53231, 21, 56.61, -53.56, 0.46768, 2, 20, 161.26, -48.26, 0.79873, 21, 60.44, -82.12999, 0.20126, 2, 20, 120.37, -58.54, 0.85455, 21, 76.31, -121.18, 0.14544, 2, 20, 197.37, -69.23, 0.3355, 21, 76.17, -43.46, 0.66449 ], + "hull": 32, + "edges": [ 40, 38, 38, 36, 28, 30, 28, 26, 26, 24, 24, 22, 22, 20, 14, 12, 12, 10, 6, 4, 60, 62, 0, 62, 40, 42, 42, 44, 34, 36, 16, 14, 52, 50, 4, 2, 2, 0, 10, 8, 8, 6, 72, 74, 74, 76, 76, 78, 78, 80, 80, 90, 90, 88, 16, 18, 18, 20, 30, 32, 32, 34, 56, 58, 58, 60, 94, 96, 96, 98, 52, 54, 54, 56, 100, 98, 48, 50, 44, 46, 46, 48, 102, 94, 72, 70, 70, 68, 66, 68, 66, 64, 64, 92, 86, 84, 50, 96, 94, 48, 46, 102, 52, 98, 54, 100, 70, 6, 68, 4, 66, 2, 72, 8, 86, 20, 86, 82, 82, 88, 84, 26, 88, 26 ], + "width": 382, + "height": 514 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "mesh", + "uvs": [ 0.45041, 0.09352, 0.56933, 0.23361, 0.65294, 0.47296, 0.66353, 0.50822, 0.63174, 0.54254, 0.32383, 0.69723, 0.30068, 0.73875, 0.27934, 0.77704, 0.30417, 0.83513, 0.31058, 0.85014, 0.341, 0.85046, 0.45165, 0.85163, 0.59555, 0.81881, 0.91176, 0.92548, 1, 1, 0.56336, 0.96426, 0.48349, 0.9826, 0.29878, 0.98027, 0.22808, 0.98389, 0.15997, 0.98737, 0.15423, 0.95546, 0.13894, 0.87047, 0.07371, 0.78726, 0, 0.75299, 0, 0.7049, 0, 0.671, 0.11875, 0.64652, 0.16535, 0.52659, 0.28495, 0.47397, 0.2901, 0.45773, 0.29427, 0.4446, 0.20635, 0.40396, 0.06128, 0.33691, 0, 0.25247, 0, 0, 0.30793, 0, 0.27599, 0.20261, 0.40397, 0.31121, 0.48439, 0.45963, 0.48317, 0.48383, 0.47029, 0.51062, 0.22698, 0.67328, 0.17141, 0.7242, 0.17122, 0.78241, 0.22995, 0.89469, 0.24677, 0.90829, 0.28672, 0.9146, 0.46582, 0.91414 ], + "triangles": [ 15, 13, 14, 16, 47, 15, 15, 12, 13, 15, 47, 12, 18, 46, 17, 18, 45, 46, 17, 47, 16, 17, 46, 47, 47, 10, 11, 47, 46, 10, 47, 11, 12, 45, 18, 19, 44, 45, 20, 20, 45, 19, 20, 21, 44, 46, 9, 10, 46, 45, 9, 45, 44, 9, 21, 43, 44, 44, 8, 9, 44, 7, 8, 44, 43, 7, 21, 22, 43, 43, 22, 42, 43, 42, 7, 22, 23, 24, 24, 42, 22, 7, 42, 6, 42, 41, 6, 6, 41, 5, 24, 26, 42, 42, 26, 41, 24, 25, 26, 5, 40, 4, 5, 41, 40, 41, 28, 40, 26, 27, 41, 41, 27, 28, 40, 39, 4, 28, 29, 40, 40, 29, 39, 4, 39, 3, 39, 2, 3, 29, 30, 39, 39, 38, 2, 39, 30, 38, 38, 1, 2, 30, 37, 38, 38, 37, 1, 30, 31, 37, 31, 36, 37, 31, 32, 36, 32, 33, 36, 37, 0, 1, 37, 36, 0, 33, 34, 36, 36, 35, 0, 36, 34, 35 ], + "vertices": [ 1, 40, 53.94, 69.15, 1, 1, 40, 126.23, 67.31, 1, 2, 40, 226.42, 31.13, 0.9375, 41, -30.87, -1.11, 0.0625, 2, 40, 240.84, 25.33, 0.7, 41, -25.64, 13.52, 0.3, 2, 40, 246.67, 8.05, 0.3, 41, -8.60999, 20.02, 0.7, 3, 40, 240.81, -115.25, 0.0625, 41, 114.8, 19.01, 0.875, 42, 9.47999, 59.16, 0.0625, 2, 41, 131.07, 29.69, 0.7, 42, 22.11, 44.35, 0.3, 2, 41, 146.06, 39.54, 0.3, 42, 33.75999, 30.71, 0.7, 3, 41, 152.6, 65.01, 0.12566, 42, 59.85, 27.41, 0.75203, 43, 15.85, 48.05, 0.12229, 3, 41, 154.28, 71.58999, 0.05444, 42, 66.58999, 26.56, 0.78401, 43, 16.71999, 41.31, 0.16154, 3, 42, 71.19, 35.75999, 0.64716, 43, 26.78, 39.16999, 0.13169, 44, -67.32, 18.95999, 0.22114, 3, 42, 87.93, 69.21, 0.0625, 43, 63.37, 31.39, 0.675, 44, -30.17, 23.3, 0.26249, 2, 43, 113.82, 35.72, 0.1038, 44, 16.23, 43.56, 0.89619, 1, 44, 128.14, 12.02, 1, 1, 44, 161.85, -15.81, 1, 2, 43, 90.98, -23.36, 0.0138, 44, 13.52, -19.71999, 0.98619, 2, 43, 62.97, -25.81, 0.7, 44, -12.23, -31.02, 0.3, 3, 42, 115.12, -1.33, 0.08333, 43, 1.93, -12.66, 0.83333, 44, -74.26, -38.09999, 0.08333, 2, 42, 106.11, -23.53, 0.3, 43, -21.8, -9.52, 0.7, 2, 42, 97.43, -44.9, 0.7, 43, -44.67, -6.51, 0.3, 2, 42, 84.26, -40.68999, 0.9375, 43, -43.9, 7.29, 0.0625, 1, 42, 49.18, -29.46, 1, 2, 41, 206.75, 5.37, 0.13333, 42, 7.44, -33.77, 0.86666, 2, 41, 219.64, -20.52, 0.36111, 42, -16.64, -49.8, 0.63888, 2, 41, 208.4, -37.82, 0.72083, 42, -35.22, -40.82, 0.27916, 2, 41, 200.49, -50.02, 0.91666, 42, -48.31, -34.48, 0.08333, 1, 41, 161.1, -36.97, 1, 2, 40, 150.1, -116.76, 0.08333, 41, 119.88, -71.55, 0.91666, 2, 40, 154.99, -70.71, 0.42846, 41, 73.68, -68.47, 0.57153, 2, 40, 150.3, -65.26999, 0.35604, 41, 68.42, -73.36, 0.64395, 2, 40, 146.51, -60.87, 0.59147, 41, 64.17, -77.32, 0.40852, 2, 40, 115.12, -75.08, 0.8446, 41, 79.61, -108.13, 0.15538, 1, 40, 63.33, -98.53, 1, 1, 40, 21.78, -94.55, 1, 1, 40, -66.69, -32.04, 1, 1, 40, -6.62, 52.97, 1, 1, 40, 58.14, -6, 1, 1, 40, 121.17, 2.44, 1, 1, 40, 188.87, -12.1, 1, 2, 40, 197.11, -18.42, 0.7, 41, 19.79, -28.44, 0.3, 2, 40, 203.98, -28.61, 0.3, 41, 29.69, -21.17, 0.7, 1, 41, 136.67, -7.42, 1, 2, 41, 164.32, 0.66, 0.7, 42, -2.53, 7.73, 0.3, 2, 41, 177.97, 21.57, 0.25, 42, 19.92, -3.19, 0.75, 1, 42, 71.93, -6.29, 1, 2, 42, 79.66, -3.72, 0.7, 43, -9.28, 21.04, 0.3, 2, 42, 87.98, 7.25, 0.3125, 43, 3.42, 15.76, 0.6875, 3, 42, 114.16, 61.85, 0.04, 43, 62.84, 4.15, 0.7, 44, -21.95, -2.66, 0.26 ], + "hull": 36, + "edges": [ 66, 68, 66, 64, 56, 54, 54, 52, 52, 50, 46, 44, 44, 42, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 68, 70, 0, 70, 46, 48, 48, 50, 14, 12, 12, 10, 60, 58, 58, 56, 42, 40, 40, 38, 18, 16, 16, 14, 22, 20, 20, 18, 38, 36, 36, 34, 60, 62, 62, 64, 68, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 16, 88, 86, 88, 18, 90, 90, 38, 88, 90, 20, 92, 92, 36, 90, 92, 92, 94, 94, 22, 94, 32, 30, 24, 88, 40, 86, 14, 84, 12, 82, 10, 82, 52, 48, 84, 44, 86, 78, 6, 4, 76, 80, 8, 80, 56, 58, 78, 76, 60 ], + "width": 338, + "height": 429 + } + }, + "raptor_horn": { + "raptor_horn": { "x": 156.2, "y": 74.1, "rotation": -137.26, "width": 363, "height": 159 } + }, + "raptor_horn_back": { + "raptor_horn_back": { "x": 121.42, "y": 83.01, "rotation": -132.21, "width": 351, "height": 153 } + }, + "raptor_jaw": { + "raptor_jaw": { + "type": "mesh", + "uvs": [ 0.40984, 0.22169, 0.42214, 0.3988, 0.67894, 0.53819, 0.7589, 0.62838, 0.99999, 0.4726, 1, 0.53491, 0.87731, 0.77925, 0.63281, 0.94487, 0.39908, 0.96947, 0.19456, 0.89404, 0.21609, 0.6497, 0, 0.46111, 0, 0, 0.26069, 0, 0.19456, 0.29385 ], + "triangles": [ 14, 13, 0, 14, 0, 1, 5, 3, 4, 10, 14, 1, 11, 14, 10, 6, 3, 5, 2, 10, 1, 7, 2, 3, 7, 3, 6, 2, 8, 10, 8, 9, 10, 2, 7, 8, 14, 12, 13, 11, 12, 14 ], + "vertices": [ 1, 35, 28.6, 68.85, 1, 1, 35, 69.65, 38.95, 1, 1, 35, 150.72, 72.87999, 1, 1, 35, 186.16, 74.79, 1, 1, 35, 199.76, 159.69, 1, 1, 35, 213.35, 148.16, 1, 1, 35, 242.43, 74.42, 1, 1, 35, 230.31, -13.08, 1, 1, 35, 189.56, -71.99, 1, 1, 35, 132.76, -105.6, 1, 1, 35, 83.71, -55.39, 1, 2, 16, -18.31, 12.1, 0.67732, 35, -0.04, -70.76, 0.32267, 1, 16, 113.44, 16.95, 1, 1, 16, 116.36, -62.48, 1, 1, 35, 1.86, 5.43, 1 ], + "hull": 14, + "edges": [ 22, 24, 22, 20, 20, 18, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 24, 26, 0, 26, 24, 28, 22, 28, 28, 0 ], + "width": 305, + "height": 286 + } + }, + "raptor_saddle_noshadow": { + "raptor_saddle_noshadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_saddle_strap_front": { + "raptor_saddle_strap_front": { "x": 128.83, "y": -4.71, "rotation": 61.29, "width": 114, "height": 189 } + }, + "raptor_saddle_strap_rear": { + "raptor_saddle_strap_rear": { + "type": "mesh", + "uvs": [ 0.85499, 0.06802, 1, 0.13237, 1, 0.20266, 0.95981, 0.26524, 0.88583, 0.38045, 0.80684, 0.46413, 0.74038, 0.53453, 0.81676, 0.5895, 0.51961, 1, 0.4516, 1, 0.01739, 0.8407, 0, 0.80889, 0.24645, 0.36639, 0.3792, 0.39151, 0.42457, 0.32099, 0.49229, 0.21571, 0.57673, 0.10986, 0.66437, 0, 0.70168, 0, 0.56028, 0.46321, 0.68822, 0.29772, 0.76845, 0.18722, 0.61529, 0.39206 ], + "triangles": [ 7, 8, 6, 9, 10, 13, 13, 11, 12, 6, 8, 19, 8, 9, 19, 9, 13, 19, 13, 10, 11, 19, 22, 6, 13, 14, 19, 19, 14, 22, 6, 22, 5, 22, 20, 5, 5, 20, 4, 14, 15, 22, 22, 15, 20, 20, 21, 4, 15, 16, 20, 4, 21, 3, 20, 16, 21, 2, 3, 0, 3, 21, 0, 0, 1, 2, 21, 16, 18, 16, 17, 18, 21, 18, 0 ], + "vertices": [ 1, 50, 3.9, -3.27, 1, 1, 50, 4.25, 15.05, 1, 1, 50, 13.24, 20.28, 1, 2, 50, 23.42, 21.2, 0.7, 51, -15.2, 21.22, 0.3, 3, 50, 41.11, 22.87, 0.3, 51, 2.48, 22.89, 0.6375, 52, -33.83, 24.96, 0.0625, 3, 50, 52.07, 21.72, 0.0625, 51, 13.43, 21.74, 0.6375, 52, -22.97, 23.11, 0.3, 2, 51, 18.39, 20.76, 0.25, 52, -18.09, 21.82, 0.75, 1, 52, -18.76, 33.09, 1, 1, 52, 49.92, 31.57, 1, 1, 52, 53.21, 25, 1, 1, 52, 53.11, -27.48, 1, 1, 52, 49.74, -31.27, 1, 1, 52, -20.73, -36.75999, 1, 1, 52, -23.82, -22.28, 1, 3, 50, 53.48, -24.61, 0.0625, 51, 14.84, -24.59, 0.575, 52, -24.51, -23.21, 0.3625, 3, 50, 41.43999, -26.12, 0.3, 51, 2.81, -26.09, 0.6375, 52, -36.62, -23.95, 0.0625, 2, 50, 24.38, -26.12, 0.7, 51, -14.24, -26.1, 0.3, 1, 50, 5.57, -26.12, 1, 1, 50, 3.54, -22.64, 1, 1, 52, -23.08, -0.04, 1, 2, 50, 41.66, -1.72, 0.3125, 51, 3.03, -1.7, 0.6875, 2, 50, 23.85, -2.46, 0.7, 51, -14.77, -2.44, 0.3, 2, 51, 13.95, -1.5, 0.64582, 52, -23.94, -0.11, 0.35416 ], + "hull": 19, + "edges": [ 26, 24, 24, 22, 22, 20, 20, 18, 16, 18, 16, 14, 14, 12, 4, 2, 34, 36, 12, 38, 38, 26, 8, 40, 40, 30, 2, 0, 0, 36, 30, 32, 32, 34, 32, 42, 4, 6, 6, 8, 42, 6, 26, 28, 28, 30, 28, 44, 8, 10, 10, 12, 44, 10 ], + "width": 108, + "height": 148 + } + }, + "raptor_saddle_w_shadow": { + "raptor_saddle_w_shadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_tongue": { + "raptor_tongue": { + "type": "mesh", + "uvs": [ 0.35242, 0.2156, 0.4794, 0.44245, 0.62071, 0.61176, 0.80562, 0.75373, 1, 0.90297, 1, 1, 0.8971, 1, 0.72054, 0.92254, 0.50668, 0.82872, 0.30401, 0.70725, 0.10537, 0.57888, 0, 0.50622, 0, 0, 0.26224, 0 ], + "triangles": [ 8, 7, 6, 6, 4, 5, 4, 6, 3, 6, 7, 3, 7, 8, 3, 8, 2, 3, 9, 10, 1, 8, 9, 2, 9, 1, 2, 1, 10, 0, 10, 11, 0, 0, 12, 13, 0, 11, 12 ], + "vertices": [ 2, 63, 3.63, 27.04, 0.6875, 64, -47.26, 33.87, 0.3125, 3, 63, 39.09, 19.45, 0.3125, 64, -13.41, 20.86, 0.625, 65, -51.54, 33.37, 0.0625, 3, 63, 71.56, 19.02, 0.0625, 64, 18.58, 15.39, 0.625, 65, -21.56, 20.92, 0.3125, 2, 64, 55.03, 16.85, 0.3125, 65, 14.29, 14.23, 0.6875, 2, 64, 93.34, 18.39, 0.08333, 65, 51.98, 7.21, 0.91666, 1, 65, 56.09, -4.5, 1, 2, 64, 85.06, -1.49, 0.08333, 65, 39.48, -10.33, 0.91666, 2, 64, 54.22, -9.18, 0.3125, 65, 7.71, -10.96, 0.6875, 3, 63, 75.14, -14.72, 0.0625, 64, 16.87, -18.5, 0.625, 65, -30.77, -11.73, 0.3125, 3, 63, 38.8, -25.8, 0.3125, 64, -20.74, -23.8, 0.625, 65, -68.62, -8.53, 0.0625, 2, 63, 2.4, -35.77, 0.6875, 64, -58.25, -27.99, 0.3125, 2, 63, -17.28, -40.62, 0.91666, 64, -78.44999, -29.71, 0.08333, 1, 63, -59.91, 8.18, 1, 2, 63, -26.13, 37.68999, 0.91666, 64, -75.01999, 49.02, 0.08333 ], + "hull": 14, + "edges": [ 22, 24, 10, 12, 10, 8, 24, 26, 16, 4, 18, 16, 2, 4, 18, 2, 22, 20, 0, 26, 20, 0, 0, 2, 12, 14, 14, 16, 4, 6, 6, 8, 14, 6, 20, 18 ], + "width": 171, + "height": 128 + } + }, + "spineboy_torso": { + "torso": { "x": 55.88, "y": 4.86, "rotation": -104.14, "width": 108, "height": 182 } + }, + "stirrup_back": { + "stirrup_back": { "x": 53.2, "y": 31.34, "rotation": -21.12, "width": 87, "height": 69 } + }, + "stirrup_front": { + "stirrup_front": { "x": 36.13, "y": 20.39, "rotation": -21.12, "width": 89, "height": 100 } + }, + "stirrup_strap": { + "stirrup_strap": { + "type": "mesh", + "uvs": [ 0.36822, 0.27893, 0.45737, 0.38897, 0.54451, 0.49651, 0.67872, 0.59135, 0.81977, 0.69102, 1, 0.77344, 1, 1, 0.77956, 1, 0.63729, 0.81629, 0.53364, 0.72348, 0.40534, 0.6086, 0.30886, 0.52535, 0.21049, 0.44047, 0, 0.26245, 0, 0, 0.30637, 0, 0.20241, 0.23 ], + "triangles": [ 2, 10, 1, 9, 10, 2, 9, 2, 3, 8, 9, 3, 8, 3, 4, 7, 8, 4, 7, 4, 5, 7, 5, 6, 16, 14, 15, 13, 14, 16, 16, 15, 0, 12, 16, 0, 12, 0, 1, 13, 16, 12, 11, 12, 1, 10, 11, 1 ], + "vertices": [ 2, 56, 24.71, 8.03, 0.80344, 57, -17.42, 11.02, 0.19655, 2, 56, 37.95, 8.04, 0.59978, 57, -4.36, 8.87, 0.40021, 2, 56, 50.88, 8.04, 0.36895, 57, 8.39, 6.77, 0.63103, 2, 56, 65.92, 12.27, 0.17748, 57, 23.91, 8.47999, 0.82251, 2, 56, 81.72, 16.7, 0.05943, 57, 40.23, 10.28, 0.94056, 2, 56, 98.82, 25.04, 0.01209, 57, 58.46, 15.71, 0.9879, 2, 56, 114.44, 11.57, 0.00191, 57, 71.67, -0.11, 0.99808, 2, 56, 100.47, -4.61, 0.01816, 57, 55.25, -13.81, 0.98182, 2, 56, 78.79, -4.14, 0.07487, 57, 33.93999, -9.81, 0.92512, 2, 56, 65.83, -6.24, 0.2028, 57, 20.81, -9.76, 0.79719, 2, 56, 49.78, -8.83, 0.39971, 57, 4.55, -9.7, 0.60028, 2, 56, 37.93, -10.97, 0.62658, 57, -7.48, -9.88, 0.37341, 2, 56, 25.85, -13.15, 0.82034, 57, -19.75, -10.06, 0.17965, 2, 56, 0.25, -18.03, 0.95288, 57, -45.81, -10.7, 0.04711, 2, 56, -17.83, -2.43, 0.97709, 57, -61.11, 7.63, 0.0229, 2, 56, 1.57, 20.07, 0.94774, 57, -38.29, 26.67, 0.05225, 2, 56, 10.84, -1.23, 0.97709, 57, -32.62, 4.14, 0.0229 ], + "hull": 16, + "edges": [ 28, 30, 30, 0, 12, 10, 8, 10, 12, 14, 14, 16, 26, 28, 24, 26, 26, 32, 32, 30, 20, 22, 22, 24, 0, 2, 2, 4, 4, 6, 6, 8, 16, 18, 18, 20 ], + "width": 97, + "height": 91 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "Jump": { + "bones": { + "root": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.3, + "x": 0, + "y": 0, + "curve": [ 0.201, 0.17, 0.815, 0.83 ] + }, + { "time": 0.6666, "x": 1482.78, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -12.8 }, + { "time": 0.5333, "angle": 5.73 }, + { "time": 0.6666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -60.01, "y": 111.1 }, + { "time": 0.4333, "x": 213.18, "y": 291.22 }, + { "time": 0.5333, "x": 243.73, "y": 332.61 }, + { "time": 0.6666, "x": 95.94, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.48 }, + { "time": 0.1, "angle": -23.02 }, + { "time": 0.3, "angle": 19.24 }, + { "time": 0.5333, "angle": 20.85 }, + { "time": 0.6666, "angle": -10.76 }, + { "time": 0.7666, "angle": -18.58 }, + { "time": 0.9333, "angle": -3.56 }, + { "time": 1.0666, "angle": -4.48 } + ], + "translate": [ + { "time": 0, "x": -100.65, "y": 49.77 }, + { + "time": 0.1, + "x": 9.37, + "y": -109.06, + "curve": [ 0.245, 0, 0.609, 0.41 ] + }, + { + "time": 0.1666, + "x": 150.37, + "y": -76.51, + "curve": [ 0.401, 0.34, 0.858, 0.87 ] + }, + { "time": 0.3, "x": 361, "y": 36.69 }, + { + "time": 0.5333, + "x": 5.36, + "y": 290.91, + "curve": [ 0.808, 0, 0.892, 0.81 ] + }, + { "time": 0.6666, "x": -56.27, "y": 88.07 }, + { + "time": 0.7666, + "x": 179.93, + "y": -59.94, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.9333, + "x": 238.11, + "y": 50.63, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "x": 213.19, "y": 49.77 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -57.97 }, + { "time": 0.7, "angle": -9.19 }, + { "time": 0.7333, "angle": -7.78 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -131.66, "y": 47.58 }, + { "time": 0.4333, "x": -16.1, "y": 205.84 }, + { "time": 0.5333, "x": 61.29, "y": 320.2 }, + { "time": 0.7333, "x": 235.62, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7333, "x": 1, "y": 1 } + ] + }, + "front_leg1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": -0.39, "y": 24.29 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_leg1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": 6.75, "y": 25.64 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -11.02 }, + { "time": 0.3, "angle": 0.53 }, + { "time": 0.4333, "angle": 8.64 }, + { "time": 0.7, "angle": -9.73 }, + { + "time": 0.7666, + "angle": -4.46, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -39.83 }, + { "time": 0.3, "angle": -31.82 }, + { "time": 0.4333, "angle": -7.28 }, + { "time": 0.5333, "angle": 1.28 }, + { "time": 0.6, "angle": -7.22 }, + { "time": 0.7, "angle": -30.66 }, + { + "time": 0.7666, + "angle": -40.54, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 0.51 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 1.04 }, + { "time": 0.7, "angle": -3.25 }, + { "time": 0.7666, "angle": 4.81 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -308.79 }, + { "time": 0.3, "angle": -398.7 }, + { "time": 0.5333, "angle": -297.8 }, + { "time": 0.7, "angle": 62.19 }, + { "time": 0.7666, "angle": -325.36 }, + { "time": 0.8333, "angle": -374.42 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg3": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.25 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 5.44 }, + { "time": 0.7, "angle": 24.01 }, + { "time": 0.7666, "angle": 4.82 }, + { "time": 0.8666, "angle": -1.78 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.1, "x": 0, "y": 0 }, + { "time": 0.3, "x": 62.9, "y": -44.25 }, + { "time": 0.5333, "x": -4.35, "y": 17.31 }, + { "time": 0.7, "x": 0, "y": 0 }, + { "time": 0.7666, "x": 23.29, "y": -42.27 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 51.2 }, + { "time": 0.3333, "angle": -38.7 }, + { "time": 0.6, "angle": 62.19, "curve": "stepped" }, + { "time": 0.7333, "angle": 62.19 }, + { "time": 0.8, "angle": 34.62 }, + { "time": 0.8666, "angle": -14.43 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg3": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_front_arm_goal": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1, "x": 35.96, "y": -11.83 }, + { "time": 0.3, "x": 31.1, "y": -50.39 }, + { "time": 0.5333, "x": 12.1, "y": -8.03 }, + { "time": 0.7, "x": 41.7, "y": -19.46 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_rear_arm_goal": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.97 }, + { "time": 0.3, "angle": -18.38 }, + { "time": 0.4333, "angle": 0.9 }, + { "time": 0.5333, "angle": 11.43 }, + { "time": 0.6, "angle": 17.22 }, + { "time": 0.7, "angle": 4.74 }, + { + "time": 0.7666, + "angle": -20.69, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -20.4, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_thigh": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 15.27 }, + { "time": 0.3, "angle": -53.4 }, + { "time": 0.5666, "angle": -63.35 }, + { "time": 0.7666, "angle": -29.92 }, + { "time": 0.9, "angle": 7.24 }, + { "time": 1, "angle": -3.69 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 9.93 }, + { "time": 0.3, "angle": -3.76 }, + { "time": 0.5333, "angle": -26.63 }, + { "time": 0.7, "angle": -10.23 }, + { "time": 0.7666, "angle": 21.8 }, + { "time": 0.8666, "angle": 15.36 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -24.93 }, + { "time": 0.2333, "angle": -20.34 }, + { "time": 0.5333, "angle": -11.2 }, + { "time": 0.7, "angle": 10.49 }, + { + "time": 0.8333, + "angle": -30.21, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 1.34 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 34.12 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 11.11 }, + { "time": 0.5333, "angle": 25.19 }, + { "time": 0.6, "angle": 32.5 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -11.72, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_arm": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_knee": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -63.6 }, + { "time": 0.4333, "angle": -80.16 }, + { "time": 0.5333, "angle": -17.48 }, + { "time": 0.6666, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_front": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_rear": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 15.56 }, + { "time": 0.2333, "angle": -0.92 }, + { "time": 0.5, "angle": 20.4 }, + { "time": 0.7, "angle": 18.32 }, + { "time": 0.7666, "angle": 5.17 }, + { "time": 0.8333, "angle": 20.34 }, + { "time": 1.0666, "angle": 15.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "lower_leg": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 11.08 }, + { "time": 0.8333, "angle": 8.16 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -87.93 }, + { "time": 0.4333, "angle": -126.75 }, + { "time": 0.5333, "angle": -63.79 }, + { "time": 0.7, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.7, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear3": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail5": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 76.87 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 10.5 }, + { "time": 0.5333, "angle": 24.81 }, + { "time": 0.6, "angle": 32.21 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -41.66, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_bracer": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm_target": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -84.17 }, + { "time": 0.4333, "angle": -127.53 }, + { "time": 0.5333, "angle": -52.16 }, + { "time": 0.6666, "angle": 10.77 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 15.31 }, + { "time": 0.1, "angle": 29.85 }, + { "time": 0.2, "angle": 22.43 }, + { "time": 0.3, "angle": 12.64 }, + { "time": 0.4666, "angle": 24.85 }, + { "time": 0.5333, "angle": 9.28 }, + { "time": 0.7, "angle": 4.77 }, + { "time": 0.7666, "angle": 37.9 }, + { + "time": 0.8333, + "angle": 18.87, + "curve": [ 0.056, 0.81, 0.75, 1 ] + }, + { "time": 1, "angle": 22.96 }, + { "time": 1.0666, "angle": 15.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm_target": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_hand": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue3": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + } + } + }, + "empty": {}, + "gungrab": { + "slots": { + "front_hand": { + "attachment": [ + { "time": 0, "name": "front_open_hand" }, + { "time": 0.1666, "name": "gun" } + ] + }, + "gun": { + "attachment": [ + { "time": 0, "name": "gun_nohand" }, + { "time": 0.1666, "name": null } + ] + } + }, + "bones": { + "front_hand2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 12.33 }, + { "time": 0.1666, "angle": -89.54 }, + { "time": 0.2333, "angle": -79.78 }, + { "time": 0.4666, "angle": -10.18 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.938, "y": 0.938 }, + { "time": 0.4666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.0666, "angle": -31.99 }, + { + "time": 0.1666, + "angle": 223.11, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2333, + "angle": 155.19, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "angle": 246.13, + "curve": [ 0.184, 0.33, 0.75, 1 ] + }, + { "time": 0.4666, "angle": -56.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1666, "x": 6.49, "y": -2.66 }, + { "time": 0.2333, "x": 6.84, "y": 4.79 }, + { "time": 0.4666, "x": 0, "y": 0 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": 86.01 }, + { "time": 0.2333, "angle": 114.94 }, + { + "time": 0.3666, + "angle": 81.86, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "angle": 34.73 } + ] + } + }, + "ik": { + "front_arm_goal": [ + { "time": 0, "mix": 0 } + ] + } + }, + "walk": { + "bones": { + "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 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -51.26 }, + { "time": 0.4, "angle": -65.17 }, + { "time": 0.5333, "angle": -76.28 }, + { "time": 0.8, "angle": -76.52 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 343.28, "y": 36.5 }, + { "time": 0.2666, "x": 86.5, "y": 36.99 }, + { "time": 0.5333, "x": -173.36, "y": 37.42 }, + { "time": 0.6, "x": -68.15, "y": 141.15 }, + { "time": 0.7333, "x": 91.78, "y": 238.01 }, + { "time": 0.8, "x": 155.89, "y": 190.91 }, + { "time": 0.9666, "x": 303.28, "y": 94.4 }, + { "time": 1.0666, "x": 343.28, "y": 36.5 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.78 }, + { "time": 0.0666, "angle": -3.99 }, + { "time": 0.2666, "angle": -12.49 }, + { "time": 0.5333, "angle": -4.78 }, + { "time": 0.6, "angle": -3.99 }, + { "time": 0.8, "angle": -12.49 }, + { "time": 1.0666, "angle": -4.78 } + ], + "translate": [ + { + "time": 0, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.0666, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.2666, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.841, 0.8 ] + }, + { + "time": 0.5333, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.6, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.8, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.858, 0.82 ] + }, + { "time": 1.0666, "x": 161.93, "y": 4.89 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": -62.73 }, + { "time": 0.2666, "angle": -107.17 }, + { "time": 0.4666, "angle": -40.51 }, + { "time": 0.8, "angle": -97.15 }, + { "time": 1.0666, "angle": -62.73 } + ], + "translate": [ + { "time": 0, "x": -266.69, "y": -15.46 }, + { "time": 0.1333, "x": -87.88, "y": 124.85 }, + { "time": 0.2666, "x": 88.35, "y": 134.06 }, + { "time": 0.3666, "x": 198.39, "y": 90.64 }, + { "time": 0.4666, "x": 308.19, "y": -26.42 }, + { "time": 0.6, "x": 167.06, "y": -26.42 }, + { "time": 1.0666, "x": -266.69, "y": -15.46 } + ] + }, + "front_leg1": { + "rotate": [ + { "time": 0, "angle": 27.07 }, + { "time": 1.0666, "angle": 31.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0666, "x": -0.21, "y": 15.19 }, + { "time": 0.5333, "x": -0.33, "y": 12.15 }, + { "time": 0.7333, "x": -4.74, "y": 31.93 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -18.04, "y": -2.88 }, + { "time": 0.4333, "x": -42.2, "y": -88.63 }, + { "time": 0.5333, "x": -27.31, "y": -43.9 }, + { "time": 0.7333, "x": -1.52, "y": -94.28 }, + { "time": 0.8, "x": -24.29, "y": -116.41 }, + { "time": 1, "x": -41.88, "y": -93.3 }, + { "time": 1.0666, "x": -18.04, "y": -2.88 } + ] + }, + "rear_leg1": { + "rotate": [ + { "time": 0, "angle": -64.85 }, + { "time": 1.0666, "angle": -45.71 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -2.05, "y": 15.12 }, + { "time": 0.2666, "x": 17.49, "y": -150.43 }, + { "time": 0.4666, "x": -40.21, "y": -81.76 }, + { "time": 0.5333, "x": -31.68, "y": -82.43 }, + { "time": 0.8, "x": 2.65, "y": -169.21 }, + { "time": 0.9333, "x": -16.76, "y": -98.31 }, + { "time": 1.0666, "x": -2.05, "y": 15.12 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 1.3 }, + { "time": 0.0666, "angle": 4.13 }, + { "time": 0.3333, "angle": -5.77 }, + { "time": 0.6333, "angle": 4.13 }, + { "time": 0.9, "angle": -5.77 }, + { "time": 1.0666, "angle": 1.3 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.0666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "torso1": { + "rotate": [ + { "time": 0, "angle": 7.21 }, + { "time": 0.2666, "angle": 4.19 }, + { "time": 0.5333, "angle": 7.21 }, + { "time": 0.8, "angle": 4.19 }, + { "time": 1.0666, "angle": 7.21 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg2": { + "rotate": [ + { "time": 0, "angle": -347.28 }, + { "time": 1.0666, "angle": -362.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg2": { + "rotate": [ + { "time": 0, "angle": 27.05 }, + { "time": 1.0666, "angle": 9.92 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle": { + "rotate": [ + { "time": 0, "angle": -2.51 }, + { "time": 0.2666, "angle": -4.17 }, + { "time": 0.5333, "angle": -3.85 }, + { "time": 0.8, "angle": -3.09 }, + { "time": 1.0666, "angle": -2.51 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.2666, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.3333, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.6, "x": -0.2, "y": -2.35 }, + { + "time": 0.8, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.8666, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": -19.15 }, + { "time": 0.2333, "angle": -11.3 }, + { "time": 0.5, "angle": -9.37 }, + { "time": 0.7666, "angle": -11.3 }, + { "time": 1.0333, "angle": -20.27 }, + { "time": 1.0666, "angle": -19.15 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 0.8, "y": 1 }, + { "time": 0.2333, "x": 0.9, "y": 1 }, + { "time": 0.5, "x": 0.8, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 0.8, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 8.6 }, + { + "time": 0.2666, + "angle": 9.52, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": 8.01 }, + { + "time": 0.8, + "angle": 5.48, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": 8.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -367.82 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 20.64, "y": -7.55 }, + { "time": 0.5, "x": -2.86, "y": 3.32 }, + { "time": 0.8, "x": 24.09, "y": -1.47 }, + { "time": 0.9333, "x": 21.73, "y": -3.7 }, + { "time": 1.0666, "x": 20.64, "y": -7.55 } + ] + }, + "front_leg3": { + "rotate": [ + { "time": 0, "angle": 1.14, "curve": "stepped" }, + { "time": 1.0666, "angle": 1.14 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 6.5 }, + { "time": 0.2666, "angle": 12.71 }, + { "time": 0.5333, "angle": 6.5 }, + { "time": 0.8, "angle": 12.71 }, + { "time": 1.0666, "angle": 6.5 } + ], + "translate": [ + { "time": 0, "x": 12.59, "y": -31.3 }, + { + "time": 0.2666, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 0.5333, "x": 12.59, "y": -31.3 }, + { + "time": 0.8, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 1.0666, "x": 12.59, "y": -31.3 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 13.71 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.5, "x": 11.12, "y": -13.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg3": { + "rotate": [ + { "time": 0, "angle": -23.18, "curve": "stepped" }, + { "time": 1.0666, "angle": -23.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_front1": { + "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 } + ] + }, + "saddle_strap_rear1": { + "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 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": -12.46 }, + { "time": 0.2333, "angle": 12.65 }, + { "time": 0.5, "angle": -20.79 }, + { "time": 0.7666, "angle": 12.65 }, + { "time": 1.0333, "angle": -16.04 }, + { "time": 1.0666, "angle": -12.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.997, "y": 1 }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 22.44 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot1": { + "rotate": [ + { "time": 0, "angle": -41.33, "curve": "stepped" }, + { "time": 1.0666, "angle": -41.33 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -7.36 }, + { + "time": 0.1333, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4, "angle": -6.12 }, + { "time": 0.5333, "angle": -7.36 }, + { + "time": 0.6666, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.9333, "angle": -6.12 }, + { "time": 1.0666, "angle": -7.36 } + ], + "translate": [ + { "time": 0, "x": -3.88, "y": -32.87 }, + { "time": 0.9333, "x": -3.33, "y": -22.81 }, + { "time": 1.0666, "x": -3.88, "y": -32.87 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -30.2 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot1": { + "rotate": [ + { "time": 0, "angle": 2.07, "curve": "stepped" }, + { "time": 1.0666, "angle": 2.07 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_front2": { + "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 } + ] + }, + "saddle_strap_rear2": { + "rotate": [ + { "time": 0, "angle": -4.44 }, + { "time": 0.1, "angle": -2.66 }, + { "time": 0.3, "angle": -0.35 }, + { "time": 0.4333, "angle": -1.7 }, + { "time": 0.6333, "angle": -2.54 }, + { "time": 0.9, "angle": -0.51 }, + { "time": 1.0666, "angle": -4.44 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "stirrup": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -4.95 }, + { "time": 0.5333, "angle": 0 }, + { "time": 0.8, "angle": -4.95 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 8.97, "y": 4.99 }, + { "time": 0.2666, "x": 4.85, "y": 0.99 }, + { "time": 0.5333, "x": 7.75, "y": -2.99 }, + { "time": 0.8, "x": 4.85, "y": 0.99 }, + { "time": 1.0666, "x": 8.97, "y": 4.99 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 10.25 }, + { + "time": 0.2333, + "angle": 39.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5, "angle": 1.33 }, + { + "time": 0.7666, + "angle": 39.47, + "curve": [ 0.664, 0, 0.75, 1 ] + }, + { "time": 1.0333, "angle": 6.08 }, + { "time": 1.0666, "angle": 10.25 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 36.9 }, + { "time": 0.0666, "angle": 7.88 }, + { "time": 0.1333, "angle": 4.66 }, + { "time": 0.4, "angle": 7.59 }, + { "time": 0.5333, "angle": 8.08 }, + { "time": 0.6666, "angle": -67.33 }, + { "time": 0.7333, "angle": -65.23 }, + { "time": 1, "angle": 27.74 }, + { "time": 1.0666, "angle": 36.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 9.49 }, + { "time": 0.5, "angle": -48.6 }, + { "time": 1.0666, "angle": 9.49 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_front": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": -7.18, "y": -1.38 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -7.18, "y": -1.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_rear": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": 12.34, "y": 9.16 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": 12.34, "y": 9.16 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 25.56 }, + { "time": 0.2, "angle": 21.27 }, + { "time": 0.3333, "angle": 21.35 }, + { "time": 0.6666, "angle": 15.6 }, + { "time": 0.8666, "angle": 22.96 }, + { "time": 1.0666, "angle": 25.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -82.37 }, + { "time": 0.2666, "angle": -110.3 }, + { "time": 0.4333, "angle": 36.21 }, + { "time": 0.5333, "angle": 2.1 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": -28.89 }, + { "time": 0.5, "angle": 12.19 }, + { "time": 1.0666, "angle": -28.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear3": { + "rotate": [ + { "time": 0, "angle": -1.31 }, + { "time": 0.1, "angle": 0.46 }, + { "time": 0.3, "angle": 2.77 }, + { "time": 0.4333, "angle": 1.42 }, + { "time": 0.6333, "angle": 0.58 }, + { "time": 0.9, "angle": 2.61 }, + { "time": 1.0666, "angle": -1.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail5": { + "rotate": [ + { + "time": 0, + "angle": -26.34, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.2333, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.5, + "angle": -21.92, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.7666, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { "time": 1.0333, "angle": -7.73 }, + { "time": 1.0666, "angle": -26.34 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 0.765, "y": 1 }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.765, "y": 1 }, + { "time": 0.7666, "x": 1, "y": 1 }, + { "time": 1.0666, "x": 0.765, "y": 1 } + ] + }, + "tongue1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": -1.65 }, + { "time": 0.0666, "angle": -5.29 }, + { "time": 0.1333, "angle": -3.94 }, + { "time": 0.2666, "angle": -3.81 }, + { "time": 0.5333, "angle": -5.89 }, + { "time": 0.6, "angle": -21.2 }, + { "time": 0.6666, "angle": -73.63 }, + { "time": 0.7333, "angle": -102.81 }, + { "time": 0.8333, "angle": -41.3 }, + { "time": 1, "angle": 10.93 }, + { "time": 1.0666, "angle": -1.65 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 38.59 }, + { "time": 0.2666, "angle": 43.18 }, + { "time": 0.5333, "angle": 38.59 }, + { "time": 0.8, "angle": 43.18 }, + { "time": 1.0666, "angle": 38.59 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 9.65 }, + { "time": 0.2666, "angle": 14.71 }, + { "time": 0.5333, "angle": 9.65 }, + { "time": 0.8, "angle": 14.71 }, + { "time": 1.0666, "angle": 9.65 } + ] + }, + "spineboy_hip": { + "translate": [ + { + "time": 0, + "x": 32.54, + "y": 1.34, + "curve": [ 0.412, 0, 0.872, 0.78 ] + }, + { + "time": 0.2666, + "x": -12.88, + "y": 0.58, + "curve": [ 0.138, 0.17, 0.75, 1 ] + }, + { + "time": 0.5333, + "x": 32.54, + "y": 1.34, + "curve": [ 0.367, 0, 0.867, 0.81 ] + }, + { + "time": 0.8, + "x": -12.88, + "y": 0.58, + "curve": [ 0.164, 0.17, 0.75, 1 ] + }, + { "time": 1.0666, "x": 32.54, "y": 1.34 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": -37.93 }, + { + "time": 0.2666, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": -37.93 }, + { + "time": 0.8, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": -37.71 } + ] + }, + "front_arm": { + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.3333, "x": -14.43, "y": -11.03 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -14.43, "y": -11.03 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": -11.68, + "curve": [ 0.379, 0.6, 0.724, 1 ] + }, + { "time": 0.0666, "angle": -17.59 }, + { + "time": 0.3333, + "angle": 14.45, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6, + "angle": -24.74, + "curve": [ 0.326, 0, 0.715, 1 ] + }, + { + "time": 0.8666, + "angle": 14.45, + "curve": [ 0.242, 0, 0.666, 0.66 ] + }, + { "time": 1.0666, "angle": -11.68 } + ], + "translate": [ + { "time": 0, "x": 0.84, "y": -3.81 }, + { "time": 0.0666, "x": 0, "y": 0 }, + { "time": 0.3333, "x": 3.37, "y": -15.27 }, + { "time": 0.6, "x": 0, "y": 0 }, + { "time": 0.8666, "x": 3.37, "y": -15.27 }, + { "time": 1.0666, "x": 0.84, "y": -3.81 } + ] + } + }, + "deform": { + "default": { + "raptor_body": { + "raptor_body": [ + { "time": 0 }, + { + "time": 0.2666, + "offset": 314, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 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, 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, 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, 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, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] + }, + { "time": 0.5333 }, + { + "time": 0.8, + "offset": 314, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 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, 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, 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, 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, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 138, + "vertices": [ -2.23608, 21.95403, 21.54915, -4.7554 ] + }, + { + "time": 0.6, + "offset": 138, + "vertices": [ 7.17962, 15.14358, 15.26523, -6.91741 ] + }, + { + "time": 0.7333, + "offset": 110, + "vertices": [ -0.82485, 0.73406, -0.01284, -1.10443, 0, 0, 0, 0, 1.4866, -2.59426, 0.98071, 2.82342, 2.7366, -10.49935, 6.12506, 8.95282, -2.60873, -2.28384, 3.43417, -0.47045, -2.28305, -4.76037, 5.08892, 1.40078, 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, 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, -1.37966, -1.75515, -2.13229, -0.65667, -2.86239, -0.77365, 2.45989, -1.65319 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-ts/webgl/example/assets/raptor.png b/spine-ts/webgl/example/assets/raptor.png new file mode 100644 index 0000000000000000000000000000000000000000..503d1c4462bee2fb82d3943688b9d89ad1175244 GIT binary patch literal 506867 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�t*~powQ4B#V;c=VlO!aud@BEGjy#j|RE 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%0DmoMXzlIxRHA!qGzlN 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

=?C7Uin6v{h!j!iYA*tVhNDfj*g70Zg~q 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

+b3W#03nX7b_t42XsnHp;2;*yR?R*;nc^ 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

R&g_Ngh6%$SD{^p6Es^E&16u^4!q?orjufT7HqP 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�T+C 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
52uhxTxKE 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

  • wvT{&&CD?s%BnGEg@3&} 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
    GL+0 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 E|8G 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

    Ydy*8i) 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 eTGv8piQE+Z}J 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

    K*#xKpxCWhA-Dh6-y1Bb)(afZPA!- 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

    `-7@eeZUr=vZDG=ba3-bom-_W? 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

    *Y5)3J?JT0NSS-x@Wz5^GL_<+p_2gMj~kq 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 _%;;=k&&(3N52??mqTed}cfK1XKU%*tDHp@Xl?; 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�#@A=Q2|#I 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%0Ddw-%JtZ~*!H18d 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 z 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 literal 0 HcmV?d00001 diff --git a/spine-ts/webgl/example/assets/vine.atlas b/spine-ts/webgl/example/assets/vine.atlas new file mode 100644 index 000000000..313213413 --- /dev/null +++ b/spine-ts/webgl/example/assets/vine.atlas @@ -0,0 +1,13 @@ + +vine.png +size: 128,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +images/vine + rotate: false + xy: 2, 2 + size: 68, 962 + orig: 68, 962 + offset: 0, 0 + index: -1 diff --git a/spine-ts/webgl/example/assets/vine.json b/spine-ts/webgl/example/assets/vine.json new file mode 100644 index 000000000..a08c20022 --- /dev/null +++ b/spine-ts/webgl/example/assets/vine.json @@ -0,0 +1,300 @@ +{ +"skeleton": { "hash": "Ww/IgnvLkO+Bc7+ljr0JS3OTq8Q", "spine": "3.4.00", "width": 227.35, "height": 841.02, "images": "" }, +"bones": [ + { "name": "root" }, + { "name": "vine1", "parent": "root", "length": 74, "rotation": 90, "x": 339.09, "y": -467.15, "color": "f700ffff" }, + { "name": "vine2", "parent": "vine1", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine3", "parent": "vine2", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine4", "parent": "vine3", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine5", "parent": "vine4", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine6", "parent": "vine5", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine7", "parent": "vine6", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine8", "parent": "vine7", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine9", "parent": "vine8", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine10", "parent": "vine9", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine11", "parent": "vine10", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine12", "parent": "vine11", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine13", "parent": "vine12", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine-control1", "parent": "root", "length": 296.68, "rotation": 88.64, "x": -2.5, "y": 2.55, "color": "ff0004ff" }, + { "name": "vine-control2", "parent": "vine-control1", "length": 292.59, "rotation": 0.96, "x": 296.68, "color": "ff0004ff" }, + { "name": "vine-control3", "parent": "vine-control2", "length": 247.5, "rotation": 0.16, "x": 292.59, "color": "ff0004ff" }, + { "name": "vine-control4", "parent": "vine-control3", "length": 212.43, "rotation": 0.5, "x": 247.5, "color": "ff0004ff" } +], +"slots": [ + { "name": "vine-path", "bone": "root", "attachment": "vine-path" }, + { "name": "vine", "bone": "vine1", "attachment": "images/vine" } +], +"path": [ + { + "name": "vine-path", + "bones": [ "vine1", "vine2", "vine3", "vine4", "vine5", "vine6", "vine7", "vine8", "vine9", "vine10", "vine11", "vine12", "vine13" ], + "target": "vine-path", + "rotateMode": "chainScale" + } +], +"skins": { + "default": { + "vine": { + "images/vine": { + "type": "mesh", + "uvs": [ 0, 0, 0.5, 0, 1, 0, 1, 0.03846, 1, 0.07692, 1, 0.11538, 1, 0.15384, 1, 0.1923, 1, 0.23076, 1, 0.26923, 1, 0.30769, 1, 0.34615, 1, 0.38461, 1, 0.42307, 1, 0.46153, 1, 0.5, 1, 0.53846, 1, 0.57692, 1, 0.61538, 1, 0.65384, 1, 0.6923, 1, 0.73076, 1, 0.76923, 1, 0.80769, 1, 0.84615, 1, 0.88461, 1, 0.92307, 1, 0.96153, 1, 1, 0.5, 1, 0, 1, 0, 0.96153, 0, 0.92307, 0, 0.88461, 0, 0.84615, 0, 0.80769, 0, 0.76923, 0, 0.73076, 0, 0.6923, 0, 0.65384, 0, 0.61538, 0, 0.57692, 0, 0.53846, 0, 0.5, 0, 0.46153, 0, 0.42307, 0, 0.38461, 0, 0.34615, 0, 0.30769, 0, 0.26923, 0, 0.23076, 0, 0.1923, 0, 0.15384, 0, 0.11538, 0, 0.07692, 0, 0.03846, 0.5, 0.03846, 0.5, 0.07692, 0.5, 0.11538, 0.5, 0.15384, 0.5, 0.1923, 0.5, 0.23076, 0.5, 0.26923, 0.5, 0.30769, 0.5, 0.34615, 0.5, 0.38461, 0.5, 0.42307, 0.5, 0.46153, 0.5, 0.5, 0.5, 0.53846, 0.5, 0.57692, 0.5, 0.61538, 0.5, 0.65384, 0.5, 0.6923, 0.5, 0.73076, 0.5, 0.76923, 0.5, 0.80769, 0.5, 0.84615, 0.5, 0.88461, 0.5, 0.92307, 0.5, 0.96153 ], + "triangles": [ 57, 56, 3, 54, 55, 56, 56, 2, 3, 55, 1, 56, 56, 1, 2, 55, 0, 1, 54, 56, 57, 59, 58, 5, 52, 53, 58, 58, 4, 5, 53, 57, 58, 58, 57, 4, 53, 54, 57, 57, 3, 4, 61, 60, 7, 50, 51, 60, 60, 6, 7, 51, 59, 60, 60, 59, 6, 51, 52, 59, 59, 5, 6, 52, 58, 59, 63, 62, 9, 48, 49, 62, 62, 8, 9, 49, 61, 62, 62, 61, 8, 49, 50, 61, 61, 7, 8, 50, 60, 61, 65, 64, 11, 46, 47, 64, 64, 10, 11, 47, 63, 64, 64, 63, 10, 47, 48, 63, 63, 9, 10, 48, 62, 63, 67, 66, 13, 44, 45, 66, 66, 12, 13, 45, 65, 66, 66, 65, 12, 45, 46, 65, 65, 11, 12, 46, 64, 65, 69, 68, 15, 42, 43, 68, 68, 14, 15, 43, 67, 68, 68, 67, 14, 43, 44, 67, 67, 13, 14, 44, 66, 67, 71, 70, 17, 40, 41, 70, 70, 16, 17, 41, 69, 70, 70, 69, 16, 41, 42, 69, 69, 15, 16, 42, 68, 69, 73, 72, 19, 38, 39, 72, 72, 18, 19, 39, 71, 72, 72, 71, 18, 39, 40, 71, 71, 17, 18, 40, 70, 71, 75, 74, 21, 36, 37, 74, 74, 20, 21, 37, 73, 74, 74, 73, 20, 37, 38, 73, 73, 19, 20, 38, 72, 73, 77, 76, 23, 34, 35, 76, 76, 22, 23, 35, 75, 76, 76, 75, 22, 35, 36, 75, 75, 21, 22, 36, 74, 75, 78, 77, 24, 33, 34, 77, 32, 78, 79, 79, 78, 25, 32, 33, 78, 78, 24, 25, 33, 77, 78, 77, 23, 24, 34, 76, 77, 79, 25, 26, 29, 27, 28, 30, 80, 29, 29, 80, 27, 30, 31, 80, 80, 26, 27, 31, 79, 80, 80, 79, 26, 31, 32, 79 ], + "vertices": [ 4, 10, 294, 33.89, 3.2E-4, 11, 220, 33.89, 0.01648, 12, 146, 33.89, 0.21526, 13, 72, 33.89, 0.76791, 3, 11, 220, -0.1, 0.00752, 12, 146, -0.1, 0.16869, 13, 72, -0.1, 0.82378, 4, 10, 294, -34.09999, 3.2E-4, 11, 220, -34.09999, 0.01648, 12, 146, -34.09999, 0.21526, 13, 72, -34.09999, 0.76791, 4, 10, 257, -34.09999, 0.00195, 11, 183, -34.09999, 0.04739, 12, 109, -34.09999, 0.33351, 13, 35, -34.09999, 0.61714, 5, 9, 294, -34.09999, 2.4E-4, 10, 220, -34.09999, 0.01163, 11, 146, -34.09999, 0.14109, 12, 72, -34.09999, 0.49171, 13, -1.99, -34.09999, 0.35531, 5, 9, 257, -34.09999, 0.00195, 10, 183, -34.09999, 0.04663, 11, 109, -34.09999, 0.31166, 12, 35, -34.09999, 0.48761, 13, -38.99, -34.09999, 0.15212, 6, 8, 294, -34.09999, 2.4E-4, 9, 220, -34.09999, 0.01163, 10, 146, -34.09999, 0.14101, 11, 72, -34.09999, 0.48685, 12, -1.99, -34.09999, 0.31174, 13, -75.99, -34.09999, 0.0485, 6, 8, 257, -34.09999, 0.00195, 9, 183, -34.09999, 0.04663, 10, 109, -34.09999, 0.31166, 11, 35, -34.09999, 0.48685, 12, -38.99, -34.09999, 0.14101, 13, -112.99, -34.09999, 0.01188, 7, 7, 294, -34.09999, 2.4E-4, 8, 220, -34.09999, 0.01163, 9, 146, -34.09999, 0.14101, 10, 72, -34.09999, 0.48685, 11, -1.99, -34.09999, 0.31166, 12, -75.99, -34.09999, 0.04663, 13, -149.99, -34.09999, 0.00195, 7, 7, 257, -34.09999, 0.00195, 8, 183, -34.09999, 0.04663, 9, 109, -34.09999, 0.31166, 10, 35, -34.09999, 0.48685, 11, -38.99, -34.09999, 0.14101, 12, -112.99, -34.09999, 0.01163, 13, -186.99, -34.09999, 2.4E-4, 7, 6, 294, -34.09999, 2.4E-4, 7, 220, -34.09999, 0.01163, 8, 146, -34.09999, 0.14101, 9, 72, -34.09999, 0.48685, 10, -1.99, -34.09999, 0.31166, 11, -75.99, -34.09999, 0.04663, 12, -149.99, -34.09999, 0.00195, 7, 6, 257, -34.09999, 0.00195, 7, 183, -34.09999, 0.04663, 8, 109, -34.09999, 0.31166, 9, 35, -34.09999, 0.48685, 10, -38.99, -34.09999, 0.14101, 11, -112.99, -34.09999, 0.01163, 12, -186.99, -34.09999, 2.4E-4, 7, 5, 294, -34.09999, 2.4E-4, 6, 220, -34.09999, 0.01163, 7, 146, -34.09999, 0.14101, 8, 72, -34.09999, 0.48685, 9, -1.99, -34.09999, 0.31166, 10, -75.99, -34.09999, 0.04663, 11, -149.99, -34.09999, 0.00195, 7, 5, 257, -34.09999, 0.00195, 6, 183, -34.09999, 0.04663, 7, 109, -34.09999, 0.31166, 8, 35, -34.09999, 0.48685, 9, -38.99, -34.09999, 0.14101, 10, -112.99, -34.09999, 0.01163, 11, -186.99, -34.09999, 2.4E-4, 7, 4, 294, -34.09999, 2.4E-4, 5, 220, -34.09999, 0.01163, 6, 146, -34.09999, 0.14101, 7, 72, -34.09999, 0.48685, 8, -1.99, -34.09999, 0.31166, 9, -75.99, -34.09999, 0.04663, 10, -149.99, -34.09999, 0.00195, 7, 4, 257, -34.09999, 0.00195, 5, 183, -34.09999, 0.04663, 6, 109, -34.09999, 0.31166, 7, 35, -34.09999, 0.48685, 8, -38.99, -34.09999, 0.14101, 9, -112.99, -34.09999, 0.01163, 10, -186.99, -34.09999, 2.4E-4, 7, 3, 294, -34.09999, 2.4E-4, 4, 220, -34.09999, 0.01163, 5, 146, -34.09999, 0.14101, 6, 72, -34.09999, 0.48685, 7, -1.99, -34.09999, 0.31166, 8, -75.99, -34.09999, 0.04663, 9, -149.99, -34.09999, 0.00195, 7, 3, 257, -34.09999, 0.00195, 4, 183, -34.09999, 0.04663, 5, 109, -34.09999, 0.31166, 6, 35, -34.09999, 0.48685, 7, -38.99, -34.09999, 0.14101, 8, -112.99, -34.09999, 0.01163, 9, -186.99, -34.09999, 2.4E-4, 7, 2, 294, -34.09999, 2.4E-4, 3, 220, -34.09999, 0.01163, 4, 146, -34.09999, 0.14101, 5, 72, -34.09999, 0.48685, 6, -1.99, -34.09999, 0.31166, 7, -75.99, -34.09999, 0.04663, 8, -149.99, -34.09999, 0.00195, 7, 2, 257, -34.09999, 0.00195, 3, 183, -34.09999, 0.04663, 4, 109, -34.09999, 0.31166, 5, 35, -34.09999, 0.48685, 6, -38.99, -34.09999, 0.14101, 7, -112.99, -34.09999, 0.01163, 8, -186.99, -34.09999, 2.4E-4, 7, 1, 294, -34.09999, 2.4E-4, 2, 220, -34.09999, 0.01163, 3, 146, -34.09999, 0.14101, 4, 72, -34.09999, 0.48685, 5, -1.99, -34.09999, 0.31166, 6, -75.99, -34.09999, 0.04663, 7, -149.99, -34.09999, 0.00195, 7, 1, 257, -34.09999, 0.0017, 2, 183, -34.09999, 0.04687, 3, 109, -34.09999, 0.31166, 4, 35, -34.09999, 0.48685, 5, -38.99, -34.09999, 0.14101, 6, -112.99, -34.09999, 0.01163, 7, -186.99, -34.09999, 2.4E-4, 6, 1, 220, -34.09999, 0.01033, 2, 146, -34.09999, 0.14256, 3, 72, -34.09999, 0.48685, 4, -1.99, -34.09999, 0.31166, 5, -75.99, -34.09999, 0.04663, 6, -149.99, -34.09999, 0.00195, 6, 1, 183, -34.09999, 0.04058, 2, 109, -34.09999, 0.31966, 3, 35, -34.09999, 0.48685, 4, -38.99, -34.09999, 0.14101, 5, -112.99, -34.09999, 0.01163, 6, -186.99, -34.09999, 2.4E-4, 5, 1, 146, -34.09999, 0.1274, 2, 72, -34.09999, 0.51233, 3, -1.99, -34.09999, 0.31166, 4, -75.99, -34.09999, 0.04663, 5, -149.99, -34.09999, 0.00195, 5, 1, 109, -34.09999, 0.30116, 2, 35, -34.09999, 0.54594, 3, -38.99, -34.09999, 0.14101, 4, -112.99, -34.09999, 0.01163, 5, -186.99, -34.09999, 2.4E-4, 4, 1, 72, -34.09999, 0.55403, 2, -1.99, -34.09999, 0.39738, 3, -75.99, -34.09999, 0.04663, 4, -149.99, -34.09999, 0.00195, 4, 1, 35, -34.09999, 0.77978, 2, -38.99, -34.09999, 0.20825, 3, -112.99, -34.09999, 0.01171, 4, -186.99, -34.09999, 2.4E-4, 3, 1, -1.99, -34.09999, 0.89032, 2, -75.99, -34.09999, 0.10696, 3, -149.99, -34.09999, 0.00271, 3, 1, -1.99, -0.1, 0.9264, 2, -75.99, -0.1, 0.07272, 3, -149.99, -0.1, 8.6E-4, 3, 1, -1.99, 33.89, 0.89032, 2, -75.99, 33.89, 0.10696, 3, -149.99, 33.89, 0.00271, 4, 1, 35, 33.89, 0.77978, 2, -38.99, 33.89, 0.20825, 3, -112.99, 33.89, 0.01171, 4, -186.99, 33.89, 2.4E-4, 4, 1, 72, 33.89, 0.55403, 2, -1.99, 33.89, 0.39738, 3, -75.99, 33.89, 0.04663, 4, -149.99, 33.89, 0.00195, 5, 1, 109, 33.89, 0.30116, 2, 35, 33.89, 0.54594, 3, -38.99, 33.89, 0.14101, 4, -112.99, 33.89, 0.01163, 5, -186.99, 33.89, 2.4E-4, 5, 1, 146, 33.89, 0.1274, 2, 72, 33.89, 0.51233, 3, -1.99, 33.89, 0.31166, 4, -75.99, 33.89, 0.04663, 5, -149.99, 33.89, 0.00195, 6, 1, 183, 33.89, 0.04058, 2, 109, 33.89, 0.31966, 3, 35, 33.89, 0.48685, 4, -38.99, 33.89, 0.14101, 5, -112.99, 33.89, 0.01163, 6, -186.99, 33.89, 2.4E-4, 6, 1, 220, 33.89, 0.01033, 2, 146, 33.89, 0.14256, 3, 72, 33.89, 0.48685, 4, -1.99, 33.89, 0.31166, 5, -75.99, 33.89, 0.04663, 6, -149.99, 33.89, 0.00195, 7, 1, 257, 33.89, 0.0017, 2, 183, 33.89, 0.04687, 3, 109, 33.89, 0.31166, 4, 35, 33.89, 0.48685, 5, -38.99, 33.89, 0.14101, 6, -112.99, 33.89, 0.01163, 7, -186.99, 33.89, 2.4E-4, 7, 1, 294, 33.89, 2.4E-4, 2, 220, 33.89, 0.01163, 3, 146, 33.89, 0.14101, 4, 72, 33.89, 0.48685, 5, -1.99, 33.89, 0.31166, 6, -75.99, 33.89, 0.04663, 7, -149.99, 33.89, 0.00195, 7, 2, 257, 33.89, 0.00195, 3, 183, 33.89, 0.04663, 4, 109, 33.89, 0.31166, 5, 35, 33.89, 0.48685, 6, -38.99, 33.89, 0.14101, 7, -112.99, 33.89, 0.01163, 8, -186.99, 33.89, 2.4E-4, 7, 2, 294, 33.89, 2.4E-4, 3, 220, 33.89, 0.01163, 4, 146, 33.89, 0.14101, 5, 72, 33.89, 0.48685, 6, -1.99, 33.89, 0.31166, 7, -75.99, 33.89, 0.04663, 8, -149.99, 33.89, 0.00195, 7, 3, 257, 33.89, 0.00195, 4, 183, 33.89, 0.04663, 5, 109, 33.89, 0.31166, 6, 35, 33.89, 0.48685, 7, -38.99, 33.89, 0.14101, 8, -112.99, 33.89, 0.01163, 9, -186.99, 33.89, 2.4E-4, 7, 3, 294, 33.89, 2.4E-4, 4, 220, 33.89, 0.01163, 5, 146, 33.89, 0.14101, 6, 72, 33.89, 0.48685, 7, -1.99, 33.89, 0.31166, 8, -75.99, 33.89, 0.04663, 9, -149.99, 33.89, 0.00195, 7, 4, 257, 33.89, 0.00195, 5, 183, 33.89, 0.04663, 6, 109, 33.89, 0.31166, 7, 35, 33.89, 0.48685, 8, -38.99, 33.89, 0.14101, 9, -112.99, 33.89, 0.01163, 10, -186.99, 33.89, 2.4E-4, 7, 4, 294, 33.89, 2.4E-4, 5, 220, 33.89, 0.01163, 6, 146, 33.89, 0.14101, 7, 72, 33.89, 0.48685, 8, -1.99, 33.89, 0.31166, 9, -75.99, 33.89, 0.04663, 10, -149.99, 33.89, 0.00195, 7, 5, 257, 33.89, 0.00195, 6, 183, 33.89, 0.04663, 7, 109, 33.89, 0.31166, 8, 35, 33.89, 0.48685, 9, -38.99, 33.89, 0.14101, 10, -112.99, 33.89, 0.01163, 11, -186.99, 33.89, 2.4E-4, 7, 5, 294, 33.89, 2.4E-4, 6, 220, 33.89, 0.01163, 7, 146, 33.89, 0.14101, 8, 72, 33.89, 0.48685, 9, -1.99, 33.89, 0.31166, 10, -75.99, 33.89, 0.04663, 11, -149.99, 33.89, 0.00195, 7, 6, 257, 33.89, 0.00195, 7, 183, 33.89, 0.04663, 8, 109, 33.89, 0.31166, 9, 35, 33.89, 0.48685, 10, -38.99, 33.89, 0.14101, 11, -112.99, 33.89, 0.01163, 12, -186.99, 33.89, 2.4E-4, 7, 6, 294, 33.89, 2.4E-4, 7, 220, 33.89, 0.01163, 8, 146, 33.89, 0.14101, 9, 72, 33.89, 0.48685, 10, -1.99, 33.89, 0.31166, 11, -75.99, 33.89, 0.04663, 12, -149.99, 33.89, 0.00195, 7, 7, 257, 33.89, 0.00195, 8, 183, 33.89, 0.04663, 9, 109, 33.89, 0.31166, 10, 35, 33.89, 0.48685, 11, -38.99, 33.89, 0.14101, 12, -112.99, 33.89, 0.01163, 13, -186.99, 33.89, 2.4E-4, 7, 7, 294, 33.89, 2.4E-4, 8, 220, 33.89, 0.01163, 9, 146, 33.89, 0.14101, 10, 72, 33.89, 0.48685, 11, -1.99, 33.89, 0.31166, 12, -75.99, 33.89, 0.04663, 13, -149.99, 33.89, 0.00195, 6, 8, 257, 33.89, 0.00195, 9, 183, 33.89, 0.04663, 10, 109, 33.89, 0.31166, 11, 35, 33.89, 0.48685, 12, -38.99, 33.89, 0.14101, 13, -112.99, 33.89, 0.01188, 6, 8, 294, 33.89, 2.4E-4, 9, 220, 33.89, 0.01163, 10, 146, 33.89, 0.14101, 11, 72, 33.89, 0.48685, 12, -1.99, 33.89, 0.31174, 13, -75.99, 33.89, 0.0485, 5, 9, 257, 33.89, 0.00195, 10, 183, 33.89, 0.04663, 11, 109, 33.89, 0.31166, 12, 35, 33.89, 0.48761, 13, -38.99, 33.89, 0.15212, 5, 9, 294, 33.89, 2.4E-4, 10, 220, 33.89, 0.01163, 11, 146, 33.89, 0.14109, 12, 72, 33.89, 0.49171, 13, -1.99, 33.89, 0.35531, 4, 10, 257, 33.89, 0.00195, 11, 183, 33.89, 0.04739, 12, 109, 33.89, 0.33351, 13, 35, 33.89, 0.61714, 4, 10, 257, -0.1, 6.5E-4, 11, 183, -0.1, 0.03067, 12, 109, -0.1, 0.31658, 13, 35, -0.1, 0.65209, 4, 10, 220, -0.1, 0.00542, 11, 146, -0.1, 0.11402, 12, 72, -0.1, 0.5478, 13, -1.99, -0.1, 0.33273, 5, 9, 257, -0.1, 6.5E-4, 10, 183, -0.1, 0.03045, 11, 109, -0.1, 0.30373, 12, 35, -0.1, 0.54592, 13, -38.99, -0.1, 0.11923, 5, 9, 220, -0.1, 0.00542, 10, 146, -0.1, 0.11402, 11, 72, -0.1, 0.5457, 12, -1.99, -0.1, 0.30373, 13, -75.99, -0.1, 0.0311, 6, 8, 257, -0.1, 6.5E-4, 9, 183, -0.1, 0.03045, 10, 109, -0.1, 0.30373, 11, 35, -0.1, 0.5457, 12, -38.99, -0.1, 0.11402, 13, -112.99, -0.1, 0.00542, 6, 8, 220, -0.1, 0.00542, 9, 146, -0.1, 0.11402, 10, 72, -0.1, 0.5457, 11, -1.99, -0.1, 0.30373, 12, -75.99, -0.1, 0.03045, 13, -149.99, -0.1, 6.5E-4, 6, 7, 257, -0.1, 6.5E-4, 8, 183, -0.1, 0.03045, 9, 109, -0.1, 0.30373, 10, 35, -0.1, 0.5457, 11, -38.99, -0.1, 0.11402, 12, -112.99, -0.1, 0.00542, 6, 7, 220, -0.1, 0.00542, 8, 146, -0.1, 0.11402, 9, 72, -0.1, 0.5457, 10, -1.99, -0.1, 0.30373, 11, -75.99, -0.1, 0.03045, 12, -149.99, -0.1, 6.5E-4, 6, 6, 257, -0.1, 6.5E-4, 7, 183, -0.1, 0.03045, 8, 109, -0.1, 0.30373, 9, 35, -0.1, 0.5457, 10, -38.99, -0.1, 0.11402, 11, -112.99, -0.1, 0.00542, 6, 6, 220, -0.1, 0.00542, 7, 146, -0.1, 0.11402, 8, 72, -0.1, 0.5457, 9, -1.99, -0.1, 0.30373, 10, -75.99, -0.1, 0.03045, 11, -149.99, -0.1, 6.5E-4, 6, 5, 257, -0.1, 6.5E-4, 6, 183, -0.1, 0.03045, 7, 109, -0.1, 0.30373, 8, 35, -0.1, 0.5457, 9, -38.99, -0.1, 0.11402, 10, -112.99, -0.1, 0.00542, 6, 5, 220, -0.1, 0.00542, 6, 146, -0.1, 0.11402, 7, 72, -0.1, 0.5457, 8, -1.99, -0.1, 0.30373, 9, -75.99, -0.1, 0.03045, 10, -149.99, -0.1, 6.5E-4, 6, 4, 257, -0.1, 6.5E-4, 5, 183, -0.1, 0.03045, 6, 109, -0.1, 0.30373, 7, 35, -0.1, 0.5457, 8, -38.99, -0.1, 0.11402, 9, -112.99, -0.1, 0.00542, 6, 4, 220, -0.1, 0.00542, 5, 146, -0.1, 0.11402, 6, 72, -0.1, 0.5457, 7, -1.99, -0.1, 0.30373, 8, -75.99, -0.1, 0.03045, 9, -149.99, -0.1, 6.5E-4, 6, 3, 257, -0.1, 6.5E-4, 4, 183, -0.1, 0.03045, 5, 109, -0.1, 0.30373, 6, 35, -0.1, 0.5457, 7, -38.99, -0.1, 0.11402, 8, -112.99, -0.1, 0.00542, 6, 3, 220, -0.1, 0.00542, 4, 146, -0.1, 0.11402, 5, 72, -0.1, 0.5457, 6, -1.99, -0.1, 0.30373, 7, -75.99, -0.1, 0.03045, 8, -149.99, -0.1, 6.5E-4, 6, 2, 257, -0.1, 6.5E-4, 3, 183, -0.1, 0.03045, 4, 109, -0.1, 0.30373, 5, 35, -0.1, 0.5457, 6, -38.99, -0.1, 0.11402, 7, -112.99, -0.1, 0.00542, 6, 2, 220, -0.1, 0.00542, 3, 146, -0.1, 0.11402, 4, 72, -0.1, 0.5457, 5, -1.99, -0.1, 0.30373, 6, -75.99, -0.1, 0.03045, 7, -149.99, -0.1, 6.5E-4, 6, 1, 257, -0.1, 6.5E-4, 2, 183, -0.1, 0.03045, 3, 109, -0.1, 0.30373, 4, 35, -0.1, 0.5457, 5, -38.99, -0.1, 0.11402, 6, -112.99, -0.1, 0.00542, 6, 1, 220, -0.1, 0.00477, 2, 146, -0.1, 0.11467, 3, 72, -0.1, 0.5457, 4, -1.99, -0.1, 0.30373, 5, -75.99, -0.1, 0.03045, 6, -149.99, -0.1, 6.5E-4, 5, 1, 183, -0.1, 0.02676, 2, 109, -0.1, 0.30807, 3, 35, -0.1, 0.5457, 4, -38.99, -0.1, 0.11402, 5, -112.99, -0.1, 0.00542, 5, 1, 146, -0.1, 0.09905, 2, 72, -0.1, 0.5661, 3, -1.99, -0.1, 0.30373, 4, -75.99, -0.1, 0.03045, 5, -149.99, -0.1, 6.5E-4, 4, 1, 109, -0.1, 0.27658, 2, 35, -0.1, 0.60395, 3, -38.99, -0.1, 0.11402, 4, -112.99, -0.1, 0.00542, 4, 1, 72, -0.1, 0.55929, 2, -1.99, -0.1, 0.40959, 3, -75.99, -0.1, 0.03045, 4, -149.99, -0.1, 6.5E-4, 3, 1, 35, -0.1, 0.81845, 2, -38.99, -0.1, 0.17611, 3, -112.99, -0.1, 0.00542 ], + "hull": 56, + "edges": [ 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, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 92, 94, 94, 96, 96, 98, 98, 100, 100, 102, 102, 104, 104, 106, 106, 108, 108, 110, 110, 0, 0, 2, 58, 60, 2, 4, 56, 58, 62, 160, 160, 54, 64, 158, 158, 52, 66, 156, 156, 50, 68, 154, 154, 48, 46, 152, 152, 70, 72, 150, 150, 44, 42, 148, 148, 74, 76, 146, 146, 40, 38, 144, 144, 78, 80, 142, 142, 36, 34, 140, 140, 82, 84, 138, 138, 32, 30, 136, 136, 86, 88, 134, 134, 28, 26, 132, 132, 90, 92, 130, 130, 24, 22, 128, 128, 94, 96, 126, 126, 20, 18, 124, 124, 98, 100, 122, 122, 16, 14, 120, 120, 102, 12, 118, 118, 104, 106, 116, 116, 10, 8, 114, 114, 108, 110, 112, 112, 6 ], + "width": 68, + "height": 962 + } + }, + "vine-path": { + "vine-path": { + "type": "path", + "lengths": [ 223.68, 474.79, 780.31, 992.69, 1196.42, 2277.75 ], + "vertexCount": 18, + "vertices": [ 1, 14, -31.64, 22.49, 1, 1, 14, -2.73, -6.56, 1, 1, 14, 56.89, -69, 1, 1, 14, 115.57, 75.01, 1, 1, 14, 198.6, 53.37, 1, 2, 14, 332.76, 19.74, 0.8, 15, 36.41, 19.12999, 0.19999, 2, 14, 276.72, -68.37, 0.232, 15, -21.1, -68.01999, 0.76799, 1, 15, 96.09, -93.88, 1, 2, 15, 229.75, -122.63, 0.664, 16, -63.18, -122.45, 0.33599, 2, 15, 242.53, 29.31, 0.52, 16, -49.97, 29.45, 0.47999, 1, 16, 66.72, 38.65, 1, 2, 16, 183.42, 47.85, 0.80799, 17, -63.65, 48.41, 0.192, 2, 16, 177.29, -41.22, 0.77599, 17, -70.56, -40.61, 0.224, 2, 16, 265.5, -16.18, 0.488, 17, 17.86, -16.34, 0.51199, 2, 16, 343.25, 7.25, 0.21599, 17, 95.81, 6.41, 0.784, 1, 17, 138.78, 45.72, 1, 1, 17, 212.86, 5.44, 1, 1, 14, 1094.34, -1.02, 1 ] + } + } + } +}, +"animations": { + "animation": { + "slots": { + "vine": { + "color": [ + { + "time": 0, + "color": "ffcb73ff", + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 10.3666, "color": "fefaffff" } + ] + } + }, + "bones": { + "vine1": { + "scale": [ + { + "time": 0, + "x": 1, + "y": 0.183, + "curve": [ 0.166, 0.22, 0.598, 0.99 ] + }, + { + "time": 3.6333, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 1.438 } + ] + }, + "vine-control1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": 2.86, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.7, + "angle": -0.13, + "curve": [ 0.505, 0, 0.75, 1 ] + }, + { + "time": 6.4333, + "angle": 0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 9.6, "angle": 0.68 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.792, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.568, 0.99 ] + }, + { "time": 11.4333, "x": 1, "y": 0.636 } + ] + }, + "vine-control2": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": 2.86, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.7, + "angle": -0.13, + "curve": [ 0.505, 0, 0.75, 1 ] + }, + { + "time": 6.4333, + "angle": 0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 9.6, "angle": 0.68 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + }, + "vine-control3": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": 10.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.7, + "angle": -11.18, + "curve": [ 0.505, 0, 0.75, 1 ] + }, + { + "time": 6.4333, + "angle": -0.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 9.6, "angle": -5.23 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + }, + "vine-control4": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": 10.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.7, + "angle": -11.18, + "curve": [ 0.505, 0, 0.75, 1 ] + }, + { + "time": 6.4333, + "angle": 7.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 9.6, "angle": 2.71 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + } + }, + "paths": { + "vine-path": { + "position": [ + { "time": 0, "position": -0.1 }, + { "time": 0.3333, "position": -0.025 } + ], + "spacing": [ + { "time": 0, "spacing": -100 }, + { + "time": 0.3333, + "spacing": -71.8, + "curve": [ 0.32, 0.18, 0.624, 0.6 ] + }, + { + "time": 3.1333, + "spacing": -13.199, + "curve": [ 0.251, 0.5, 0.557, 0.98 ] + }, + { "time": 6.7333, "spacing": 20.9 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-ts/webgl/example/assets/vine.png b/spine-ts/webgl/example/assets/vine.png new file mode 100644 index 0000000000000000000000000000000000000000..15ad8b7367864126d1a4d9500186426279bbd412 GIT binary patch literal 160151 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�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 literal 0 HcmV?d00001 diff --git a/spine-ts/webgl/example/index.html b/spine-ts/webgl/example/index.html new file mode 100644 index 000000000..4e89c96cf --- /dev/null +++ b/spine-ts/webgl/example/index.html @@ -0,0 +1,219 @@ + + + + +

    +
    +Skeleton: +Animation: +Skin: +
    + + + \ No newline at end of file diff --git a/spine-ts/webgl/src/AssetManager.ts b/spine-ts/webgl/src/AssetManager.ts new file mode 100644 index 000000000..02b403a0d --- /dev/null +++ b/spine-ts/webgl/src/AssetManager.ts @@ -0,0 +1,133 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class AssetManager implements Disposable { + private _gl: WebGLRenderingContext; + private _assets: Map = {}; + private _errors: Map = {}; + private _toLoad = 0; + private _loaded = 0; + + constructor (gl: WebGLRenderingContext) { + this._gl = gl; + } + + loadText(path: string, + success: (path: string, text: string) => void = null, + error: (path: string, error: string) => void = null + ) { + this._toLoad++; + let request = new XMLHttpRequest(); + request.onreadystatechange = () => { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + if (success) success(path, request.responseText); + this._assets[path] = request.responseText; + } else { + if (error) error(path, `Couldn't load text ${path}: status ${request.status}, ${request.responseText}`); + this._errors[path] = `Couldn't load text ${path}: status ${request.status}, ${request.responseText}`; + } + this._toLoad--; + this._loaded++; + } + }; + request.open("GET", path, true); + request.send(); + } + + loadTexture (path: string, + success: (path: string, image: HTMLImageElement) => void = null, + error: (path: string, error: string) => void = null + ) { + this._toLoad++; + let img = new Image(); + img.src = path; + img.onload = (ev) => { + if (success) success(path, img); + let texture = new Texture(this._gl, img); + this._assets[path] = texture; + this._toLoad--; + this._loaded++; + } + img.onerror = (ev) => { + if (error) error(path, `Couldn't load image ${path}`); + this._errors[path] = `Couldn't load image ${path}`; + this._toLoad--; + this._loaded++; + } + } + + get (path: string) { + return this._assets[path]; + } + + remove (path: string) { + let asset = this._assets[path]; + if (asset instanceof Texture) { + asset.dispose(); + } + this._assets[path] = null; + } + + removeAll () { + for (let key in this._assets) { + let asset = this._assets[key]; + if (asset instanceof Texture) asset.dispose(); + } + this._assets = {}; + } + + isLoadingComplete (): boolean { + return this._toLoad == 0; + } + + toLoad (): number { + return this._toLoad; + } + + loaded (): number { + return this._loaded; + } + + dispose () { + this.removeAll(); + } + + hasErrors() { + return Object.keys(this._errors).length > 0; + } + + errors() { + return this._errors; + } + } +} diff --git a/spine-ts/webgl/src/Matrix4.ts b/spine-ts/webgl/src/Matrix4.ts new file mode 100644 index 000000000..aa80403a4 --- /dev/null +++ b/spine-ts/webgl/src/Matrix4.ts @@ -0,0 +1,303 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export const M00 = 0; + export const M01 = 4; + export const M02 = 8; + export const M03 = 12; + export const M10 = 1; + export const M11 = 5; + export const M12 = 9; + export const M13 = 13; + export const M20 = 2; + export const M21 = 6; + export const M22 = 10; + export const M23 = 14; + export const M30 = 3; + export const M31 = 7; + export const M32 = 11; + export const M33 = 15; + + export class Matrix4 { + temp: Float32Array = new Float32Array(16); + values: Float32Array = new Float32Array(16); + + constructor () { + let v = this.values; + v[M00] = 1; + v[M11] = 1; + v[M22] = 1; + v[M33] = 1; + } + + set (values: ArrayLike): Matrix4 { + this.values.set(values); + return this; + } + + transpose (): Matrix4 { + let t = this.temp; + let v = this.values; + t[M00] = v[M00]; + t[M01] = v[M10]; + t[M02] = v[M20]; + t[M03] = v[M30]; + t[M10] = v[M01]; + t[M11] = v[M11]; + t[M12] = v[M21]; + t[M13] = v[M31]; + t[M20] = v[M02]; + t[M21] = v[M12]; + t[M22] = v[M22]; + t[M23] = v[M32]; + t[M30] = v[M03]; + t[M31] = v[M13]; + t[M32] = v[M23]; + t[M33] = v[M33]; + return this.set(t); + } + + identity (): Matrix4 { + let v = this.values; + v[M00] = 1; + v[M01] = 0; + v[M02] = 0; + v[M03] = 0; + v[M10] = 0; + v[M11] = 1; + v[M12] = 0; + v[M13] = 0; + v[M20] = 0; + v[M21] = 0; + v[M22] = 1; + v[M23] = 0; + v[M30] = 0; + v[M31] = 0; + v[M32] = 0; + v[M33] = 1; + return this; + } + + invert (): Matrix4 { + let v = this.values; + let t = this.temp; + let l_det = v[M30] * v[M21] * v[M12] * v[M03] - v[M20] * v[M31] * v[M12] * v[M03] - v[M30] * v[M11] * v[M22] * v[M03] + + v[M10] * v[M31] * v[M22] * v[M03] + v[M20] * v[M11] * v[M32] * v[M03] - v[M10] * v[M21] * v[M32] * v[M03] + - v[M30] * v[M21] * v[M02] * v[M13] + v[M20] * v[M31] * v[M02] * v[M13] + v[M30] * v[M01] * v[M22] * v[M13] + - v[M00] * v[M31] * v[M22] * v[M13] - v[M20] * v[M01] * v[M32] * v[M13] + v[M00] * v[M21] * v[M32] * v[M13] + + v[M30] * v[M11] * v[M02] * v[M23] - v[M10] * v[M31] * v[M02] * v[M23] - v[M30] * v[M01] * v[M12] * v[M23] + + v[M00] * v[M31] * v[M12] * v[M23] + v[M10] * v[M01] * v[M32] * v[M23] - v[M00] * v[M11] * v[M32] * v[M23] + - v[M20] * v[M11] * v[M02] * v[M33] + v[M10] * v[M21] * v[M02] * v[M33] + v[M20] * v[M01] * v[M12] * v[M33] + - v[M00] * v[M21] * v[M12] * v[M33] - v[M10] * v[M01] * v[M22] * v[M33] + v[M00] * v[M11] * v[M22] * v[M33]; + if (l_det == 0) throw new Error("non-invertible matrix"); + let inv_det = 1.0 / l_det; + t[M00] = v[M12] * v[M23] * v[M31] - v[M13] * v[M22] * v[M31] + v[M13] * v[M21] * v[M32] + - v[M11] * v[M23] * v[M32] - v[M12] * v[M21] * v[M33] + v[M11] * v[M22] * v[M33]; + t[M01] = v[M03] * v[M22] * v[M31] - v[M02] * v[M23] * v[M31] - v[M03] * v[M21] * v[M32] + + v[M01] * v[M23] * v[M32] + v[M02] * v[M21] * v[M33] - v[M01] * v[M22] * v[M33]; + t[M02] = v[M02] * v[M13] * v[M31] - v[M03] * v[M12] * v[M31] + v[M03] * v[M11] * v[M32] + - v[M01] * v[M13] * v[M32] - v[M02] * v[M11] * v[M33] + v[M01] * v[M12] * v[M33]; + t[M03] = v[M03] * v[M12] * v[M21] - v[M02] * v[M13] * v[M21] - v[M03] * v[M11] * v[M22] + + v[M01] * v[M13] * v[M22] + v[M02] * v[M11] * v[M23] - v[M01] * v[M12] * v[M23]; + t[M10] = v[M13] * v[M22] * v[M30] - v[M12] * v[M23] * v[M30] - v[M13] * v[M20] * v[M32] + + v[M10] * v[M23] * v[M32] + v[M12] * v[M20] * v[M33] - v[M10] * v[M22] * v[M33]; + t[M11] = v[M02] * v[M23] * v[M30] - v[M03] * v[M22] * v[M30] + v[M03] * v[M20] * v[M32] + - v[M00] * v[M23] * v[M32] - v[M02] * v[M20] * v[M33] + v[M00] * v[M22] * v[M33]; + t[M12] = v[M03] * v[M12] * v[M30] - v[M02] * v[M13] * v[M30] - v[M03] * v[M10] * v[M32] + + v[M00] * v[M13] * v[M32] + v[M02] * v[M10] * v[M33] - v[M00] * v[M12] * v[M33]; + t[M13] = v[M02] * v[M13] * v[M20] - v[M03] * v[M12] * v[M20] + v[M03] * v[M10] * v[M22] + - v[M00] * v[M13] * v[M22] - v[M02] * v[M10] * v[M23] + v[M00] * v[M12] * v[M23]; + t[M20] = v[M11] * v[M23] * v[M30] - v[M13] * v[M21] * v[M30] + v[M13] * v[M20] * v[M31] + - v[M10] * v[M23] * v[M31] - v[M11] * v[M20] * v[M33] + v[M10] * v[M21] * v[M33]; + t[M21] = v[M03] * v[M21] * v[M30] - v[M01] * v[M23] * v[M30] - v[M03] * v[M20] * v[M31] + + v[M00] * v[M23] * v[M31] + v[M01] * v[M20] * v[M33] - v[M00] * v[M21] * v[M33]; + t[M22] = v[M01] * v[M13] * v[M30] - v[M03] * v[M11] * v[M30] + v[M03] * v[M10] * v[M31] + - v[M00] * v[M13] * v[M31] - v[M01] * v[M10] * v[M33] + v[M00] * v[M11] * v[M33]; + t[M23] = v[M03] * v[M11] * v[M20] - v[M01] * v[M13] * v[M20] - v[M03] * v[M10] * v[M21] + + v[M00] * v[M13] * v[M21] + v[M01] * v[M10] * v[M23] - v[M00] * v[M11] * v[M23]; + t[M30] = v[M12] * v[M21] * v[M30] - v[M11] * v[M22] * v[M30] - v[M12] * v[M20] * v[M31] + + v[M10] * v[M22] * v[M31] + v[M11] * v[M20] * v[M32] - v[M10] * v[M21] * v[M32]; + t[M31] = v[M01] * v[M22] * v[M30] - v[M02] * v[M21] * v[M30] + v[M02] * v[M20] * v[M31] + - v[M00] * v[M22] * v[M31] - v[M01] * v[M20] * v[M32] + v[M00] * v[M21] * v[M32]; + t[M32] = v[M02] * v[M11] * v[M30] - v[M01] * v[M12] * v[M30] - v[M02] * v[M10] * v[M31] + + v[M00] * v[M12] * v[M31] + v[M01] * v[M10] * v[M32] - v[M00] * v[M11] * v[M32]; + t[M33] = v[M01] * v[M12] * v[M20] - v[M02] * v[M11] * v[M20] + v[M02] * v[M10] * v[M21] + - v[M00] * v[M12] * v[M21] - v[M01] * v[M10] * v[M22] + v[M00] * v[M11] * v[M22]; + v[M00] = t[M00] * inv_det; + v[M01] = t[M01] * inv_det; + v[M02] = t[M02] * inv_det; + v[M03] = t[M03] * inv_det; + v[M10] = t[M10] * inv_det; + v[M11] = t[M11] * inv_det; + v[M12] = t[M12] * inv_det; + v[M13] = t[M13] * inv_det; + v[M20] = t[M20] * inv_det; + v[M21] = t[M21] * inv_det; + v[M22] = t[M22] * inv_det; + v[M23] = t[M23] * inv_det; + v[M30] = t[M30] * inv_det; + v[M31] = t[M31] * inv_det; + v[M32] = t[M32] * inv_det; + v[M33] = t[M33] * inv_det; + return this; + } + + determinant (): number { + let v = this.values; + return v[M30] * v[M21] * v[M12] * v[M03] - v[M20] * v[M31] * v[M12] * v[M03] - v[M30] * v[M11] * v[M22] * v[M03] + + v[M10] * v[M31] * v[M22] * v[M03] + v[M20] * v[M11] * v[M32] * v[M03] - v[M10] * v[M21] * v[M32] * v[M03] + - v[M30] * v[M21] * v[M02] * v[M13] + v[M20] * v[M31] * v[M02] * v[M13] + v[M30] * v[M01] * v[M22] * v[M13] + - v[M00] * v[M31] * v[M22] * v[M13] - v[M20] * v[M01] * v[M32] * v[M13] + v[M00] * v[M21] * v[M32] * v[M13] + + v[M30] * v[M11] * v[M02] * v[M23] - v[M10] * v[M31] * v[M02] * v[M23] - v[M30] * v[M01] * v[M12] * v[M23] + + v[M00] * v[M31] * v[M12] * v[M23] + v[M10] * v[M01] * v[M32] * v[M23] - v[M00] * v[M11] * v[M32] * v[M23] + - v[M20] * v[M11] * v[M02] * v[M33] + v[M10] * v[M21] * v[M02] * v[M33] + v[M20] * v[M01] * v[M12] * v[M33] + - v[M00] * v[M21] * v[M12] * v[M33] - v[M10] * v[M01] * v[M22] * v[M33] + v[M00] * v[M11] * v[M22] * v[M33]; + } + + translate (x: number, y: number, z: number): Matrix4 { + let v = this.values; + v[M03] += x; + v[M13] += y; + v[M23] += z; + return this; + } + + copy (): Matrix4 { + return new Matrix4().set(this.values); + } + + projection (near: number, far: number, fovy: number, aspectRatio: number): Matrix4 { + this.identity(); + let l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); + let l_a1 = (far + near) / (near - far); + let l_a2 = (2 * far * near) / (near - far); + let v = this.values; + v[M00] = l_fd / aspectRatio; + v[M10] = 0; + v[M20] = 0; + v[M30] = 0; + v[M01] = 0; + v[M11] = l_fd; + v[M21] = 0; + v[M31] = 0; + v[M02] = 0; + v[M12] = 0; + v[M22] = l_a1; + v[M32] = -1; + v[M03] = 0; + v[M13] = 0; + v[M23] = l_a2; + v[M33] = 0; + return this; + } + + ortho2d (x: number, y: number, width: number, height: number): Matrix4 { + return this.ortho(x, x + width, y, y + height, 0, 1); + } + + ortho (left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4 { + this.identity(); + let x_orth = 2 / (right - left); + let y_orth = 2 / (top - bottom); + let z_orth = -2 / (far - near); + + let tx = -(right + left) / (right - left); + let ty = -(top + bottom) / (top - bottom); + let tz = -(far + near) / (far - near); + + let v = this.values; + v[M00] = x_orth; + v[M10] = 0; + v[M20] = 0; + v[M30] = 0; + v[M01] = 0; + v[M11] = y_orth; + v[M21] = 0; + v[M31] = 0; + v[M02] = 0; + v[M12] = 0; + v[M22] = z_orth; + v[M32] = 0; + v[M03] = tx; + v[M13] = ty; + v[M23] = tz; + v[M33] = 1; + return this; + } + + multiply (matrix: Matrix4): Matrix4 { + let t = this.temp; + let v = this.values; + let m = matrix.values; + t[M00] = v[M00] * m[M00] + v[M01] * m[M10] + v[M02] * m[M20] + v[M03] * m[M30]; + t[M01] = v[M00] * m[M01] + v[M01] * m[M11] + v[M02] * m[M21] + v[M03] * m[M31]; + t[M02] = v[M00] * m[M02] + v[M01] * m[M12] + v[M02] * m[M22] + v[M03] * m[M32]; + t[M03] = v[M00] * m[M03] + v[M01] * m[M13] + v[M02] * m[M23] + v[M03] * m[M33]; + t[M10] = v[M10] * m[M00] + v[M11] * m[M10] + v[M12] * m[M20] + v[M13] * m[M30]; + t[M11] = v[M10] * m[M01] + v[M11] * m[M11] + v[M12] * m[M21] + v[M13] * m[M31]; + t[M12] = v[M10] * m[M02] + v[M11] * m[M12] + v[M12] * m[M22] + v[M13] * m[M32]; + t[M13] = v[M10] * m[M03] + v[M11] * m[M13] + v[M12] * m[M23] + v[M13] * m[M33]; + t[M20] = v[M20] * m[M00] + v[M21] * m[M10] + v[M22] * m[M20] + v[M23] * m[M30]; + t[M21] = v[M20] * m[M01] + v[M21] * m[M11] + v[M22] * m[M21] + v[M23] * m[M31]; + t[M22] = v[M20] * m[M02] + v[M21] * m[M12] + v[M22] * m[M22] + v[M23] * m[M32]; + t[M23] = v[M20] * m[M03] + v[M21] * m[M13] + v[M22] * m[M23] + v[M23] * m[M33]; + t[M30] = v[M30] * m[M00] + v[M31] * m[M10] + v[M32] * m[M20] + v[M33] * m[M30]; + t[M31] = v[M30] * m[M01] + v[M31] * m[M11] + v[M32] * m[M21] + v[M33] * m[M31]; + t[M32] = v[M30] * m[M02] + v[M31] * m[M12] + v[M32] * m[M22] + v[M33] * m[M32]; + t[M33] = v[M30] * m[M03] + v[M31] * m[M13] + v[M32] * m[M23] + v[M33] * m[M33]; + return this.set(this.temp); + } + + multiplyLeft (matrix: Matrix4): Matrix4 { + let t = this.temp; + let v = this.values; + let m = matrix.values; + t[M00] = m[M00] * v[M00] + m[M01] * v[M10] + m[M02] * v[M20] + m[M03] * v[M30]; + t[M01] = m[M00] * v[M01] + m[M01] * v[M11] + m[M02] * v[M21] + m[M03] * v[M31]; + t[M02] = m[M00] * v[M02] + m[M01] * v[M12] + m[M02] * v[M22] + m[M03] * v[M32]; + t[M03] = m[M00] * v[M03] + m[M01] * v[M13] + m[M02] * v[M23] + m[M03] * v[M33]; + t[M10] = m[M10] * v[M00] + m[M11] * v[M10] + m[M12] * v[M20] + m[M13] * v[M30]; + t[M11] = m[M10] * v[M01] + m[M11] * v[M11] + m[M12] * v[M21] + m[M13] * v[M31]; + t[M12] = m[M10] * v[M02] + m[M11] * v[M12] + m[M12] * v[M22] + m[M13] * v[M32]; + t[M13] = m[M10] * v[M03] + m[M11] * v[M13] + m[M12] * v[M23] + m[M13] * v[M33]; + t[M20] = m[M20] * v[M00] + m[M21] * v[M10] + m[M22] * v[M20] + m[M23] * v[M30]; + t[M21] = m[M20] * v[M01] + m[M21] * v[M11] + m[M22] * v[M21] + m[M23] * v[M31]; + t[M22] = m[M20] * v[M02] + m[M21] * v[M12] + m[M22] * v[M22] + m[M23] * v[M32]; + t[M23] = m[M20] * v[M03] + m[M21] * v[M13] + m[M22] * v[M23] + m[M23] * v[M33]; + t[M30] = m[M30] * v[M00] + m[M31] * v[M10] + m[M32] * v[M20] + m[M33] * v[M30]; + t[M31] = m[M30] * v[M01] + m[M31] * v[M11] + m[M32] * v[M21] + m[M33] * v[M31]; + t[M32] = m[M30] * v[M02] + m[M31] * v[M12] + m[M32] * v[M22] + m[M33] * v[M32]; + t[M33] = m[M30] * v[M03] + m[M31] * v[M13] + m[M32] * v[M23] + m[M33] * v[M33]; + return this.set(this.temp); + } + } +} diff --git a/spine-ts/webgl/src/Mesh.ts b/spine-ts/webgl/src/Mesh.ts new file mode 100644 index 000000000..bb66d0865 --- /dev/null +++ b/spine-ts/webgl/src/Mesh.ts @@ -0,0 +1,184 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class Mesh implements Disposable { + private _gl: WebGLRenderingContext; + private _vertices:Float32Array; + private _verticesBuffer: WebGLBuffer; + private _verticesLength = 0; + private _dirtyVertices = false; + private _indices:Uint16Array; + private _indicesBuffer: WebGLBuffer; + private _indicesLength = 0; + private _dirtyIndices = false; + private _elementsPerVertex = 0; + + attributes (): VertexAttribute[] { return this._attributes; } + + maxVertices (): number { return this._vertices.length / this._elementsPerVertex; } + numVertices (): number { return this._verticesLength / this._elementsPerVertex; } + setVerticesLength (length: number) { + this._dirtyVertices = true; + this._verticesLength = length; + } + vertices (): Float32Array { return this._vertices; } + + maxIndices (): number { return this._indices.length; } + numIndices (): number { return this._indicesLength; } + setIndicesLength (length: number) { + this._dirtyIndices = true; + this._indicesLength = length; + } + indices (): Uint16Array { return this._indices }; + + constructor (gl: WebGLRenderingContext, private _attributes: VertexAttribute[], maxVertices: number, maxIndices: number) { + this._gl = gl; + this._elementsPerVertex = 0; + for (let i = 0; i < _attributes.length; i++) { + this._elementsPerVertex += _attributes[i].numElements; + } + this._vertices = new Float32Array(maxVertices * this._elementsPerVertex); + this._indices = new Uint16Array(maxIndices); + } + + setVertices (vertices: Array) { + this._dirtyVertices = true; + if (vertices.length > this._vertices.length) throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); + this._vertices.set(vertices, 0); + this._verticesLength = vertices.length; + } + + setIndices (indices: Array) { + this._dirtyIndices = true; + if (indices.length > this._indices.length) throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); + this._indices.set(indices, 0); + this._indicesLength = indices.length; + } + + draw (shader: Shader, primitiveType: number) { + this.drawWithOffset(shader, primitiveType, 0, this._indicesLength > 0? this._indicesLength: this._verticesLength); + } + + drawWithOffset (shader: Shader, primitiveType: number, offset: number, count: number) { + let gl = this._gl; + if (this._dirtyVertices || this._dirtyIndices) this.update(); + this.bind(shader); + if (this._indicesLength > 0) gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); + else gl.drawArrays(primitiveType, offset, count); + this.unbind(shader); + } + + bind (shader: Shader) { + let gl = this._gl; + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + let offset = 0; + for (let i = 0; i < this._attributes.length; i++) { + let attrib = this._attributes[i]; + let location = shader.getAttributeLocation(attrib.name); + gl.enableVertexAttribArray(location); + gl.vertexAttribPointer(location, attrib.numElements, gl.FLOAT, false, this._elementsPerVertex * 4, offset * 4); + offset += attrib.numElements; + } + if (this._indicesLength > 0) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + } + + unbind (shader: Shader) { + let gl = this._gl; + for (let i = 0; i < this._attributes.length; i++) { + let attrib = this._attributes[i]; + let location = shader.getAttributeLocation(attrib.name); + gl.disableVertexAttribArray(location); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + if (this._indicesLength > 0) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + } + + private update () { + let gl = this._gl; + if (this._dirtyVertices) { + if (!this._verticesBuffer) { + this._verticesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ARRAY_BUFFER, this._verticesBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this._vertices.subarray(0, this._verticesLength), gl.STATIC_DRAW); + this._dirtyVertices = false; + } + + if (this._dirtyIndices) { + if (!this._indicesBuffer) { + this._indicesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this._indices.subarray(0, this._indicesLength), gl.STATIC_DRAW); + this._dirtyIndices = false; + } + } + + dispose () { + let gl = this._gl; + gl.deleteBuffer(this._verticesBuffer); + gl.deleteBuffer(this._indicesBuffer); + } + } + + export class VertexAttribute { + constructor (public name: string, public type: VertexAttributeType, public numElements: number) { } + } + + export class Position2Attribute extends VertexAttribute { + constructor () { + super(Shader.POSITION, VertexAttributeType.Float, 2); + } + } + + export class Position3Attribute extends VertexAttribute { + constructor () { + super(Shader.POSITION, VertexAttributeType.Float, 3); + } + } + + export class TexCoordAttribute extends VertexAttribute { + constructor (unit: number = 0) { + super(Shader.TEXCOORDS + (unit == 0? "": unit), VertexAttributeType.Float, 2); + } + } + + export class ColorAttribute extends VertexAttribute { + constructor () { + super(Shader.COLOR, VertexAttributeType.Float, 4); + } + } + + export enum VertexAttributeType { + Float + } +} diff --git a/spine-ts/webgl/src/PolygonBatcher.ts b/spine-ts/webgl/src/PolygonBatcher.ts new file mode 100644 index 000000000..e76c2fbc6 --- /dev/null +++ b/spine-ts/webgl/src/PolygonBatcher.ts @@ -0,0 +1,121 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class PolygonBatcher { + private _gl: WebGLRenderingContext; + private _drawCalls: number; + private _drawing = false; + private _mesh: Mesh; + private _shader: Shader = null; + private _lastTexture: Texture = null; + private _verticesLength = 0; + private _indicesLength = 0; + private _srcBlend: number = WebGLRenderingContext.SRC_ALPHA; + private _dstBlend: number = WebGLRenderingContext.ONE_MINUS_SRC_ALPHA; + + constructor (gl: WebGLRenderingContext, maxVertices: number = 10920) { + if (maxVertices > 10920) throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this._gl = gl; + this._mesh = new Mesh(gl, [new Position2Attribute(), new ColorAttribute(), new TexCoordAttribute()], maxVertices, maxVertices * 3); + } + + begin (shader: Shader) { + let gl = this._gl; + if (this._drawing) throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); + this._drawCalls = 0; + this._shader = shader; + this._lastTexture = null; + this._drawing = true; + + gl.enable(gl.BLEND); + gl.blendFunc(this._srcBlend, this._dstBlend); + } + + setBlendMode (srcBlend: number, dstBlend: number) { + let gl = this._gl; + this._srcBlend = srcBlend; + this._dstBlend = dstBlend; + if (this._drawing) { + this.flush(); + gl.blendFunc(this._srcBlend, this._dstBlend); + } + } + + draw (texture: Texture, vertices: ArrayLike, indices: Array) { + if (texture != this._lastTexture) { + this.flush(); + this._lastTexture = texture; + texture.bind(); + } else if (this._verticesLength + vertices.length > this._mesh.vertices().length || + this._indicesLength + indices.length > this._mesh.indices().length) { + this.flush(); + } + + let indexStart = this._mesh.numVertices(); + this._mesh.vertices().set(vertices, this._verticesLength); + this._verticesLength += vertices.length; + this._mesh.setVerticesLength(this._verticesLength) + + let indicesArray = this._mesh.indices(); + for (let i = this._indicesLength, j = 0; j < indices.length; i++, j++) + indicesArray[i] = indices[j] + indexStart; + this._indicesLength += indices.length; + this._mesh.setIndicesLength(this._indicesLength); + } + + private flush () { + let gl = this._gl; + if (this._verticesLength == 0) return; + + this._mesh.draw(this._shader, gl.TRIANGLES); + + this._verticesLength = 0; + this._indicesLength = 0; + this._mesh.setVerticesLength(0); + this._mesh.setIndicesLength(0); + this._drawCalls++; + } + + end () { + let gl = this._gl; + if (!this._drawing) throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); + if (this._verticesLength > 0 || this._indicesLength > 0) this.flush(); + this._shader = null; + this._lastTexture = null; + this._drawing = false; + + gl.disable(gl.BLEND); + } + + drawCalls () { return this._drawCalls; } + } +} diff --git a/spine-ts/webgl/src/Shader.ts b/spine-ts/webgl/src/Shader.ts new file mode 100644 index 000000000..a491f5172 --- /dev/null +++ b/spine-ts/webgl/src/Shader.ts @@ -0,0 +1,240 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class Shader implements Disposable { + public static MVP_MATRIX = "u_projTrans"; + public static POSITION = "a_position"; + public static COLOR = "a_color"; + public static TEXCOORDS = "a_texCoords"; + public static SAMPLER = "u_texture"; + + private _gl: WebGLRenderingContext; + private _vs: WebGLShader = null; + private _fs: WebGLShader = null; + private _program: WebGLProgram = null; + private _tmp2x2: Float32Array = new Float32Array(2 * 2); + private _tmp3x3: Float32Array = new Float32Array(3 * 3); + private _tmp4x4: Float32Array = new Float32Array(4 * 4); + + public program () { return this._program; } + public vertexShader () { return this._vertexShader; } + public fragmentShader () { return this._fragmentShader; } + + constructor (gl: WebGLRenderingContext, private _vertexShader: string, private _fragmentShader: string) { + this._gl = gl; + this.compile(); + } + + private compile () { + let gl = this._gl; + try { + this._vs = this.compileShader(gl.VERTEX_SHADER, this._vertexShader); + this._fs = this.compileShader(gl.FRAGMENT_SHADER, this._fragmentShader); + this._program = this.compileProgram(this._vs, this._fs); + } catch (e) { + this.dispose(); + throw e; + } + } + + private compileShader (type: number, source: string) { + let gl = this._gl; + let shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + let error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); + gl.deleteShader(shader); + throw new Error(error); + } + return shader; + } + + private compileProgram (vs: WebGLShader, fs: WebGLShader) { + let gl = this._gl; + let program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + let error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); + gl.deleteProgram(program); + throw new Error(error); + } + return program; + } + + public bind () { + this._gl.useProgram(this._program); + } + + public unbind () { + this._gl.useProgram(null); + } + + public setUniformi (uniform: string, value: number) { + this._gl.uniform1i(this.getUniformLocation(uniform), value); + } + + public setUniformf (uniform: string, value: number) { + this._gl.uniform1f(this.getUniformLocation(uniform), value); + } + + public setUniform2f (uniform: string, value: number, value2: number) { + this._gl.uniform2f(this.getUniformLocation(uniform), value, value2); + } + + public setUniform3f (uniform: string, value: number, value2: number, value3: number) { + this._gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); + } + + public setUniform4f (uniform: string, value: number, value2: number, value3: number, value4: number) { + this._gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); + } + + public setUniform2x2f (uniform: string, value: ArrayLike) { + let gl = this._gl; + this._tmp2x2.set(value); + gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this._tmp2x2); + } + + public setUniform3x3f (uniform: string, value: ArrayLike) { + let gl = this._gl; + this._tmp3x3.set(value); + gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this._tmp3x3); + } + + public setUniform4x4f (uniform: string, value: ArrayLike) { + let gl = this._gl; + this._tmp4x4.set(value); + gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this._tmp4x4); + } + + public getUniformLocation (uniform: string): WebGLUniformLocation { + let gl = this._gl; + let location = gl.getUniformLocation(this._program, uniform); + if (!location) throw new Error(`Couldn't find location for uniform ${uniform}`); + return location; + } + + public getAttributeLocation (attribute: string): number { + let gl = this._gl; + let location = gl.getAttribLocation(this._program, attribute); + if (location == -1) throw new Error(`Couldn't find location for attribute ${attribute}`); + return location; + } + + public dispose () { + let gl = this._gl; + if (this._vs) { + gl.deleteShader(this._vs); + this._vs = null; + } + + if (this._fs) { + gl.deleteShader(this._fs); + this._fs = null; + } + + if (this._program) { + gl.deleteProgram(this._program); + this._program = null; + } + } + + public static newColoredTextured (gl: WebGLRenderingContext): Shader { + let vs = ` + attribute vec4 ${Shader.POSITION}; + attribute vec4 ${Shader.COLOR}; + attribute vec2 ${Shader.TEXCOORDS}; + uniform mat4 ${Shader.MVP_MATRIX}; + varying vec4 v_color; + varying vec2 v_texCoords; + + void main () { + v_color = ${Shader.COLOR}; + v_texCoords = ${Shader.TEXCOORDS}; + gl_Position = ${Shader.MVP_MATRIX} * ${Shader.POSITION}; + } + `; + + let fs = ` + #ifdef GL_ES + #define LOWP lowp + precision mediump float; + #else + #define LOWP + #endif + varying LOWP vec4 v_color; + varying vec2 v_texCoords; + uniform sampler2D u_texture; + + void main () { + gl_FragColor = v_color * texture2D(u_texture, v_texCoords); + } + `; + + return new Shader(gl, vs, fs); + } + + public static newColored (gl: WebGLRenderingContext): Shader { + let vs = ` + attribute vec4 ${Shader.POSITION}; + attribute vec4 ${Shader.COLOR}; + uniform mat4 ${Shader.MVP_MATRIX}; + varying vec4 v_color; + + void main () { + v_color = ${Shader.COLOR}; + gl_Position = ${Shader.MVP_MATRIX} * ${Shader.POSITION}; + } + `; + + let fs = ` + #ifdef GL_ES + #define LOWP lowp + precision mediump float; + #else + #define LOWP + #endif + varying LOWP vec4 v_color; + + void main () { + gl_FragColor = v_color; + } + `; + + return new Shader(gl, vs, fs); + } + } +} diff --git a/spine-ts/webgl/src/SkeletonRenderer.ts b/spine-ts/webgl/src/SkeletonRenderer.ts new file mode 100644 index 000000000..384dcc7ce --- /dev/null +++ b/spine-ts/webgl/src/SkeletonRenderer.ts @@ -0,0 +1,78 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class SkeletonRenderer { + static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + + premultipliedAlpha = false; + private _gl: WebGLRenderingContext; + + constructor (gl: WebGLRenderingContext) { + this._gl = gl; + } + + draw (batcher: PolygonBatcher, skeleton: Skeleton) { + let premultipliedAlpha = this.premultipliedAlpha; + let blendMode: BlendMode = null; + + let vertices: ArrayLike = null; + let triangles: Array = null; + let drawOrder = skeleton.drawOrder; + for (let i = 0, n = drawOrder.length; i < n; i++) { + let slot = drawOrder[i]; + let attachment = slot.getAttachment(); + let texture: Texture = null; + if (attachment instanceof RegionAttachment) { + let region = attachment; + vertices = region.updateWorldVertices(slot, premultipliedAlpha); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + texture = (region.region.renderObject).texture; + + } else if (attachment instanceof MeshAttachment) { + let mesh = attachment; + vertices = mesh.updateWorldVertices(slot, premultipliedAlpha); + triangles = mesh.triangles; + texture = (mesh.region.renderObject).texture; + } + + if (texture != null) { + let slotBlendMode = slot.data.blendMode; + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batcher.setBlendMode(getSourceGLBlendMode(this._gl, blendMode, premultipliedAlpha), getDestGLBlendMode(this._gl, blendMode)); + } + batcher.draw(texture, vertices, triangles); + } + } + } + } +} diff --git a/spine-ts/webgl/src/Texture.ts b/spine-ts/webgl/src/Texture.ts new file mode 100644 index 000000000..30e797102 --- /dev/null +++ b/spine-ts/webgl/src/Texture.ts @@ -0,0 +1,131 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class Texture implements Disposable { + private _gl: WebGLRenderingContext; + private _texture: WebGLTexture; + private _image: HTMLImageElement; + private _boundUnit = 0; + + constructor (gl: WebGLRenderingContext, image: HTMLImageElement, useMipMaps: boolean = false) { + this._gl = gl; + this._texture = gl.createTexture(); + this._image = image; + this.update(useMipMaps); + } + + getImage (): HTMLImageElement { + return this._image; + } + + setFilters (minFilter: TextureFilter, magFilter: TextureFilter) { + let gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); + } + + setWraps (uWrap: TextureWrap, vWrap: TextureWrap) { + let gl = this._gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); + } + + update (useMipMaps: boolean) { + let gl = this._gl; + this.bind(); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps? gl.LINEAR_MIPMAP_LINEAR: gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (useMipMaps) gl.generateMipmap(gl.TEXTURE_2D); + } + + bind (unit: number = 0) { + let gl = this._gl; + this._boundUnit = unit; + gl.activeTexture(gl.TEXTURE0 + unit); + gl.bindTexture(gl.TEXTURE_2D, this._texture); + } + + unbind () { + let gl = this._gl; + gl.activeTexture(gl.TEXTURE0 + this._boundUnit); + gl.bindTexture(gl.TEXTURE_2D, null); + } + + dispose () { + let gl = this._gl; + gl.deleteTexture(this._texture); + } + + public static filterFromString (text: string): TextureFilter { + switch (text.toLowerCase()) { + case "nearest": return TextureFilter.Nearest; + case "linear": return TextureFilter.Linear; + case "mipmap": return TextureFilter.MipMap; + case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; + case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; + case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; + case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; + default: throw new Error(`Unknown texture filter ${text}`); + } + } + + public static wrapFromString (text: string): TextureWrap { + switch (text.toLowerCase()) { + case "mirroredtepeat": return TextureWrap.MirroredRepeat; + case "clamptoedge": return TextureWrap.ClampToEdge; + case "repeat": return TextureWrap.Repeat; + default: throw new Error(`Unknown texture wrap ${text}`); + } + } + } + + export enum TextureFilter { + Nearest = WebGLRenderingContext.NEAREST, + Linear = WebGLRenderingContext.LINEAR, + MipMap = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR, + MipMapNearestNearest = WebGLRenderingContext.NEAREST_MIPMAP_NEAREST, + MipMapLinearNearest = WebGLRenderingContext.LINEAR_MIPMAP_NEAREST, + MipMapNearestLinear = WebGLRenderingContext.NEAREST_MIPMAP_LINEAR, + MipMapLinearLinear = WebGLRenderingContext.LINEAR_MIPMAP_LINEAR + } + + export enum TextureWrap { + MirroredRepeat = WebGLRenderingContext.MIRRORED_REPEAT, + ClampToEdge = WebGLRenderingContext.CLAMP_TO_EDGE, + Repeat = WebGLRenderingContext.REPEAT + } +} diff --git a/spine-ts/webgl/src/TextureAtlas.ts b/spine-ts/webgl/src/TextureAtlas.ts new file mode 100644 index 000000000..f07c71ec7 --- /dev/null +++ b/spine-ts/webgl/src/TextureAtlas.ts @@ -0,0 +1,213 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class TextureAtlas implements Disposable { + pages = new Array(); + regions = new Array(); + + constructor (atlasText: string, textureLoader: (path: string) => Texture) { + this.load(atlasText, textureLoader); + } + + private load (atlasText: string, textureLoader: (path: string) => Texture) { + if (textureLoader == null) + throw new Error("textureLoader cannot be null."); + + let reader = new TextureAtlasReader(atlasText); + let tuple = new Array(4); + let page:TextureAtlasPage = null; + while (true) { + let line = reader.readLine(); + if (line == null) + break; + line = line.trim(); + if (line.length == 0) + page = null; + else if (!page) { + page = new TextureAtlasPage(); + page.name = line; + + if (reader.readTuple(tuple) == 2) { // size is only optional for an atlas packed with an old TexturePacker. + page.width = parseInt(tuple[0]); + page.height = parseInt(tuple[1]); + reader.readTuple(tuple); + } + // page.format = Format[tuple[0]]; we don't need format in WebGL + + reader.readTuple(tuple); + page.minFilter = Texture.filterFromString(tuple[0]); + page.magFilter = Texture.filterFromString(tuple[1]); + + let direction= reader.readValue(); + page.uWrap = TextureWrap.ClampToEdge; + page.vWrap = TextureWrap.ClampToEdge; + if (direction == "x") + page.uWrap = TextureWrap.Repeat; + else if (direction == "y") + page.vWrap = TextureWrap.Repeat; + else if (direction == "xy") + page.uWrap = page.vWrap = TextureWrap.Repeat; + + page.texture = textureLoader(line); + page.texture.setFilters(page.minFilter, page.magFilter); + page.texture.setWraps(page.uWrap, page.vWrap); + page.width = page.texture.getImage().width; + page.height = page.texture.getImage().height; + this.pages.push(page); + } else { + let region:TextureAtlasRegion = new TextureAtlasRegion(); + region.name = line; + region.page = page; + + region.rotate = reader.readValue() == "true"; + + reader.readTuple(tuple); + let x = parseInt(tuple[0]); + let y = parseInt(tuple[1]); + + reader.readTuple(tuple); + let width = parseInt(tuple[0]); + let height = parseInt(tuple[1]); + + region.u = x / page.width; + region.v = y / page.height; + if (region.rotate) { + region.u2 = (x + height) / page.width; + region.v2 = (y + width) / page.height; + } else { + region.u2 = (x + width) / page.width; + region.v2 = (y + height) / page.height; + } + region.x = x; + region.y = y; + region.width = Math.abs(width); + region.height = Math.abs(height); + + if (reader.readTuple(tuple) == 4) { // split is optional + // region.splits = new Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + if (reader.readTuple(tuple) == 4) { // pad is optional, but only present with splits + //region.pads = Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])); + reader.readTuple(tuple); + } + } + + region.originalWidth = parseInt(tuple[0]); + region.originalHeight = parseInt(tuple[1]); + + reader.readTuple(tuple); + region.offsetX = parseInt(tuple[0]); + region.offsetY = parseInt(tuple[1]); + + region.index = parseInt(reader.readValue()); + + region.texture = page.texture; + this.regions.push(region); + } + } + } + + findRegion (name: string): TextureAtlasRegion { + for (let i = 0; i < this.regions.length; i++) { + if (this.regions[i].name == name) { + return this.regions[i]; + } + } + return null; + } + + dispose () { + for (let i = 0; i < this.pages.length; i++) { + this.pages[i].texture.dispose(); + } + } + } + + class TextureAtlasReader { + lines: Array; + index: number = 0; + + constructor (text: string) { + this.lines = text.split(/\r\n|\r|\n/); + } + + readLine (): string { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + } + + readValue (): string { + let line = this.readLine(); + let colon= line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + return line.substring(colon + 1).trim(); + } + + readTuple (tuple: Array): number { + let line = this.readLine(); + let colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + let i = 0, lastMatch = colon + 1; + for (; i < 3; i++) { + let comma = line.indexOf(",", lastMatch); + if (comma == -1) break; + tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + } + tuple[i] = line.substring(lastMatch).trim(); + return i + 1; + } + } + + export class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + } + + export class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + index: number; + rotate: boolean; + texture: Texture; + } +} diff --git a/spine-ts/webgl/src/TextureAtlasAttachmentLoader.ts b/spine-ts/webgl/src/TextureAtlasAttachmentLoader.ts new file mode 100644 index 000000000..28b869fe7 --- /dev/null +++ b/spine-ts/webgl/src/TextureAtlasAttachmentLoader.ts @@ -0,0 +1,71 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class TextureAtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + + constructor (atlas: TextureAtlas) { + this.atlas = atlas; + } + + /** @return May be null to not load an attachment. */ + newRegionAttachment (skin: Skin, name: string, path: string): RegionAttachment { + let region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + let attachment = new RegionAttachment(name); + attachment.setRegion(region); + attachment.region = region; + return attachment; + } + + /** @return May be null to not load an attachment. */ + newMeshAttachment (skin: Skin, name: string, path: string) : MeshAttachment { + let region = this.atlas.findRegion(path); + region.renderObject = region; + if (region == null) throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + let attachment = new MeshAttachment(name); + attachment.region = region; + return attachment; + } + + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment (skin: Skin, name: string) : BoundingBoxAttachment { + return new BoundingBoxAttachment(name); + } + + /** @return May be null to not load an attachment */ + newPathAttachment (skin: Skin, name: string): PathAttachment { + return new PathAttachment(name); + } + } +} diff --git a/spine-ts/webgl/src/Vector3.ts b/spine-ts/webgl/src/Vector3.ts new file mode 100644 index 000000000..50b6c84ba --- /dev/null +++ b/spine-ts/webgl/src/Vector3.ts @@ -0,0 +1,110 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export class Vector3 { + x = 0; + y = 0; + z = 0; + + set (x: number, y: number, z: number): Vector3 { + this.x = x; + this.y = y; + this.z = z; + return this; + } + + add (v: Vector3): Vector3 { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + } + + sub (v: Vector3): Vector3 { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + } + + scale (s: number): Vector3 { + this.x *= s; + this.y *= s; + this.z *= s; + return this; + } + + normalize (): Vector3 { + let len = this.length(); + if (len == 0) return this; + len = 1 / len; + this.x *= len; + this.y *= len; + this.z *= len; + return this; + } + + cross (v: Vector3): Vector3 { + return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x) + } + + multiply (matrix: Matrix4): Vector3 { + let l_mat = matrix.values; + return this.set(this.x * l_mat[M00] + this.y * l_mat[M01] + this.z * l_mat[M02] + l_mat[M03], + this.x * l_mat[M10] + this.y * l_mat[M11] + this.z * l_mat[M12] + l_mat[M13], + this.x * l_mat[M20] + this.y * l_mat[M21] + this.z * l_mat[M22] + l_mat[M23]); + } + + project (matrix: Matrix4): Vector3 { + let l_mat = matrix.values; + let l_w = 1 / (this.x * l_mat[M30] + this.y * l_mat[M31] + this.z * l_mat[M32] + l_mat[M33]); + return this.set((this.x * l_mat[M00] + this.y * l_mat[M01] + this.z * l_mat[M02] + l_mat[M03]) * l_w, + (this.x * l_mat[M10] + this.y * l_mat[M11] + this.z * l_mat[M12] + l_mat[M13]) * l_w, + (this.x * l_mat[M20] + this.y * l_mat[M21] + this.z * l_mat[M22] + l_mat[M23]) * l_w); + } + + dot (v: Vector3): number { + return this.x * v.x + this.y * v.y + this.z * v.z; + } + + length (): number { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + + distance (v: Vector3): number { + let a = v.x - this.x; + let b = v.y - this.y; + let c = v.z - this.z; + return Math.sqrt(a * a + b * b + c * c); + } + } +} diff --git a/spine-ts/webgl/src/WebGL.ts b/spine-ts/webgl/src/WebGL.ts new file mode 100644 index 000000000..a7a637d81 --- /dev/null +++ b/spine-ts/webgl/src/WebGL.ts @@ -0,0 +1,52 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine.webgl { + export function getSourceGLBlendMode (gl: WebGLRenderingContext, blendMode: BlendMode, premultipliedAlpha: boolean = false) { + switch(blendMode) { + case BlendMode.Normal: return premultipliedAlpha? gl.ONE : gl.SRC_ALPHA; + case BlendMode.Additive: return premultipliedAlpha? gl.ONE : gl.SRC_ALPHA; + case BlendMode.Multiply: return gl.DST_COLOR; + case BlendMode.Screen: return gl.ONE; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + + export function getDestGLBlendMode (gl: WebGLRenderingContext, blendMode: BlendMode) { + switch(blendMode) { + case BlendMode.Normal: return gl.ONE_MINUS_SRC_ALPHA; + case BlendMode.Additive: return gl.ONE; + case BlendMode.Multiply: return gl.ONE_MINUS_SRC_ALPHA; + case BlendMode.Screen: return gl.ONE_MINUS_SRC_ALPHA; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } +} diff --git a/spine-ts/widget/example/assets/raptor.atlas b/spine-ts/widget/example/assets/raptor.atlas new file mode 100644 index 000000000..11728a52d --- /dev/null +++ b/spine-ts/widget/example/assets/raptor.atlas @@ -0,0 +1,279 @@ + +raptor.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back_arm + rotate: true + xy: 140, 191 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +back_bracer + rotate: true + xy: 167, 317 + size: 39, 28 + orig: 39, 28 + offset: 0, 0 + index: -1 +back_hand + rotate: false + xy: 167, 358 + size: 36, 34 + orig: 36, 34 + offset: 0, 0 + index: -1 +back_knee + rotate: false + xy: 299, 478 + size: 49, 67 + orig: 49, 67 + offset: 0, 0 + index: -1 +back_thigh + rotate: true + xy: 167, 437 + size: 39, 24 + orig: 39, 24 + offset: 0, 0 + index: -1 +eyes_closed + rotate: true + xy: 2, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +eyes_open + rotate: true + xy: 49, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +eyes_surprised + rotate: true + xy: 96, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +front_arm + rotate: false + xy: 419, 544 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 880, 695 + size: 41, 29 + orig: 41, 29 + offset: 0, 0 + index: -1 +front_hand + rotate: true + xy: 167, 394 + size: 41, 38 + orig: 41, 38 + offset: 0, 0 + index: -1 +front_open_hand + rotate: false + xy: 880, 726 + size: 43, 44 + orig: 43, 44 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 360, 545 + size: 57, 29 + orig: 57, 29 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 785, 774 + size: 107, 103 + orig: 107, 103 + offset: 0, 0 + index: -1 +gun_nohand + rotate: false + xy: 614, 703 + size: 105, 102 + orig: 105, 102 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 137 + size: 136, 149 + orig: 136, 149 + offset: 0, 0 + index: -1 +lower_leg + rotate: true + xy: 780, 699 + size: 73, 98 + orig: 73, 98 + offset: 0, 0 + index: -1 +mouth_grind + rotate: false + xy: 469, 544 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: true + xy: 894, 772 + size: 105, 30 + orig: 105, 30 + offset: 0, 0 + index: -1 +mouth_smile + rotate: true + xy: 140, 239 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +neck + rotate: true + xy: 538, 577 + size: 18, 21 + orig: 18, 21 + offset: 0, 0 + index: -1 +raptor_arm_back + rotate: false + xy: 940, 936 + size: 82, 86 + orig: 82, 86 + offset: 0, 0 + index: -1 +raptor_body + rotate: false + xy: 2, 737 + size: 610, 285 + orig: 610, 285 + offset: 0, 0 + index: -1 +raptor_front_arm + rotate: true + xy: 195, 464 + size: 81, 102 + orig: 81, 102 + offset: 0, 0 + index: -1 +raptor_front_leg + rotate: false + xy: 2, 478 + size: 191, 257 + orig: 191, 257 + offset: 0, 0 + index: -1 +raptor_hindleg_back + rotate: false + xy: 614, 807 + size: 169, 215 + orig: 169, 215 + offset: 0, 0 + index: -1 +raptor_horn + rotate: false + xy: 360, 655 + size: 182, 80 + orig: 182, 80 + offset: 0, 0 + index: -1 +raptor_horn_back + rotate: false + xy: 360, 576 + size: 176, 77 + orig: 176, 77 + offset: 0, 0 + index: -1 +raptor_jaw + rotate: false + xy: 785, 879 + size: 153, 143 + orig: 153, 143 + offset: 0, 0 + index: -1 +raptor_saddle_noshadow + rotate: false + xy: 2, 288 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_saddle_strap_front + rotate: false + xy: 721, 710 + size: 57, 95 + orig: 57, 95 + offset: 0, 0 + index: -1 +raptor_saddle_strap_rear + rotate: true + xy: 940, 880 + size: 54, 74 + orig: 54, 74 + offset: 0, 0 + index: -1 +raptor_saddle_w_shadow + rotate: false + xy: 195, 547 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_tongue + rotate: true + xy: 544, 649 + size: 86, 64 + orig: 86, 64 + offset: 0, 0 + index: -1 +stirrup_back + rotate: true + xy: 140, 145 + size: 44, 35 + orig: 44, 35 + offset: 0, 0 + index: -1 +stirrup_front + rotate: false + xy: 538, 597 + size: 45, 50 + orig: 45, 50 + offset: 0, 0 + index: -1 +stirrup_strap + rotate: false + xy: 350, 497 + size: 49, 46 + orig: 49, 46 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 610, 647 + size: 54, 91 + orig: 54, 91 + offset: 0, 0 + index: -1 +visor + rotate: false + xy: 2, 51 + size: 131, 84 + orig: 131, 84 + offset: 0, 0 + index: -1 diff --git a/spine-ts/widget/example/assets/raptor.json b/spine-ts/widget/example/assets/raptor.json new file mode 100644 index 000000000..d2b55b74c --- /dev/null +++ b/spine-ts/widget/example/assets/raptor.json @@ -0,0 +1,2621 @@ +{ +"skeleton": { "hash": "/7FMTV1eoFH7zhIaaG8BAH+NQOw", "spine": "3.4.00", "width": 1223.72, "height": 1055.62, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "rotation": 3.15, "x": -136.78, "y": 415.47, "color": "fbff00ff" }, + { "name": "torso1", "parent": "hip", "length": 126.25, "rotation": -4.97, "x": 30.03, "y": -0.4, "color": "eaff00ff" }, + { "name": "saddle", "parent": "torso1", "length": 50.91, "rotation": 91.8, "x": 4.56, "y": 71.86, "color": "ff7300ff" }, + { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "rotation": 90.01, "x": 81.88, "y": 2.68, "color": "ffffffff" }, + { + "name": "spineboy_torso", + "parent": "spineboy_hip", + "length": 122.45, + "rotation": -75.85, + "x": 1.05, + "y": -2.1, + "color": "ffffffff" + }, + { + "name": "back_arm", + "parent": "spineboy_torso", + "length": 67.21, + "rotation": -120.89, + "x": 96.33, + "y": -38.46, + "color": "ffffffff" + }, + { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "rotation": 17.48, "x": 67.21, "y": -0.31, "color": "ffffffff" }, + { + "name": "back_hand", + "parent": "back_bracer", + "length": 41.97, + "rotation": 9.2, + "x": 43.68, + "y": 0.06, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "rotation": 160.75, "x": -9.57, "y": 2.31, "color": "ffffffff" }, + { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "rotation": -54.97, "x": 71.15, "y": -0.28, "color": "ffffffff" }, + { + "name": "front_arm", + "parent": "spineboy_torso", + "length": 74.51, + "rotation": -118.16, + "x": 101.37, + "y": 9.78, + "color": "ffffffff" + }, + { "name": "torso2", "parent": "torso1", "length": 121.2, "rotation": 39.84, "x": 126.25, "y": -0.37, "color": "eaff00ff" }, + { "name": "front_arm1", "parent": "torso2", "length": 109.99, "rotation": 224.54, "x": 46.37, "y": -84.61, "color": "15ff00ff" }, + { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "rotation": 105.23, "x": 109.99, "y": 0.2, "color": "15ff00ff" }, + { "name": "neck", "parent": "torso2", "length": 70.59, "rotation": 41.37, "x": 121.19, "y": 0.34, "color": "eaff00ff" }, + { "name": "head", "parent": "neck", "length": 105.5, "rotation": 9.82, "x": 70.59, "y": 0.03, "color": "eaff00ff" }, + { "name": "horn_front", "parent": "head", "length": 87.48, "rotation": 49.36, "x": 82.09, "y": -221.36, "color": "15ff00ff" }, + { "name": "front_arm_target", "parent": "horn_front", "rotation": -138.59, "x": 294.58, "y": 234.17, "color": "15ff00ff" }, + { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "rotation": 20.3, "x": 74.52, "y": -0.41, "color": "ffffffff" }, + { "name": "front_leg1", "parent": "hip", "length": 251.74, "rotation": -51.5, "x": 27.36, "y": -28.27, "color": "15ff00ff" }, + { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "rotation": 261.93, "x": 251.03, "y": 0.16, "color": "15ff00ff" }, + { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "rotation": 85.46, "x": 208.5, "y": -1.63, "color": "15ff00ff" }, + { + "name": "front_foot1", + "parent": "front_leg3", + "length": 57.79, + "rotation": 54.46, + "x": 118.19, + "y": -0.79, + "scaleX": 1.126, + "color": "15ff00ff" + }, + { + "name": "front_foot2", + "parent": "front_foot1", + "length": 56.19, + "rotation": -2.15, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "inheritRotation": false, + "color": "15ff00ff" + }, + { + "name": "front_foot3", + "parent": "front_foot2", + "length": 129.88, + "rotation": -2.7, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "color": "15ff00ff" + }, + { "name": "front_foot_goal", "parent": "root", "rotation": -0.94, "x": -45.79, "y": -28.67, "color": "ff0000ff" }, + { "name": "front_hand", "parent": "front_arm2", "length": 47.55, "rotation": -56.83, "x": 86.33, "y": 0.06, "color": "15ff00ff" }, + { + "name": "front_hand2", + "parent": "front_bracer", + "length": 58.18, + "rotation": 13.9, + "x": 39.98, + "y": -0.89, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "front_leg_goal", "parent": "front_foot_goal", "x": -106.06, "y": 115.58, "color": "ff0000ff" }, + { + "name": "front_thigh", + "parent": "spineboy_hip", + "length": 77.79, + "rotation": 163.34, + "x": 15.51, + "y": 17.01, + "color": "ffffffff" + }, + { + "name": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "rotation": 107.11, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "color": "ffffffff" + }, + { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "rotation": -45.22, "x": 113.44, "y": -15.21, "color": "ffffffff" }, + { "name": "head2", "parent": "neck2", "length": 249.64, "rotation": 11.65, "x": 23.01, "y": 3.47, "color": "ffffffff" }, + { "name": "horn_rear", "parent": "head", "length": 73.78, "rotation": 44.31, "x": 99.27, "y": -226.79, "color": "e07800ff" }, + { "name": "jaw", "parent": "head", "length": 203.76, "rotation": -140.14, "x": 29.36, "y": -40.15, "color": "ffff00ff" }, + { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "rotation": -49.62, "x": 77.92, "y": -0.1, "color": "ffffffff" }, + { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "rotation": -124.71, "x": 57.05, "y": -95.38, "color": "e07800ff" }, + { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "rotation": 123.56, "x": 109.56, "color": "e07800ff" }, + { "name": "rear_arm_target", "parent": "horn_rear", "rotation": -133.55, "x": 232.68, "y": 245.84, "color": "e07800ff" }, + { "name": "rear_leg1", "parent": "hip", "length": 226.27, "rotation": -54.76, "x": 55.19, "y": -71.25, "color": "e07800ff" }, + { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "rotation": -92.25, "x": 226.32, "y": 0.23, "color": "e07800ff" }, + { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "rotation": 82.81, "x": 172.31, "y": 2.21, "color": "e07800ff" }, + { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "rotation": 75.43, "x": 102.37, "y": -0.02, "color": "e07800ff" }, + { + "name": "rear_foot2", + "parent": "rear_foot1", + "length": 102.31, + "rotation": -6.13, + "x": 84.49, + "y": -0.34, + "inheritRotation": false, + "color": "e07800ff" + }, + { "name": "rear_foot_goal", "parent": "root", "x": 33.43, "y": 30.81, "color": "ff0000ff" }, + { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "rotation": -76.28, "x": 85.8, "y": 0.1, "color": "e07800ff" }, + { "name": "rear_leg_goal", "parent": "rear_foot_goal", "x": -127.51, "y": 75.99, "color": "ff0000ff" }, + { + "name": "saddle_strap_front1", + "parent": "saddle", + "length": 97.27, + "rotation": -148.11, + "x": -27.36, + "y": -73.38, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_front2", + "parent": "saddle_strap_front1", + "length": 102.74, + "rotation": -11.13, + "x": 97.29, + "y": 0.3, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_rear1", + "parent": "saddle", + "length": 38.62, + "rotation": 151.13, + "x": -33.34, + "y": 87.32, + "color": "ff7300ff" + }, + { "name": "saddle_strap_rear2", "parent": "saddle_strap_rear1", "length": 54.36, "x": 38.63, "y": -0.02, "color": "ff7300ff" }, + { + "name": "saddle_strap_rear3", + "parent": "saddle_strap_rear2", + "length": 44.04, + "rotation": 3.63, + "x": 54.86, + "y": 0.19, + "color": "ff7300ff" + }, + { "name": "spineboy_front_arm_goal", "parent": "saddle", "x": -50.7, "y": -96.93, "color": "ff0004ff" }, + { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08, "color": "ff0001ff" }, + { "name": "stirrup", "parent": "saddle", "length": 78.17, "rotation": -68.85, "x": -81.94, "y": -103.38, "color": "ff7300ff" }, + { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "rotation": -135, "x": -20.38, "y": -29.37, "color": "ff7300ff" }, + { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "rotation": 9.38, "x": 43.7, "color": "ff7300ff" }, + { "name": "tail1", "parent": "hip", "length": 162.53, "rotation": 162.92, "x": -20.86, "y": 6.87, "color": "eaff00ff" }, + { "name": "tail2", "parent": "tail1", "length": 130.02, "rotation": 30.3, "x": 162.53, "y": -0.82, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 141.06, "rotation": 6.88, "x": 130.02, "y": 0.1, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 126.25, "rotation": -18.86, "x": 141.05, "y": 0.64, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 91.06, "rotation": -22.34, "x": 126.25, "y": -0.47, "color": "eaff00ff" }, + { "name": "tongue1", "parent": "head", "length": 55.11, "rotation": -129.04, "x": 20.81, "y": -104.75, "color": "ffff00ff" }, + { "name": "tongue2", "parent": "tongue1", "length": 44.66, "rotation": 8.93, "x": 55.59, "y": 0.93, "color": "fff200ff" }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "rotation": 12.86, "x": 44.26, "y": -0.2, "color": "fff200ff" } +], +"slots": [ + { "name": "back_hand", "bone": "back_hand", "attachment": "back_hand" }, + { "name": "back_arm", "bone": "back_arm", "attachment": "back_arm" }, + { "name": "back_bracer", "bone": "back_bracer", "attachment": "back_bracer" }, + { "name": "back_knee", "bone": "back_knee", "attachment": "back_knee" }, + { "name": "raptor_horn_back", "bone": "horn_rear", "attachment": "raptor_horn_back" }, + { "name": "raptor_tongue", "bone": "root", "attachment": "raptor_tongue" }, + { "name": "raptor_hindleg_back", "bone": "rear_leg1", "attachment": "raptor_hindleg_back" }, + { "name": "raptor_arm_back", "bone": "root", "attachment": "raptor_arm_back" }, + { "name": "raptor_body", "bone": "torso1", "attachment": "raptor_body" }, + { "name": "back_thigh", "bone": "back_thigh", "attachment": "back_thigh" }, + { "name": "raptor_saddle_strap_front", "bone": "saddle_strap_front1", "attachment": "raptor_saddle_strap_front" }, + { "name": "raptor_saddle_strap_rear", "bone": "saddle_strap_rear1", "attachment": "raptor_saddle_strap_rear" }, + { "name": "raptor_saddle_w_shadow", "bone": "saddle", "attachment": "raptor_saddle_w_shadow" }, + { "name": "raptor_saddle_noshadow", "bone": "saddle" }, + { "name": "raptor_front_arm", "bone": "root", "attachment": "raptor_front_arm" }, + { "name": "raptor_front_leg", "bone": "front_leg1", "attachment": "raptor_front_leg" }, + { "name": "raptor_jaw", "bone": "jaw", "attachment": "raptor_jaw" }, + { "name": "neck", "bone": "neck2", "attachment": "neck" }, + { "name": "spineboy_torso", "bone": "spineboy_torso", "attachment": "torso" }, + { "name": "head", "bone": "head2", "attachment": "head" }, + { "name": "eyes_open", "bone": "head2", "attachment": "eyes_open" }, + { "name": "mouth_smile", "bone": "head2", "attachment": "mouth_smile" }, + { "name": "visor", "bone": "head2", "attachment": "visor" }, + { "name": "raptor_horn", "bone": "horn_front", "attachment": "raptor_horn" }, + { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, + { "name": "stirrup_back", "bone": "stirrup", "attachment": "stirrup_back" }, + { "name": "lower_leg", "bone": "lower_leg", "attachment": "lower_leg" }, + { "name": "stirrup_strap", "bone": "stirrup", "attachment": "stirrup_strap" }, + { "name": "stirrup_front", "bone": "stirrup", "attachment": "stirrup_front" }, + { "name": "gun", "bone": "gun", "attachment": "gun_nohand" }, + { "name": "front_arm", "bone": "front_arm", "attachment": "front_arm" }, + { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, + { "name": "front_hand", "bone": "front_hand2", "attachment": "front_hand" } +], +"ik": [ + { + "name": "front_arm_goal", + "bones": [ "front_arm", "front_bracer" ], + "target": "front_arm_target" + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_arm_goal", + "bones": [ "back_arm", "back_bracer" ], + "target": "rear_arm_target" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "spineboy_front_leg_goal", + "bones": [ "front_thigh", "lower_leg" ], + "target": "spineboy_front_arm_goal", + "bendPositive": false + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "bendPositive": false + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + } +], +"skins": { + "default": { + "back_arm": { + "back_arm": { "x": 29.71, "y": 2.04, "rotation": 16.75, "width": 91, "height": 57 } + }, + "back_bracer": { + "back_bracer": { "x": 13.19, "y": -4.28, "rotation": -0.72, "width": 77, "height": 55 } + }, + "back_hand": { + "back_hand": { "x": 18.6, "y": 4.23, "rotation": -10.99, "width": 72, "height": 68 } + }, + "back_knee": { + "back_knee": { "x": 45.77, "y": 20.47, "rotation": 74.22, "width": 97, "height": 134 } + }, + "back_thigh": { + "back_thigh": { "x": 37.85, "y": -4.36, "rotation": 19.24, "width": 78, "height": 47 } + }, + "eyes_open": { + "eyes_open": { "x": 93.23, "y": -25.45, "rotation": -70.57, "width": 93, "height": 89 } + }, + "front_arm": { + "front_arm": { "x": 31.38, "y": 5.09, "rotation": 14.02, "width": 96, "height": 60 } + }, + "front_bracer": { + "front_bracer": { "x": 11.68, "y": -1.36, "rotation": -6.28, "width": 81, "height": 58 } + }, + "front_hand": { + "front_hand": { "x": 35.7, "y": 7.84, "rotation": -13.96, "width": 82, "height": 75 }, + "front_open_hand": { "x": 42.54, "y": 4.62, "rotation": 62.19, "width": 86, "height": 87 }, + "gun": { "x": 98.9, "y": 22.97, "rotation": 56.34, "width": 213, "height": 206 } + }, + "front_thigh": { + "front_thigh": { "x": 45.7, "y": -3.1, "rotation": 16.65, "width": 114, "height": 58 } + }, + "gun": { + "gun_nohand": { + "type": "mesh", + "uvs": [ 0.71081, 0.16149, 0.85807, 0.41784, 1, 0.6649, 1, 1, 0.71457, 1, 0.49802, 0.6905, 0.30182, 0.41009, 0, 0.58226, 0, 0.1174, 0.27187, 0.12429, 0.24857, 0, 0.36658, 0, 0.61804, 0, 0.70575, 0.53546, 0.53668, 0.26855 ], + "triangles": [ 3, 13, 2, 5, 13, 4, 3, 4, 13, 13, 6, 14, 13, 5, 6, 13, 1, 2, 6, 8, 9, 6, 7, 8, 13, 14, 1, 14, 0, 1, 6, 9, 14, 9, 11, 14, 14, 12, 0, 14, 11, 12, 9, 10, 11 ], + "vertices": [ 23.48, 50.63, 83.86, 46.32, 142.05, 42.17, 197.91, 3.34, 163.7, -45.86, 86.15, -47.34, 15.9, -48.68, 8.42, -120.68, -69.06, -66.81, -35.32, -20.73, -58.83, -10.35, -44.69, 9.99, -14.55, 53.35, 85.21, 6.43, 20.45, 8.2 ], + "hull": 13, + "edges": [ 14, 12, 6, 8, 6, 4, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 8, 10, 10, 12, 6, 26, 10, 26, 4, 2, 26, 2, 22, 28, 28, 26, 12, 28, 2, 0, 0, 24, 28, 0, 18, 12 ], + "width": 210, + "height": 203 + } + }, + "head": { + "head": { "x": 132.33, "y": 1.19, "rotation": -70.57, "width": 271, "height": 298 } + }, + "lower_leg": { + "lower_leg": { "x": 76.2, "y": 22.2, "rotation": 66.28, "width": 146, "height": 195 } + }, + "mouth_smile": { + "mouth_smile": { "x": 27.66, "y": -31.33, "rotation": -70.57, "width": 93, "height": 59 } + }, + "neck": { + "neck": { "x": 15.09, "y": -1.66, "rotation": -58.91, "width": 36, "height": 41 } + }, + "raptor_arm_back": { + "raptor_arm_back": { + "type": "mesh", + "uvs": [ 0.38711, 0.29362, 0.31382, 0.46513, 0.29242, 0.51521, 0.32475, 0.4931, 0.57587, 0.32138, 0.63254, 0.28263, 0.71632, 0.34507, 0.94948, 0.51888, 0.94947, 0.60129, 1, 0.65257, 1, 0.90624, 0.95462, 0.99934, 0.88957, 0.83204, 0.80294, 0.99998, 0.75236, 0.75696, 0.6654, 0.713, 0.62288, 0.63242, 0.58194, 0.65031, 0.22478, 0.80641, 0.07791, 0.73315, 0.07825, 0.66549, 0.07984, 0.34306, 0, 0.29728, 0, 0, 0.32334, 0 ], + "triangles": [ 6, 15, 16, 5, 6, 16, 5, 16, 4, 6, 7, 15, 16, 17, 4, 8, 15, 7, 14, 15, 8, 12, 14, 8, 12, 8, 9, 12, 9, 10, 11, 12, 10, 13, 14, 12, 17, 3, 4, 19, 20, 2, 18, 19, 2, 18, 2, 3, 18, 3, 17, 21, 22, 23, 24, 21, 23, 0, 21, 24, 1, 21, 0, 1, 20, 21, 2, 20, 1 ], + "vertices": [ 2, 37, 36.95, 33.31, 0.91666, 38, 68.53, 41.05, 0.08333, 2, 37, 66.01999, 20.35, 0.76813, 38, 41.41, 24.39, 0.23186, 2, 37, 74.51, 16.57, 0.64468, 38, 33.49, 19.53, 0.35531, 2, 37, 70.89, 21.97, 0.29071, 38, 39.99, 19.45999, 0.70928, 3, 37, 42.77, 63.89, 0.11483, 38, 90.47, 18.95, 0.60854, 46, -17.2, 9, 0.2766, 2, 38, 101.86, 18.83, 0.45955, 46, -14.38, 20.04, 0.54044, 2, 38, 106.47, 2.08, 0.0625, 46, 2.98, 20.56, 0.9375, 1, 46, 51.32, 21.98, 1, 1, 46, 60.41, 11.1, 1, 1, 46, 72.39, 9.60999, 1, 1, 46, 100.37, -23.87, 1, 1, 46, 104.96, -40.9, 1, 1, 46, 78.37, -25.61, 1, 1, 46, 86.05, -56.84, 1, 1, 46, 52.92, -30.04, 1, 2, 38, 62.24, -43.92, 0.0625, 46, 37.18999, -33.33, 0.9375, 2, 38, 64.89, -28.65, 0.3125, 46, 22.98, -27.14, 0.6875, 2, 38, 57.69, -27.17, 0.30612, 46, 19.83, -33.78, 0.69387, 2, 37, 124.19, 3.83, 0.19395, 38, -5.09, -14.23, 0.80604, 2, 37, 110.77, -19.65, 0.3125, 38, -16.87999, 10.1, 0.6875, 2, 37, 99.14, -19.2, 0.51612, 38, -9.93, 19.44, 0.48386, 2, 37, 43.73, -17.03, 0.9375, 38, 23.17, 63.92, 0.0625, 1, 37, 35.41, -29.77, 1, 1, 37, -15.68, -28.02, 1, 1, 37, -13.87, 24.65, 1 ], + "hull": 25, + "edges": [ 44, 46, 44, 42, 38, 36, 32, 30, 30, 28, 28, 26, 24, 22, 18, 16, 16, 14, 46, 48, 38, 4, 6, 4, 6, 36, 42, 40, 40, 38, 4, 2, 2, 0, 40, 2, 10, 32, 36, 34, 34, 32, 10, 8, 8, 6, 34, 8, 14, 12, 12, 10, 12, 30, 18, 20, 22, 20, 26, 24, 48, 0 ], + "width": 163, + "height": 172 + } + }, + "raptor_body": { + "raptor_body": { + "type": "mesh", + "uvs": [ 0.89014, 0.11136, 1, 0.22194, 1, 0.42847, 0.88179, 0.38589, 0.874, 0.47986, 0.84783, 0.51728, 0.82504, 0.54984, 0.82403, 0.61606, 0.82305, 0.67972, 0.74042, 0.86709, 0.61596, 0.93097, 0.49649, 0.90968, 0.41186, 0.71379, 0.36955, 0.70086, 0.32823, 0.68824, 0.30082, 0.69962, 0.27515, 0.71028, 0.25301, 0.71948, 0.22568, 0.73082, 0.20832, 0.72362, 0.19092, 0.7164, 0.15952, 0.70337, 0.1301, 0.69116, 0.09227, 0.67546, 0.06029, 0.63165, 0.02855, 0.58817, 0, 0.49874, 0.05045, 0.53494, 0.08267, 0.54507, 0.11815, 0.55623, 0.14733, 0.54161, 0.17913, 0.52568, 0.20324, 0.5136, 0.22867, 0.50087, 0.24871, 0.47664, 0.27523, 0.44458, 0.32026, 0.39015, 0.37517, 0.35747, 0.43476, 0.32201, 0.4893, 0.35534, 0.56021, 0.39867, 0.61587, 0.40674, 0.67769, 0.4157, 0.69094, 0.31314, 0.69362, 0.14742, 0.79219, 0.08354, 0.51541, 0.74573, 0.62393, 0.75425, 0.70856, 0.7287, 0.76132, 0.63288, 0.7566, 0.49454, 0.80613, 0.27517, 0.65885, 0.59037, 0.53929, 0.54937, 0.42632, 0.52207, 0.3246, 0.55241, 0.22715, 0.618, 0.10574, 0.61341, 0.03969, 0.56109, 0.77916, 0.39461, 0.37556, 0.53721, 0.27743, 0.58416, 0.16958, 0.61582, 0.07259, 0.58715, 0.87545, 0.31683, 0.85488, 0.21417, 0.81012, 0.17403, 0.83214, 0.25662, 0.83823, 0.32214, 0.84622, 0.41719, 0.59954, 0.57003, 0.49074, 0.53763, 0.76917, 0.43888, 0.75912, 0.56845, 0.871, 0.3701, 0.85431, 0.43545, 0.89558, 0.32412, 0.90105, 0.22877, 0.91523, 0.20564, 0.93086, 0.219, 0.93446, 0.25858, 0.91956, 0.2776, 0.9061, 0.26423, 0.9415, 0.25929, 0.93589, 0.21545, 0.91669, 0.19192, 0.89297, 0.22201, 0.90245, 0.28513, 0.92006, 0.281, 0.92143, 0.29619, 0.94856, 0.2643, 0.19894, 0.61694, 0.13973, 0.61469, 0.25158, 0.60156, 0.88779, 0.26675 ], + "triangles": [ 13, 60, 12, 12, 71, 46, 46, 70, 47, 11, 12, 46, 47, 11, 46, 10, 11, 47, 13, 14, 55, 15, 93, 14, 16, 56, 15, 58, 26, 27, 28, 58, 27, 63, 28, 29, 63, 58, 28, 25, 26, 58, 25, 58, 63, 57, 63, 29, 92, 29, 30, 57, 29, 92, 24, 25, 63, 24, 63, 57, 23, 24, 57, 92, 23, 57, 22, 23, 92, 62, 22, 92, 21, 22, 62, 20, 21, 91, 92, 30, 62, 91, 21, 62, 62, 30, 31, 91, 62, 31, 31, 32, 93, 20, 91, 56, 56, 19, 20, 17, 19, 56, 18, 19, 17, 93, 91, 31, 55, 34, 35, 33, 34, 55, 61, 33, 55, 61, 32, 33, 93, 32, 61, 56, 91, 93, 56, 93, 15, 16, 17, 56, 36, 37, 54, 60, 35, 36, 54, 60, 36, 60, 55, 35, 61, 55, 14, 93, 61, 14, 60, 13, 55, 12, 60, 54, 39, 54, 37, 39, 37, 38, 71, 54, 39, 40, 71, 39, 53, 71, 40, 53, 40, 41, 12, 54, 71, 46, 71, 53, 66, 45, 0, 44, 45, 66, 1, 84, 85, 65, 66, 0, 0, 85, 65, 85, 86, 65, 85, 0, 1, 78, 85, 84, 79, 78, 84, 78, 86, 85, 77, 86, 78, 77, 78, 79, 67, 66, 65, 83, 80, 79, 84, 83, 79, 77, 79, 80, 84, 90, 83, 82, 77, 80, 1, 90, 84, 94, 65, 86, 94, 86, 77, 94, 77, 82, 67, 65, 94, 51, 44, 66, 51, 66, 67, 81, 82, 80, 83, 88, 81, 87, 94, 82, 87, 82, 81, 87, 81, 88, 88, 90, 89, 87, 88, 89, 80, 83, 81, 90, 88, 83, 43, 44, 51, 64, 67, 94, 64, 94, 87, 68, 67, 64, 51, 67, 68, 76, 64, 87, 76, 87, 89, 74, 68, 64, 74, 64, 76, 3, 74, 76, 59, 43, 51, 59, 51, 68, 69, 59, 68, 74, 69, 68, 69, 74, 3, 90, 1, 2, 89, 90, 2, 76, 89, 2, 3, 76, 2, 75, 69, 3, 4, 75, 3, 75, 72, 69, 5, 75, 4, 5, 72, 75, 72, 59, 69, 59, 42, 43, 72, 42, 59, 50, 42, 72, 50, 72, 5, 6, 50, 5, 73, 50, 6, 52, 70, 42, 50, 52, 42, 73, 52, 50, 7, 73, 6, 49, 73, 7, 52, 73, 49, 8, 49, 7, 48, 52, 49, 48, 49, 8, 47, 52, 48, 70, 53, 41, 70, 41, 42, 46, 53, 70, 47, 70, 52, 9, 48, 8, 47, 48, 9, 10, 47, 9 ], + "vertices": [ 1, 16, 147.48, -145.48, 1, 1, 16, 89.4, -281.62, 1, 1, 16, -28.24, -285.93, 1, 1, 16, -14.58, -194.68, 1, 4, 12, 238.39, -84.13, 0.20851, 15, 32.09999, -140.85, 0.19336, 16, -61.96, -132.26, 0.42115, 35, 129.57, 6.39, 0.17696, 5, 2, 332.7, 63.71, 0.06905, 12, 199.57, -83.03, 0.29424, 15, 3.69, -114.37, 0.2194, 16, -85.43, -101.32, 0.30859, 35, 127.34, -26.64, 0.1087, 5, 2, 307.08, 43.5, 0.11018, 12, 166.95, -82.12999, 0.37282, 15, -20.18, -92.14, 0.24572, 16, -105.18, -75.33999, 0.21862, 35, 123.08, -64.79, 0.05264, 4, 2, 307.75, 5.7, 0.18627, 12, 143.25, -111.59, 0.58009, 15, -57.43, -98.57, 0.12363, 16, -142.98, -75.33, 0.10999, 2, 2, 308.7, -30.55, 0.25, 12, 120.75, -140.04, 0.75, 2, 2, 213.94, -142.7, 0.75, 12, -23.83, -165.45, 0.25, 3, 2, 64.44999, -187.34, 0.31139, 58, -158.45, 158.33, 0.10379, 1, 84.16, -190.98, 0.5848, 1, 1, -61.47, -178.84, 1, 4, 58, 118.47, 114.74, 0.07383, 59, 17.17, 122.49, 0.17504, 60, -100.71, 132.55, 0.06818, 1, -166.91, -67.94999, 0.68294, 4, 58, 170.4, 123.13, 0.06537, 59, 66.71, 104.77, 0.20999, 60, -53.08, 110.21, 0.12016, 1, -217.69, -61.33, 0.60447, 6, 58, 221.11, 131.31, 0.02179, 59, 115.07, 87.47, 0.23058, 60, -6.58, 88.39, 0.16258, 61, -168.92, 31, 0.02826, 62, -282.82, -90.19, 0.029, 1, -267.66, -55.14, 0.52776, 5, 59, 146.51, 86.08, 0.23635, 60, 26.66, 83.39, 0.19338, 61, -134.99, 41.34, 0.06624, 62, -257.52, -60.65, 0.06962, 1, -298.87, -61.99, 0.43436, 5, 59, 178.73, 86.41, 0.22521, 60, 56.68, 81.29, 0.20997, 61, -107.13, 46.31, 0.11271, 62, -232.44, -51.26, 0.12148, 1, -328.68, -69.24, 0.3306, 5, 59, 203.26, 86.51, 0.21603, 60, 83.06, 77.01999, 0.22457, 61, -79.56, 53.53, 0.13939, 62, -210.89, -28.3, 0.15618, 1, -354.01, -75.41, 0.26379, 5, 59, 238.06, 85.41, 0.20114, 60, 115.65, 74.66, 0.2315, 61, -49.53, 60.58, 0.16455, 62, -185.49, -14.98, 0.19123, 1, -385.33, -83.15, 0.21156, 5, 59, 255.33, 78.85, 0.18224, 60, 133.83, 63.18, 0.23194, 61, -27.04, 56.84, 0.18907, 62, -163.58, -5.26, 0.22658, 1, -406.45, -79.89, 0.17015, 5, 59, 275.48, 71.62, 0.16169, 60, 152.97, 53.58, 0.22885, 61, -5.82, 53.94, 0.21292, 62, -142.85, 0.11, 0.26159, 1, -427.72, -77.47, 0.13493, 5, 59, 313.81, 53.61, 0.14198, 60, 188.04, 35.82, 0.22293, 61, 31.84, 49.3, 0.23478, 62, -106.46, 7.49, 0.29326, 1, -465.96, -72.58999, 0.10702, 5, 59, 345.74, 45.54, 0.12502, 60, 219.6, 19.28, 0.2179, 61, 68.31, 43.02, 0.25622, 62, -70.12999, 18.19, 0.32248, 1, -502.09, -68.19, 0.07835, 4, 59, 390.81, 21.3, 0.11758, 60, 261.62, -3.66, 0.22607, 61, 114.55, 37.83, 0.29087, 62, -26.15, 30.34, 0.36547, 4, 59, 423.87, -11.11, 0.10536, 60, 291.46, -39.06, 0.21954, 61, 154.83, 14.99, 0.30098, 62, 19.91, 25.67, 0.37409, 4, 59, 456.68, -43.27, 0.09949, 60, 321.06, -74.19999, 0.21749, 61, 194.79, -7.66, 0.30788, 62, 65.62, 21.04, 0.37513, 4, 59, 480.34, -100.28, 0.10045, 60, 339.2, -133.2, 0.22026, 61, 232.3, -56.69, 0.31103, 62, 119.7, -8.68999, 0.36824, 4, 59, 424.34, -67.51999, 0.10379, 60, 286.57, -95.27, 0.23087, 61, 169.77, -39.4, 0.30828, 62, 55.51, -18.08, 0.35705, 4, 59, 387.08, -53.84, 0.11505, 60, 250.77, -78.11, 0.2454, 61, 130.24, -35.75, 0.30092, 62, 17.87, -30.67, 0.3386, 4, 59, 346.04, -38.78, 0.13471, 60, 211.34, -59.22, 0.26271, 61, 86.7, -31.72, 0.2888, 62, -23.59, -44.54, 0.31376, 5, 58, 449.17, 125.97, 0.02419, 59, 311.45, -35.25, 0.16384, 60, 175.89, -56.83, 0.2727, 61, 51.53, -43.14, 0.26317, 62, -52.88, -67.87, 0.27607, 5, 58, 418.38, 93.72, 0.05913, 59, 269.72, -40.64, 0.19681, 60, 135.19, -53.82, 0.27688, 61, 13.42, -53.11, 0.23219, 62, -82.03, -93.66, 0.23497, 5, 58, 390.82, 86.58, 0.10638, 59, 241.19, -39.8, 0.2354, 60, 105.59, -52.93, 0.27331, 61, -16.25, -62.16, 0.19459, 62, -108.34, -111.24, 0.19028, 5, 58, 364.8, 62.48, 0.14347, 59, 207.71, -42.14, 0.28099, 60, 73.33, -49.43, 0.26867, 61, -46.11, -70.49, 0.15764, 62, -129.51, -133.56, 0.1492, 5, 58, 345.49, 47.53, 0.18499, 59, 182.34, -50.62, 0.33114, 60, 45.87, -56.62, 0.25881, 61, -71.57, -84.96, 0.1174, 62, -150.85, -153.35, 0.10763, 5, 58, 319.95, 15.15, 0.23755, 59, 145.6, -61.95, 0.39396, 60, 9.60999, -63.26, 0.24619, 61, -101.06, -105.58, 0.06443, 62, -165.65, -187.83, 0.05784, 3, 58, 276.58, -30.61, 0.29942, 59, 85.52, -81.11, 0.46774, 60, -52.01, -76.62, 0.23283, 3, 58, 214.5, -70.36, 0.32855, 59, 11.97, -85.98, 0.48601, 60, -125.69, -74.48, 0.18543, 2, 58, 147.14, -113.5, 0.59565, 59, -67.83999, -91.26, 0.40433, 2, 2, -113.14, 135.84, 0.24192, 58, 91.72, -112.59, 0.75807, 2, 2, -42.12, 116.77, 0.14515, 58, 18.2, -111.17, 0.85484, 1, 2, 44.2, 107.1, 1, 2, 2, 140.09, 96.35, 0.22579, 12, 72.58999, 65.41, 0.7742, 4, 2, 137.69, 169.35, 0.05644, 12, 117.5, 123, 0.24355, 15, 78.3, 94.48, 0.2125, 16, 23.7, 91.74, 0.4875, 2, 15, 171.15, 111.98, 0.25, 16, 118.17, 93.15, 0.75, 1, 16, 158.96, -25.58, 1, 1, 1, -40.63, -86.01, 1, 3, 2, 67.33999, -86.66, 0.33215, 58, -137.02, 59.92, 0.08303, 1, 92.54, -90.61, 0.5848, 2, 2, 170.13, -66.29, 0.75, 12, -8.53, -78.72, 0.25, 2, 2, 231.74, -8.12, 0.4, 12, 76.03, -73.51999, 0.6, 4, 2, 222.04, 70.41, 0.17551, 12, 118.9, -7, 0.55823, 15, -6.58, -3.99, 0.17739, 16, -76.73, 9.18, 0.08884, 1, 16, 50.43, -46.56, 1, 1, 12, -9.88, 20.65, 1, 2, 2, -53.22, 20.53, 0.2, 58, 5.8, -15.09, 0.8, 3, 2, -180.71, 32.22, 0.08564, 58, 132.35, 4.23999, 0.56215, 59, -23.98, 19.01, 0.35219, 3, 58, 246.39, 57.53, 0.30273, 59, 101.61, 10.65, 0.46989, 60, -27.28, 13.2, 0.22737, 5, 58, 346.99, 126.85, 0.13479, 59, 223.17, 22.83, 0.28279, 60, 94.88, 13.77, 0.24481, 61, -47.85, -3.72, 0.17322, 62, -158.02, -73.16, 0.16438, 4, 59, 367.51, -9.96, 0.14656, 60, 235.45, -32.57, 0.23073, 61, 100.06, 1.62, 0.29607, 62, -24.81, -8.63, 0.32661, 4, 59, 440.24, -55.6, 0.10821, 60, 303.52, -84.91, 0.21897, 61, 182.07, -23.8, 0.31097, 62, 60.48, 1.14, 0.36182, 3, 12, 174.99, 22.22, 0.2, 15, 54.82, -19.14, 0.6, 16, -18.79999, -16.2, 0.2, 3, 58, 189.25, 30.83, 0.33253, 59, 38.68, 14.84, 0.48076, 60, -89.52, 23.34, 0.18669, 5, 58, 295.08, 91.08, 0.22891, 59, 160.45, 16.54, 0.38754, 60, 31.85, 13.48, 0.2306, 61, -106.86, -25.89, 0.08042, 62, -203.08, -117.24, 0.0725, 5, 58, 414.43, 146.25, 0.07359, 59, 291.61, 7.27, 0.20198, 60, 161.53, -8.2, 0.23762, 61, 22.27, -1.17999, 0.24024, 62, -94.86, -42.56, 0.24654, 4, 59, 404.01, -32.87, 0.12351, 60, 269.61, -58.84, 0.22261, 61, 141.21, -11.13, 0.30609, 62, 17.98, -3.72, 0.34777, 1, 16, 26.4, -166.06, 1, 1, 16, 87.21, -106.12, 1, 1, 16, 108.19, -49.62, 1, 2, 16, 61.73, -82.12999, 0.50021, 35, 4.42, 52.83, 0.49978, 2, 16, 22.84, -109.4, 0.50021, 35, 51.52, 46.73, 0.49978, 4, 12, 247.12, -50.52, 0.06545, 15, 60.86, -121.4, 0.06069, 16, -30.3, -118, 0.49079, 35, 96.58, 17.21999, 0.38305, 1, 2, 26.73, 14.8, 1, 2, 2, -107.97, 25.67, 0.24192, 58, 60.17, -6.91, 0.75807, 4, 2, 235.53, 102.96, 0.0761, 12, 150.1, 9.35, 0.35533, 15, 27.64, -12.34, 0.41675, 16, -44.43, -4.87, 0.1518, 3, 2, 227.15, 28.49, 0.31015, 12, 95.96, -42.46, 0.60548, 15, -47.23, -15.44, 0.08435, 2, 16, 5.19, -153.1, 0.87618, 35, 90.96, 71.21, 0.12381, 4, 12, 243.13, -60.59, 0.10669, 15, 51.21, -126.33, 0.09893, 16, -40.65, -121.21, 0.47072, 35, 105.71, 17.33, 0.32363, 1, 16, 23.69, -185.21, 1, 1, 16, 79.64, -175.94, 1, 1, 16, 93.96, -187.56, 1, 1, 16, 87.07, -206.55, 1, 1, 16, 64.19999, -216.74, 1, 1, 16, 52.23, -203.68, 1, 1, 16, 59.24, -187.03, 1, 1, 16, 64.26, -223.8, 1, 1, 16, 89.44, -211.41, 1, 1, 16, 102.04, -186.95, 1, 1, 16, 83.1, -166.14, 1, 1, 16, 46.84, -186.41, 1, 1, 16, 50.32, -204.36, 1, 1, 16, 41.7, -206.59, 1, 1, 16, 61.87, -230.97, 1, 5, 58, 374.97, 143.6, 0.10291, 59, 256.29, 17.42, 0.23985, 60, 127.43, 2.07, 0.2431, 61, -13.35, -3.05, 0.20854, 62, -128.14, -55.46, 0.20557, 4, 59, 327.21, 4.42, 0.17789, 60, 196.28, -19.32, 0.24248, 61, 58.71, -1.04999, 0.28055, 62, -62.24, -26.21, 0.29905, 5, 58, 318.32, 113.62, 0.17774, 59, 192.26, 20.14, 0.33383, 60, 64.19, 12.44, 0.24171, 61, -76.55, -13.67, 0.12849, 62, -182.56, -89.31, 0.11821, 2, 16, 56.98, -162.99, 0.89259, 35, 57.54, 112, 0.1074 ], + "hull": 46, + "edges": [ 22, 20, 20, 18, 18, 16, 6, 4, 4, 2, 90, 88, 54, 52, 52, 50, 24, 22, 88, 86, 86, 84, 8, 6, 24, 26, 26, 28, 72, 74, 74, 76, 70, 72, 46, 48, 48, 50, 54, 56, 56, 58, 80, 82, 82, 84, 76, 78, 78, 80, 8, 10, 10, 12, 12, 14, 14, 16, 0, 90, 0, 2, 62, 64, 64, 66, 40, 42, 58, 60, 60, 62, 42, 44, 44, 46, 66, 68, 68, 70, 32, 34, 34, 36, 52, 116, 116, 126, 126, 114, 114, 184, 184, 124, 124, 182, 182, 112, 112, 186, 186, 122, 122, 110, 110, 120, 120, 108, 108, 142, 142, 106, 106, 140, 140, 104, 92, 94, 94, 96, 96, 98, 98, 146, 146, 100, 100, 144, 144, 118, 118, 102, 8, 150, 150, 138, 138, 136, 136, 134, 134, 132, 156, 154, 154, 164, 164, 162, 162, 160, 160, 158, 158, 156, 180, 178, 178, 174, 174, 188, 188, 172, 170, 168, 28, 30, 30, 32, 36, 38, 38, 40 ], + "width": 1219, + "height": 570 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "mesh", + "uvs": [ 0.39562, 0.1396, 0.3877, 0.30212, 0.3123, 0.41784, 0.27287, 0.47835, 0.33388, 0.4507, 0.54879, 0.35328, 0.64092, 0.31152, 0.73024, 0.36529, 1, 0.5277, 1, 0.86606, 0.93242, 1, 0.86176, 0.80967, 0.75576, 0.99765, 0.71748, 1, 0.70276, 0.77442, 0.62031, 0.73448, 0.58792, 0.64519, 0.53561, 0.6582, 0.13448, 0.75798, 0, 0.69218, 0.01846, 0.56357, 0.05498, 0.30917, 0, 0.27863, 0, 0.12423, 0, 0, 0.19596, 0, 0.40242, 0, 0.24536, 0.1924, 0.21678, 0.0811 ], + "triangles": [ 0, 28, 26, 23, 25, 28, 28, 25, 26, 23, 24, 25, 6, 7, 16, 6, 16, 5, 15, 16, 7, 7, 14, 15, 8, 14, 7, 11, 14, 8, 11, 8, 9, 12, 14, 11, 13, 14, 12, 10, 11, 9, 17, 4, 5, 16, 17, 5, 18, 19, 3, 18, 3, 4, 18, 4, 17, 27, 28, 0, 27, 22, 23, 27, 23, 28, 1, 27, 0, 21, 22, 27, 21, 27, 1, 2, 21, 1, 2, 20, 21, 3, 20, 2, 19, 20, 3 ], + "vertices": [ 2, 13, 3.06, 31.88, 0.51075, 12, 66.56, -109.48, 0.48924, 1, 13, 35.87, 35.62, 1, 2, 13, 60.94, 27.12, 0.8464, 14, 46.49, 31.12, 0.15358, 2, 13, 74.05, 22.67, 0.3492, 14, 36.5, 21.53, 0.65078, 3, 13, 67, 31.58, 0.10937, 14, 47.66, 23.68, 0.78125, 27, -40.93, -19.44, 0.10937, 2, 14, 86.98, 31.24, 0.65078, 27, -25.75, 17.61, 0.3492, 2, 14, 103.83, 34.49, 0.34375, 27, -19.24, 33.49, 0.65625, 2, 14, 114.04, 19.51, 0.10937, 27, -1.11, 33.84, 0.89062, 1, 27, 53.62, 34.88, 1, 1, 27, 96.03, -19.16, 1, 1, 27, 104.2, -47.31, 1, 1, 27, 71.33999, -23.98, 1, 1, 27, 81.39, -64.61, 1, 1, 27, 76.8, -68.81, 1, 1, 27, 46.65, -34.25, 1, 2, 14, 73.12999, -45.76, 0.10937, 27, 31.14, -36.12, 0.89062, 2, 14, 73.98, -26.9, 0.34375, 27, 15.82, -25.09, 0.65625, 2, 14, 65.1, -26.69, 0.65078, 27, 10.78, -32.41, 0.3492, 3, 13, 133.56, 9.13, 0.10937, 14, -2.94, -25.03, 0.78125, 27, -27.84, -88.47, 0.10937, 2, 13, 123.67, -14.42, 0.3492, 14, -19.29, -5.39, 0.65078, 2, 13, 97.41, -15.43, 0.8464, 14, -8.08, 18.37, 0.15358, 1, 13, 45.46, -17.43, 1, 2, 13, 40.68999, -27.17, 0.45035, 12, -1.69, -93.8, 0.54964, 2, 13, -2.74, -29.63, 0.44352, 12, 18.99, -72.93, 0.55646, 1, 12, 32.11, -48.45, 1, 1, 12, 57.56, -67.43, 1, 1, 12, 84.38, -87.42, 1, 2, 13, 16.44, 5.21, 0.7182, 12, 46.31, -101.86, 0.28178, 2, 13, -4.51, 5.32, 0.48851, 12, 52.82, -81.94, 0.51147 ], + "hull": 27, + "edges": [ 38, 36, 32, 30, 30, 28, 28, 26, 24, 26, 24, 22, 22, 20, 20, 18, 18, 16, 44, 42, 38, 6, 38, 40, 40, 42, 6, 4, 4, 2, 40, 4, 8, 6, 36, 8, 32, 12, 42, 2, 52, 0, 0, 2, 16, 14, 14, 12, 30, 14, 36, 34, 34, 32, 12, 10, 10, 8, 34, 10, 48, 50, 50, 52, 44, 46, 46, 48, 50, 56, 56, 54 ], + "width": 162, + "height": 203 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "mesh", + "uvs": [ 0.55116, 0.17817, 0.6279, 0.36027, 0.6671, 0.4533, 0.64879, 0.51527, 0.53553, 0.56893, 0.32335, 0.66946, 0.28674, 0.72086, 0.32538, 0.804, 0.36258, 0.80144, 0.42056, 0.79744, 0.61015, 0.78435, 0.84813, 0.84028, 1, 0.93854, 0.62439, 0.91738, 0.72812, 1, 0.58574, 1, 0.36707, 0.96667, 0.26306, 0.95082, 0.16266, 0.93552, 0.03859, 0.72237, 0, 0.66946, 0.0374, 0.62999, 0.1647, 0.49562, 0.23731, 0.4568, 0.27019, 0.43923, 0.28063, 0.43364, 0.223, 0.4057, 0.12565, 0.35851, 0, 0.29759, 0, 0.1524, 0, 0, 0.32132, 0, 0.32222, 0.22778, 0.4493, 0.38031, 0.47664, 0.44361, 0.4615, 0.47375, 0.35106, 0.53247, 0.20091, 0.65256, 0.18527, 0.72148, 0.25222, 0.86314, 0.30941, 0.88124, 0.55694, 0.89613, 0.55857, 0.89207, 0.47493, 0.85339, 0.6059, 0.91526, 0.39705, 0.89129, 0.13229, 0.09352, 0.36997, 0.45345, 0.37163, 0.43827, 0.32515, 0.39424, 0.23759, 0.34425, 0.34065, 0.47414 ], + "triangles": [ 46, 30, 31, 41, 42, 44, 43, 9, 10, 42, 43, 10, 41, 43, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 13, 44, 42, 14, 15, 13, 45, 8, 9, 45, 40, 8, 16, 40, 45, 17, 40, 16, 16, 45, 15, 15, 45, 44, 45, 41, 44, 15, 44, 13, 45, 9, 43, 45, 43, 41, 19, 21, 38, 20, 21, 19, 39, 38, 6, 39, 6, 7, 40, 39, 7, 40, 7, 8, 18, 19, 38, 18, 38, 39, 17, 39, 40, 18, 39, 17, 47, 25, 48, 24, 25, 47, 35, 48, 34, 47, 48, 35, 51, 24, 47, 23, 24, 51, 3, 34, 2, 35, 34, 3, 36, 51, 47, 36, 47, 35, 4, 35, 3, 36, 35, 4, 37, 22, 23, 21, 22, 37, 36, 37, 23, 36, 23, 51, 5, 37, 36, 5, 36, 4, 6, 37, 5, 38, 21, 37, 38, 37, 6, 29, 30, 46, 32, 31, 0, 46, 31, 32, 28, 29, 46, 46, 27, 28, 32, 50, 46, 50, 27, 46, 33, 32, 0, 33, 0, 1, 49, 50, 32, 33, 49, 32, 26, 27, 50, 26, 50, 49, 25, 26, 49, 48, 49, 33, 25, 49, 48, 34, 33, 1, 48, 33, 34, 34, 1, 2 ], + "vertices": [ 2, 20, 128.03, 88.47, 0.8504, 1, 158.83, -71.91, 0.14959, 2, 20, 219.55, 53.15, 0.77988, 21, -48.04, -38.58, 0.22011, 2, 20, 266.3, 35.09999, 0.53544, 21, -36.73, 10.22, 0.46455, 2, 20, 286.89, 9.79, 0.35166, 21, -14.56, 34.14, 0.64832, 2, 20, 281.54, -41.24, 0.09228, 21, 36.71, 36, 0.90771, 3, 20, 271.53, -136.86, 0.05786, 21, 132.77, 39.48, 0.71425, 22, 34.99, 78.76, 0.22787, 3, 21, 158.21, 55.17, 0.5308, 22, 52.65, 54.63, 0.38143, 23, 7.01, 85.54, 0.08776, 5, 21, 167.14, 99.49, 0.21498, 22, 97.55, 49.25, 0.35357, 23, 28.72, 45.87, 0.14219, 24, -21.26, 49.99, 0.22491, 25, -72.29, 25.96, 0.06431, 5, 21, 154.22, 105.55, 0.07537, 22, 102.57, 62.6, 0.23051, 23, 42.51, 49.55, 0.28379, 24, -7.06, 51.39, 0.27004, 25, -58.17, 28.03, 0.14026, 4, 22, 109.72, 83.39, 0.11607, 23, 64.08999, 55.23, 0.08123, 24, 15.12, 53.51, 0.36961, 25, -36.09, 31.19, 0.43307, 1, 25, 35.8, 41.81, 1, 1, 25, 128.11, 17.93, 1, 1, 25, 188.72, -29.42, 1, 2, 24, 93.29, -7.6, 0.47999, 25, 44.86, -26.17, 0.52, 2, 24, 133.17, -49.83, 0.776, 25, 86.69, -66.47, 0.22399, 2, 24, 78.78, -50.15, 0.76799, 25, 32.38, -69.36, 0.232, 1, 24, -4.91, -33.55, 1, 3, 22, 155.04, -5.13, 0.35917, 23, 17.87999, -32.5, 0.30632, 24, -44.62, -25.61, 0.33449, 4, 21, 254.98, 126.27, 0.10154, 22, 131.21, -36.2, 0.54211, 23, -21.24, -31.17, 0.20873, 24, -83.01999, -17.96999, 0.1476, 3, 21, 240.33, 7.81, 0.25586, 22, 11.94, -30.98, 0.61614, 23, -86.31, 68.9, 0.12797, 2, 21, 239.26, -23.1, 0.45486, 22, -18.95999, -32.37, 0.54513, 3, 20, 187.65, -209.73, 0.09777, 21, 216.66, -33.34999, 0.58892, 22, -30.97, -10.65, 0.3133, 2, 20, 163.85, -128.67, 0.19603, 21, 139.75, -68.26, 0.80396, 2, 20, 165.74, -94.49, 0.31962, 21, 105.59, -71.26, 0.68037, 2, 20, 166.39, -79.07, 0.46225, 21, 90.23, -72.76, 0.53774, 2, 20, 166.49, -74.17, 0.53785, 21, 85.42, -73.28, 0.46213, 2, 20, 141.54, -82.46, 0.73138, 21, 97.13, -96.82, 0.26861, 2, 20, 99.76, -97.08, 0.85324, 21, 117.34, -136.23, 0.14675, 2, 20, 45.01, -114.56, 0.83615, 1, -51.09, -135.29, 0.16384, 2, 20, -16.2, -74.76, 0.62989, 1, -42.95, -58.38, 0.3701, 2, 20, -74.73, -19.33, 0.31468, 1, -52.66, 17.54999, 0.68531, 2, 20, 1.67, 76.75, 0.25576, 1, 70.07, 18.78, 0.74423, 1, 20, 93.54, 4.13, 1, 2, 20, 185.14, -6.66, 0.75461, 21, 15.98, -64.26999, 0.24538, 2, 20, 217.11, -18.75, 0.50844, 21, 23.47, -30.93, 0.49154, 2, 20, 225.63, -32.91999, 0.32527, 21, 36.3, -20.5, 0.67472, 2, 20, 223, -84.73, 0.20192, 21, 87.96, -15.86, 0.79807, 3, 20, 235.61, -168.06, 0.0809, 21, 168.69, 8.29, 0.57147, 22, 6.74, 40.47, 0.34761, 3, 21, 191.79, 35.8, 0.32545, 22, 36, 19.62, 0.57243, 23, -31.14, 78.74, 0.10211, 4, 21, 206.64, 111.53, 0.10808, 22, 112.69, 10.82, 0.52067, 23, 6.25, 11.23, 0.23517, 24, -49.03, 19.43, 0.13606, 3, 22, 130.6, 26.41, 0.35067, 23, 29.35, 5.71, 0.28241, 24, -27.12, 10.25, 0.3669, 2, 24, 67.46, 3.16, 0.384, 25, 18.54999, -16.62999, 0.61599, 1, 25, 19.07, -14.51, 1, 2, 24, 36, 24.95, 0.384, 25, -13.89, 3.64, 0.61599, 2, 24, 86.23, -6.55, 0.48799, 25, 37.75, -25.46, 0.512, 4, 21, 164.9, 153.55, 0.02263, 22, 151.18, 56, 0.23908, 23, 65.44, 5.55, 0.19254, 24, 8.45, 4.27, 0.54574, 2, 20, -9.28, -17.5, 0.59605, 1, 7.72, -30.85, 0.40393, 2, 20, 195.9, -53.81, 0.42368, 21, 61.11, -47.06, 0.5763, 2, 20, 190.1, -48.45, 0.53231, 21, 56.61, -53.56, 0.46768, 2, 20, 161.26, -48.26, 0.79873, 21, 60.44, -82.12999, 0.20126, 2, 20, 120.37, -58.54, 0.85455, 21, 76.31, -121.18, 0.14544, 2, 20, 197.37, -69.23, 0.3355, 21, 76.17, -43.46, 0.66449 ], + "hull": 32, + "edges": [ 40, 38, 38, 36, 28, 30, 28, 26, 26, 24, 24, 22, 22, 20, 14, 12, 12, 10, 6, 4, 60, 62, 0, 62, 40, 42, 42, 44, 34, 36, 16, 14, 52, 50, 4, 2, 2, 0, 10, 8, 8, 6, 72, 74, 74, 76, 76, 78, 78, 80, 80, 90, 90, 88, 16, 18, 18, 20, 30, 32, 32, 34, 56, 58, 58, 60, 94, 96, 96, 98, 52, 54, 54, 56, 100, 98, 48, 50, 44, 46, 46, 48, 102, 94, 72, 70, 70, 68, 66, 68, 66, 64, 64, 92, 86, 84, 50, 96, 94, 48, 46, 102, 52, 98, 54, 100, 70, 6, 68, 4, 66, 2, 72, 8, 86, 20, 86, 82, 82, 88, 84, 26, 88, 26 ], + "width": 382, + "height": 514 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "mesh", + "uvs": [ 0.45041, 0.09352, 0.56933, 0.23361, 0.65294, 0.47296, 0.66353, 0.50822, 0.63174, 0.54254, 0.32383, 0.69723, 0.30068, 0.73875, 0.27934, 0.77704, 0.30417, 0.83513, 0.31058, 0.85014, 0.341, 0.85046, 0.45165, 0.85163, 0.59555, 0.81881, 0.91176, 0.92548, 1, 1, 0.56336, 0.96426, 0.48349, 0.9826, 0.29878, 0.98027, 0.22808, 0.98389, 0.15997, 0.98737, 0.15423, 0.95546, 0.13894, 0.87047, 0.07371, 0.78726, 0, 0.75299, 0, 0.7049, 0, 0.671, 0.11875, 0.64652, 0.16535, 0.52659, 0.28495, 0.47397, 0.2901, 0.45773, 0.29427, 0.4446, 0.20635, 0.40396, 0.06128, 0.33691, 0, 0.25247, 0, 0, 0.30793, 0, 0.27599, 0.20261, 0.40397, 0.31121, 0.48439, 0.45963, 0.48317, 0.48383, 0.47029, 0.51062, 0.22698, 0.67328, 0.17141, 0.7242, 0.17122, 0.78241, 0.22995, 0.89469, 0.24677, 0.90829, 0.28672, 0.9146, 0.46582, 0.91414 ], + "triangles": [ 15, 13, 14, 16, 47, 15, 15, 12, 13, 15, 47, 12, 18, 46, 17, 18, 45, 46, 17, 47, 16, 17, 46, 47, 47, 10, 11, 47, 46, 10, 47, 11, 12, 45, 18, 19, 44, 45, 20, 20, 45, 19, 20, 21, 44, 46, 9, 10, 46, 45, 9, 45, 44, 9, 21, 43, 44, 44, 8, 9, 44, 7, 8, 44, 43, 7, 21, 22, 43, 43, 22, 42, 43, 42, 7, 22, 23, 24, 24, 42, 22, 7, 42, 6, 42, 41, 6, 6, 41, 5, 24, 26, 42, 42, 26, 41, 24, 25, 26, 5, 40, 4, 5, 41, 40, 41, 28, 40, 26, 27, 41, 41, 27, 28, 40, 39, 4, 28, 29, 40, 40, 29, 39, 4, 39, 3, 39, 2, 3, 29, 30, 39, 39, 38, 2, 39, 30, 38, 38, 1, 2, 30, 37, 38, 38, 37, 1, 30, 31, 37, 31, 36, 37, 31, 32, 36, 32, 33, 36, 37, 0, 1, 37, 36, 0, 33, 34, 36, 36, 35, 0, 36, 34, 35 ], + "vertices": [ 1, 40, 53.94, 69.15, 1, 1, 40, 126.23, 67.31, 1, 2, 40, 226.42, 31.13, 0.9375, 41, -30.87, -1.11, 0.0625, 2, 40, 240.84, 25.33, 0.7, 41, -25.64, 13.52, 0.3, 2, 40, 246.67, 8.05, 0.3, 41, -8.60999, 20.02, 0.7, 3, 40, 240.81, -115.25, 0.0625, 41, 114.8, 19.01, 0.875, 42, 9.47999, 59.16, 0.0625, 2, 41, 131.07, 29.69, 0.7, 42, 22.11, 44.35, 0.3, 2, 41, 146.06, 39.54, 0.3, 42, 33.75999, 30.71, 0.7, 3, 41, 152.6, 65.01, 0.12566, 42, 59.85, 27.41, 0.75203, 43, 15.85, 48.05, 0.12229, 3, 41, 154.28, 71.58999, 0.05444, 42, 66.58999, 26.56, 0.78401, 43, 16.71999, 41.31, 0.16154, 3, 42, 71.19, 35.75999, 0.64716, 43, 26.78, 39.16999, 0.13169, 44, -67.32, 18.95999, 0.22114, 3, 42, 87.93, 69.21, 0.0625, 43, 63.37, 31.39, 0.675, 44, -30.17, 23.3, 0.26249, 2, 43, 113.82, 35.72, 0.1038, 44, 16.23, 43.56, 0.89619, 1, 44, 128.14, 12.02, 1, 1, 44, 161.85, -15.81, 1, 2, 43, 90.98, -23.36, 0.0138, 44, 13.52, -19.71999, 0.98619, 2, 43, 62.97, -25.81, 0.7, 44, -12.23, -31.02, 0.3, 3, 42, 115.12, -1.33, 0.08333, 43, 1.93, -12.66, 0.83333, 44, -74.26, -38.09999, 0.08333, 2, 42, 106.11, -23.53, 0.3, 43, -21.8, -9.52, 0.7, 2, 42, 97.43, -44.9, 0.7, 43, -44.67, -6.51, 0.3, 2, 42, 84.26, -40.68999, 0.9375, 43, -43.9, 7.29, 0.0625, 1, 42, 49.18, -29.46, 1, 2, 41, 206.75, 5.37, 0.13333, 42, 7.44, -33.77, 0.86666, 2, 41, 219.64, -20.52, 0.36111, 42, -16.64, -49.8, 0.63888, 2, 41, 208.4, -37.82, 0.72083, 42, -35.22, -40.82, 0.27916, 2, 41, 200.49, -50.02, 0.91666, 42, -48.31, -34.48, 0.08333, 1, 41, 161.1, -36.97, 1, 2, 40, 150.1, -116.76, 0.08333, 41, 119.88, -71.55, 0.91666, 2, 40, 154.99, -70.71, 0.42846, 41, 73.68, -68.47, 0.57153, 2, 40, 150.3, -65.26999, 0.35604, 41, 68.42, -73.36, 0.64395, 2, 40, 146.51, -60.87, 0.59147, 41, 64.17, -77.32, 0.40852, 2, 40, 115.12, -75.08, 0.8446, 41, 79.61, -108.13, 0.15538, 1, 40, 63.33, -98.53, 1, 1, 40, 21.78, -94.55, 1, 1, 40, -66.69, -32.04, 1, 1, 40, -6.62, 52.97, 1, 1, 40, 58.14, -6, 1, 1, 40, 121.17, 2.44, 1, 1, 40, 188.87, -12.1, 1, 2, 40, 197.11, -18.42, 0.7, 41, 19.79, -28.44, 0.3, 2, 40, 203.98, -28.61, 0.3, 41, 29.69, -21.17, 0.7, 1, 41, 136.67, -7.42, 1, 2, 41, 164.32, 0.66, 0.7, 42, -2.53, 7.73, 0.3, 2, 41, 177.97, 21.57, 0.25, 42, 19.92, -3.19, 0.75, 1, 42, 71.93, -6.29, 1, 2, 42, 79.66, -3.72, 0.7, 43, -9.28, 21.04, 0.3, 2, 42, 87.98, 7.25, 0.3125, 43, 3.42, 15.76, 0.6875, 3, 42, 114.16, 61.85, 0.04, 43, 62.84, 4.15, 0.7, 44, -21.95, -2.66, 0.26 ], + "hull": 36, + "edges": [ 66, 68, 66, 64, 56, 54, 54, 52, 52, 50, 46, 44, 44, 42, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 68, 70, 0, 70, 46, 48, 48, 50, 14, 12, 12, 10, 60, 58, 58, 56, 42, 40, 40, 38, 18, 16, 16, 14, 22, 20, 20, 18, 38, 36, 36, 34, 60, 62, 62, 64, 68, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 16, 88, 86, 88, 18, 90, 90, 38, 88, 90, 20, 92, 92, 36, 90, 92, 92, 94, 94, 22, 94, 32, 30, 24, 88, 40, 86, 14, 84, 12, 82, 10, 82, 52, 48, 84, 44, 86, 78, 6, 4, 76, 80, 8, 80, 56, 58, 78, 76, 60 ], + "width": 338, + "height": 429 + } + }, + "raptor_horn": { + "raptor_horn": { "x": 156.2, "y": 74.1, "rotation": -137.26, "width": 363, "height": 159 } + }, + "raptor_horn_back": { + "raptor_horn_back": { "x": 121.42, "y": 83.01, "rotation": -132.21, "width": 351, "height": 153 } + }, + "raptor_jaw": { + "raptor_jaw": { + "type": "mesh", + "uvs": [ 0.40984, 0.22169, 0.42214, 0.3988, 0.67894, 0.53819, 0.7589, 0.62838, 0.99999, 0.4726, 1, 0.53491, 0.87731, 0.77925, 0.63281, 0.94487, 0.39908, 0.96947, 0.19456, 0.89404, 0.21609, 0.6497, 0, 0.46111, 0, 0, 0.26069, 0, 0.19456, 0.29385 ], + "triangles": [ 14, 13, 0, 14, 0, 1, 5, 3, 4, 10, 14, 1, 11, 14, 10, 6, 3, 5, 2, 10, 1, 7, 2, 3, 7, 3, 6, 2, 8, 10, 8, 9, 10, 2, 7, 8, 14, 12, 13, 11, 12, 14 ], + "vertices": [ 1, 35, 28.6, 68.85, 1, 1, 35, 69.65, 38.95, 1, 1, 35, 150.72, 72.87999, 1, 1, 35, 186.16, 74.79, 1, 1, 35, 199.76, 159.69, 1, 1, 35, 213.35, 148.16, 1, 1, 35, 242.43, 74.42, 1, 1, 35, 230.31, -13.08, 1, 1, 35, 189.56, -71.99, 1, 1, 35, 132.76, -105.6, 1, 1, 35, 83.71, -55.39, 1, 2, 16, -18.31, 12.1, 0.67732, 35, -0.04, -70.76, 0.32267, 1, 16, 113.44, 16.95, 1, 1, 16, 116.36, -62.48, 1, 1, 35, 1.86, 5.43, 1 ], + "hull": 14, + "edges": [ 22, 24, 22, 20, 20, 18, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 24, 26, 0, 26, 24, 28, 22, 28, 28, 0 ], + "width": 305, + "height": 286 + } + }, + "raptor_saddle_noshadow": { + "raptor_saddle_noshadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_saddle_strap_front": { + "raptor_saddle_strap_front": { "x": 128.83, "y": -4.71, "rotation": 61.29, "width": 114, "height": 189 } + }, + "raptor_saddle_strap_rear": { + "raptor_saddle_strap_rear": { + "type": "mesh", + "uvs": [ 0.85499, 0.06802, 1, 0.13237, 1, 0.20266, 0.95981, 0.26524, 0.88583, 0.38045, 0.80684, 0.46413, 0.74038, 0.53453, 0.81676, 0.5895, 0.51961, 1, 0.4516, 1, 0.01739, 0.8407, 0, 0.80889, 0.24645, 0.36639, 0.3792, 0.39151, 0.42457, 0.32099, 0.49229, 0.21571, 0.57673, 0.10986, 0.66437, 0, 0.70168, 0, 0.56028, 0.46321, 0.68822, 0.29772, 0.76845, 0.18722, 0.61529, 0.39206 ], + "triangles": [ 7, 8, 6, 9, 10, 13, 13, 11, 12, 6, 8, 19, 8, 9, 19, 9, 13, 19, 13, 10, 11, 19, 22, 6, 13, 14, 19, 19, 14, 22, 6, 22, 5, 22, 20, 5, 5, 20, 4, 14, 15, 22, 22, 15, 20, 20, 21, 4, 15, 16, 20, 4, 21, 3, 20, 16, 21, 2, 3, 0, 3, 21, 0, 0, 1, 2, 21, 16, 18, 16, 17, 18, 21, 18, 0 ], + "vertices": [ 1, 50, 3.9, -3.27, 1, 1, 50, 4.25, 15.05, 1, 1, 50, 13.24, 20.28, 1, 2, 50, 23.42, 21.2, 0.7, 51, -15.2, 21.22, 0.3, 3, 50, 41.11, 22.87, 0.3, 51, 2.48, 22.89, 0.6375, 52, -33.83, 24.96, 0.0625, 3, 50, 52.07, 21.72, 0.0625, 51, 13.43, 21.74, 0.6375, 52, -22.97, 23.11, 0.3, 2, 51, 18.39, 20.76, 0.25, 52, -18.09, 21.82, 0.75, 1, 52, -18.76, 33.09, 1, 1, 52, 49.92, 31.57, 1, 1, 52, 53.21, 25, 1, 1, 52, 53.11, -27.48, 1, 1, 52, 49.74, -31.27, 1, 1, 52, -20.73, -36.75999, 1, 1, 52, -23.82, -22.28, 1, 3, 50, 53.48, -24.61, 0.0625, 51, 14.84, -24.59, 0.575, 52, -24.51, -23.21, 0.3625, 3, 50, 41.43999, -26.12, 0.3, 51, 2.81, -26.09, 0.6375, 52, -36.62, -23.95, 0.0625, 2, 50, 24.38, -26.12, 0.7, 51, -14.24, -26.1, 0.3, 1, 50, 5.57, -26.12, 1, 1, 50, 3.54, -22.64, 1, 1, 52, -23.08, -0.04, 1, 2, 50, 41.66, -1.72, 0.3125, 51, 3.03, -1.7, 0.6875, 2, 50, 23.85, -2.46, 0.7, 51, -14.77, -2.44, 0.3, 2, 51, 13.95, -1.5, 0.64582, 52, -23.94, -0.11, 0.35416 ], + "hull": 19, + "edges": [ 26, 24, 24, 22, 22, 20, 20, 18, 16, 18, 16, 14, 14, 12, 4, 2, 34, 36, 12, 38, 38, 26, 8, 40, 40, 30, 2, 0, 0, 36, 30, 32, 32, 34, 32, 42, 4, 6, 6, 8, 42, 6, 26, 28, 28, 30, 28, 44, 8, 10, 10, 12, 44, 10 ], + "width": 108, + "height": 148 + } + }, + "raptor_saddle_w_shadow": { + "raptor_saddle_w_shadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_tongue": { + "raptor_tongue": { + "type": "mesh", + "uvs": [ 0.35242, 0.2156, 0.4794, 0.44245, 0.62071, 0.61176, 0.80562, 0.75373, 1, 0.90297, 1, 1, 0.8971, 1, 0.72054, 0.92254, 0.50668, 0.82872, 0.30401, 0.70725, 0.10537, 0.57888, 0, 0.50622, 0, 0, 0.26224, 0 ], + "triangles": [ 8, 7, 6, 6, 4, 5, 4, 6, 3, 6, 7, 3, 7, 8, 3, 8, 2, 3, 9, 10, 1, 8, 9, 2, 9, 1, 2, 1, 10, 0, 10, 11, 0, 0, 12, 13, 0, 11, 12 ], + "vertices": [ 2, 63, 3.63, 27.04, 0.6875, 64, -47.26, 33.87, 0.3125, 3, 63, 39.09, 19.45, 0.3125, 64, -13.41, 20.86, 0.625, 65, -51.54, 33.37, 0.0625, 3, 63, 71.56, 19.02, 0.0625, 64, 18.58, 15.39, 0.625, 65, -21.56, 20.92, 0.3125, 2, 64, 55.03, 16.85, 0.3125, 65, 14.29, 14.23, 0.6875, 2, 64, 93.34, 18.39, 0.08333, 65, 51.98, 7.21, 0.91666, 1, 65, 56.09, -4.5, 1, 2, 64, 85.06, -1.49, 0.08333, 65, 39.48, -10.33, 0.91666, 2, 64, 54.22, -9.18, 0.3125, 65, 7.71, -10.96, 0.6875, 3, 63, 75.14, -14.72, 0.0625, 64, 16.87, -18.5, 0.625, 65, -30.77, -11.73, 0.3125, 3, 63, 38.8, -25.8, 0.3125, 64, -20.74, -23.8, 0.625, 65, -68.62, -8.53, 0.0625, 2, 63, 2.4, -35.77, 0.6875, 64, -58.25, -27.99, 0.3125, 2, 63, -17.28, -40.62, 0.91666, 64, -78.44999, -29.71, 0.08333, 1, 63, -59.91, 8.18, 1, 2, 63, -26.13, 37.68999, 0.91666, 64, -75.01999, 49.02, 0.08333 ], + "hull": 14, + "edges": [ 22, 24, 10, 12, 10, 8, 24, 26, 16, 4, 18, 16, 2, 4, 18, 2, 22, 20, 0, 26, 20, 0, 0, 2, 12, 14, 14, 16, 4, 6, 6, 8, 14, 6, 20, 18 ], + "width": 171, + "height": 128 + } + }, + "spineboy_torso": { + "torso": { "x": 55.88, "y": 4.86, "rotation": -104.14, "width": 108, "height": 182 } + }, + "stirrup_back": { + "stirrup_back": { "x": 53.2, "y": 31.34, "rotation": -21.12, "width": 87, "height": 69 } + }, + "stirrup_front": { + "stirrup_front": { "x": 36.13, "y": 20.39, "rotation": -21.12, "width": 89, "height": 100 } + }, + "stirrup_strap": { + "stirrup_strap": { + "type": "mesh", + "uvs": [ 0.36822, 0.27893, 0.45737, 0.38897, 0.54451, 0.49651, 0.67872, 0.59135, 0.81977, 0.69102, 1, 0.77344, 1, 1, 0.77956, 1, 0.63729, 0.81629, 0.53364, 0.72348, 0.40534, 0.6086, 0.30886, 0.52535, 0.21049, 0.44047, 0, 0.26245, 0, 0, 0.30637, 0, 0.20241, 0.23 ], + "triangles": [ 2, 10, 1, 9, 10, 2, 9, 2, 3, 8, 9, 3, 8, 3, 4, 7, 8, 4, 7, 4, 5, 7, 5, 6, 16, 14, 15, 13, 14, 16, 16, 15, 0, 12, 16, 0, 12, 0, 1, 13, 16, 12, 11, 12, 1, 10, 11, 1 ], + "vertices": [ 2, 56, 24.71, 8.03, 0.80344, 57, -17.42, 11.02, 0.19655, 2, 56, 37.95, 8.04, 0.59978, 57, -4.36, 8.87, 0.40021, 2, 56, 50.88, 8.04, 0.36895, 57, 8.39, 6.77, 0.63103, 2, 56, 65.92, 12.27, 0.17748, 57, 23.91, 8.47999, 0.82251, 2, 56, 81.72, 16.7, 0.05943, 57, 40.23, 10.28, 0.94056, 2, 56, 98.82, 25.04, 0.01209, 57, 58.46, 15.71, 0.9879, 2, 56, 114.44, 11.57, 0.00191, 57, 71.67, -0.11, 0.99808, 2, 56, 100.47, -4.61, 0.01816, 57, 55.25, -13.81, 0.98182, 2, 56, 78.79, -4.14, 0.07487, 57, 33.93999, -9.81, 0.92512, 2, 56, 65.83, -6.24, 0.2028, 57, 20.81, -9.76, 0.79719, 2, 56, 49.78, -8.83, 0.39971, 57, 4.55, -9.7, 0.60028, 2, 56, 37.93, -10.97, 0.62658, 57, -7.48, -9.88, 0.37341, 2, 56, 25.85, -13.15, 0.82034, 57, -19.75, -10.06, 0.17965, 2, 56, 0.25, -18.03, 0.95288, 57, -45.81, -10.7, 0.04711, 2, 56, -17.83, -2.43, 0.97709, 57, -61.11, 7.63, 0.0229, 2, 56, 1.57, 20.07, 0.94774, 57, -38.29, 26.67, 0.05225, 2, 56, 10.84, -1.23, 0.97709, 57, -32.62, 4.14, 0.0229 ], + "hull": 16, + "edges": [ 28, 30, 30, 0, 12, 10, 8, 10, 12, 14, 14, 16, 26, 28, 24, 26, 26, 32, 32, 30, 20, 22, 22, 24, 0, 2, 2, 4, 4, 6, 6, 8, 16, 18, 18, 20 ], + "width": 97, + "height": 91 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "Jump": { + "bones": { + "root": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.3, + "x": 0, + "y": 0, + "curve": [ 0.201, 0.17, 0.815, 0.83 ] + }, + { "time": 0.6666, "x": 1482.78, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -12.8 }, + { "time": 0.5333, "angle": 5.73 }, + { "time": 0.6666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -60.01, "y": 111.1 }, + { "time": 0.4333, "x": 213.18, "y": 291.22 }, + { "time": 0.5333, "x": 243.73, "y": 332.61 }, + { "time": 0.6666, "x": 95.94, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.48 }, + { "time": 0.1, "angle": -23.02 }, + { "time": 0.3, "angle": 19.24 }, + { "time": 0.5333, "angle": 20.85 }, + { "time": 0.6666, "angle": -10.76 }, + { "time": 0.7666, "angle": -18.58 }, + { "time": 0.9333, "angle": -3.56 }, + { "time": 1.0666, "angle": -4.48 } + ], + "translate": [ + { "time": 0, "x": -100.65, "y": 49.77 }, + { + "time": 0.1, + "x": 9.37, + "y": -109.06, + "curve": [ 0.245, 0, 0.609, 0.41 ] + }, + { + "time": 0.1666, + "x": 150.37, + "y": -76.51, + "curve": [ 0.401, 0.34, 0.858, 0.87 ] + }, + { "time": 0.3, "x": 361, "y": 36.69 }, + { + "time": 0.5333, + "x": 5.36, + "y": 290.91, + "curve": [ 0.808, 0, 0.892, 0.81 ] + }, + { "time": 0.6666, "x": -56.27, "y": 88.07 }, + { + "time": 0.7666, + "x": 179.93, + "y": -59.94, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.9333, + "x": 238.11, + "y": 50.63, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "x": 213.19, "y": 49.77 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -57.97 }, + { "time": 0.7, "angle": -9.19 }, + { "time": 0.7333, "angle": -7.78 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -131.66, "y": 47.58 }, + { "time": 0.4333, "x": -16.1, "y": 205.84 }, + { "time": 0.5333, "x": 61.29, "y": 320.2 }, + { "time": 0.7333, "x": 235.62, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7333, "x": 1, "y": 1 } + ] + }, + "front_leg1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": -0.39, "y": 24.29 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_leg1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": 6.75, "y": 25.64 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -11.02 }, + { "time": 0.3, "angle": 0.53 }, + { "time": 0.4333, "angle": 8.64 }, + { "time": 0.7, "angle": -9.73 }, + { + "time": 0.7666, + "angle": -4.46, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -39.83 }, + { "time": 0.3, "angle": -31.82 }, + { "time": 0.4333, "angle": -7.28 }, + { "time": 0.5333, "angle": 1.28 }, + { "time": 0.6, "angle": -7.22 }, + { "time": 0.7, "angle": -30.66 }, + { + "time": 0.7666, + "angle": -40.54, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 0.51 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 1.04 }, + { "time": 0.7, "angle": -3.25 }, + { "time": 0.7666, "angle": 4.81 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -308.79 }, + { "time": 0.3, "angle": -398.7 }, + { "time": 0.5333, "angle": -297.8 }, + { "time": 0.7, "angle": 62.19 }, + { "time": 0.7666, "angle": -325.36 }, + { "time": 0.8333, "angle": -374.42 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg3": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.25 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 5.44 }, + { "time": 0.7, "angle": 24.01 }, + { "time": 0.7666, "angle": 4.82 }, + { "time": 0.8666, "angle": -1.78 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.1, "x": 0, "y": 0 }, + { "time": 0.3, "x": 62.9, "y": -44.25 }, + { "time": 0.5333, "x": -4.35, "y": 17.31 }, + { "time": 0.7, "x": 0, "y": 0 }, + { "time": 0.7666, "x": 23.29, "y": -42.27 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 51.2 }, + { "time": 0.3333, "angle": -38.7 }, + { "time": 0.6, "angle": 62.19, "curve": "stepped" }, + { "time": 0.7333, "angle": 62.19 }, + { "time": 0.8, "angle": 34.62 }, + { "time": 0.8666, "angle": -14.43 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg3": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_front_arm_goal": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1, "x": 35.96, "y": -11.83 }, + { "time": 0.3, "x": 31.1, "y": -50.39 }, + { "time": 0.5333, "x": 12.1, "y": -8.03 }, + { "time": 0.7, "x": 41.7, "y": -19.46 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_rear_arm_goal": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.97 }, + { "time": 0.3, "angle": -18.38 }, + { "time": 0.4333, "angle": 0.9 }, + { "time": 0.5333, "angle": 11.43 }, + { "time": 0.6, "angle": 17.22 }, + { "time": 0.7, "angle": 4.74 }, + { + "time": 0.7666, + "angle": -20.69, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -20.4, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_thigh": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 15.27 }, + { "time": 0.3, "angle": -53.4 }, + { "time": 0.5666, "angle": -63.35 }, + { "time": 0.7666, "angle": -29.92 }, + { "time": 0.9, "angle": 7.24 }, + { "time": 1, "angle": -3.69 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 9.93 }, + { "time": 0.3, "angle": -3.76 }, + { "time": 0.5333, "angle": -26.63 }, + { "time": 0.7, "angle": -10.23 }, + { "time": 0.7666, "angle": 21.8 }, + { "time": 0.8666, "angle": 15.36 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -24.93 }, + { "time": 0.2333, "angle": -20.34 }, + { "time": 0.5333, "angle": -11.2 }, + { "time": 0.7, "angle": 10.49 }, + { + "time": 0.8333, + "angle": -30.21, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 1.34 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 34.12 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 11.11 }, + { "time": 0.5333, "angle": 25.19 }, + { "time": 0.6, "angle": 32.5 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -11.72, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_arm": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_knee": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -63.6 }, + { "time": 0.4333, "angle": -80.16 }, + { "time": 0.5333, "angle": -17.48 }, + { "time": 0.6666, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_front": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_rear": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 15.56 }, + { "time": 0.2333, "angle": -0.92 }, + { "time": 0.5, "angle": 20.4 }, + { "time": 0.7, "angle": 18.32 }, + { "time": 0.7666, "angle": 5.17 }, + { "time": 0.8333, "angle": 20.34 }, + { "time": 1.0666, "angle": 15.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "lower_leg": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 11.08 }, + { "time": 0.8333, "angle": 8.16 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -87.93 }, + { "time": 0.4333, "angle": -126.75 }, + { "time": 0.5333, "angle": -63.79 }, + { "time": 0.7, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.7, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear3": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail5": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 76.87 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 10.5 }, + { "time": 0.5333, "angle": 24.81 }, + { "time": 0.6, "angle": 32.21 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -41.66, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue1": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_bracer": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm_target": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -84.17 }, + { "time": 0.4333, "angle": -127.53 }, + { "time": 0.5333, "angle": -52.16 }, + { "time": 0.6666, "angle": 10.77 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 15.31 }, + { "time": 0.1, "angle": 29.85 }, + { "time": 0.2, "angle": 22.43 }, + { "time": 0.3, "angle": 12.64 }, + { "time": 0.4666, "angle": 24.85 }, + { "time": 0.5333, "angle": 9.28 }, + { "time": 0.7, "angle": 4.77 }, + { "time": 0.7666, "angle": 37.9 }, + { + "time": 0.8333, + "angle": 18.87, + "curve": [ 0.056, 0.81, 0.75, 1 ] + }, + { "time": 1, "angle": 22.96 }, + { "time": 1.0666, "angle": 15.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm_target": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_hand": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand2": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue3": { + "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 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + } + } + }, + "empty": {}, + "gungrab": { + "slots": { + "front_hand": { + "attachment": [ + { "time": 0, "name": "front_open_hand" }, + { "time": 0.1666, "name": "gun" } + ] + }, + "gun": { + "attachment": [ + { "time": 0, "name": "gun_nohand" }, + { "time": 0.1666, "name": null } + ] + } + }, + "bones": { + "front_hand2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 12.33 }, + { "time": 0.1666, "angle": -89.54 }, + { "time": 0.2333, "angle": -79.78 }, + { "time": 0.4666, "angle": -10.18 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.938, "y": 0.938 }, + { "time": 0.4666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.0666, "angle": -31.99 }, + { + "time": 0.1666, + "angle": 223.11, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2333, + "angle": 155.19, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "angle": 246.13, + "curve": [ 0.184, 0.33, 0.75, 1 ] + }, + { "time": 0.4666, "angle": -56.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1666, "x": 6.49, "y": -2.66 }, + { "time": 0.2333, "x": 6.84, "y": 4.79 }, + { "time": 0.4666, "x": 0, "y": 0 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": 86.01 }, + { "time": 0.2333, "angle": 114.94 }, + { + "time": 0.3666, + "angle": 81.86, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "angle": 34.73 } + ] + } + }, + "ik": { + "front_arm_goal": [ + { "time": 0, "mix": 0 } + ] + } + }, + "walk": { + "bones": { + "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 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -51.26 }, + { "time": 0.4, "angle": -65.17 }, + { "time": 0.5333, "angle": -76.28 }, + { "time": 0.8, "angle": -76.52 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 343.28, "y": 36.5 }, + { "time": 0.2666, "x": 86.5, "y": 36.99 }, + { "time": 0.5333, "x": -173.36, "y": 37.42 }, + { "time": 0.6, "x": -68.15, "y": 141.15 }, + { "time": 0.7333, "x": 91.78, "y": 238.01 }, + { "time": 0.8, "x": 155.89, "y": 190.91 }, + { "time": 0.9666, "x": 303.28, "y": 94.4 }, + { "time": 1.0666, "x": 343.28, "y": 36.5 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.78 }, + { "time": 0.0666, "angle": -3.99 }, + { "time": 0.2666, "angle": -12.49 }, + { "time": 0.5333, "angle": -4.78 }, + { "time": 0.6, "angle": -3.99 }, + { "time": 0.8, "angle": -12.49 }, + { "time": 1.0666, "angle": -4.78 } + ], + "translate": [ + { + "time": 0, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.0666, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.2666, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.841, 0.8 ] + }, + { + "time": 0.5333, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.6, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.8, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.858, 0.82 ] + }, + { "time": 1.0666, "x": 161.93, "y": 4.89 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": -62.73 }, + { "time": 0.2666, "angle": -107.17 }, + { "time": 0.4666, "angle": -40.51 }, + { "time": 0.8, "angle": -97.15 }, + { "time": 1.0666, "angle": -62.73 } + ], + "translate": [ + { "time": 0, "x": -266.69, "y": -15.46 }, + { "time": 0.1333, "x": -87.88, "y": 124.85 }, + { "time": 0.2666, "x": 88.35, "y": 134.06 }, + { "time": 0.3666, "x": 198.39, "y": 90.64 }, + { "time": 0.4666, "x": 308.19, "y": -26.42 }, + { "time": 0.6, "x": 167.06, "y": -26.42 }, + { "time": 1.0666, "x": -266.69, "y": -15.46 } + ] + }, + "front_leg1": { + "rotate": [ + { "time": 0, "angle": 27.07 }, + { "time": 1.0666, "angle": 31.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0666, "x": -0.21, "y": 15.19 }, + { "time": 0.5333, "x": -0.33, "y": 12.15 }, + { "time": 0.7333, "x": -4.74, "y": 31.93 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -18.04, "y": -2.88 }, + { "time": 0.4333, "x": -42.2, "y": -88.63 }, + { "time": 0.5333, "x": -27.31, "y": -43.9 }, + { "time": 0.7333, "x": -1.52, "y": -94.28 }, + { "time": 0.8, "x": -24.29, "y": -116.41 }, + { "time": 1, "x": -41.88, "y": -93.3 }, + { "time": 1.0666, "x": -18.04, "y": -2.88 } + ] + }, + "rear_leg1": { + "rotate": [ + { "time": 0, "angle": -64.85 }, + { "time": 1.0666, "angle": -45.71 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -2.05, "y": 15.12 }, + { "time": 0.2666, "x": 17.49, "y": -150.43 }, + { "time": 0.4666, "x": -40.21, "y": -81.76 }, + { "time": 0.5333, "x": -31.68, "y": -82.43 }, + { "time": 0.8, "x": 2.65, "y": -169.21 }, + { "time": 0.9333, "x": -16.76, "y": -98.31 }, + { "time": 1.0666, "x": -2.05, "y": 15.12 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 1.3 }, + { "time": 0.0666, "angle": 4.13 }, + { "time": 0.3333, "angle": -5.77 }, + { "time": 0.6333, "angle": 4.13 }, + { "time": 0.9, "angle": -5.77 }, + { "time": 1.0666, "angle": 1.3 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.0666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "torso1": { + "rotate": [ + { "time": 0, "angle": 7.21 }, + { "time": 0.2666, "angle": 4.19 }, + { "time": 0.5333, "angle": 7.21 }, + { "time": 0.8, "angle": 4.19 }, + { "time": 1.0666, "angle": 7.21 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg2": { + "rotate": [ + { "time": 0, "angle": -347.28 }, + { "time": 1.0666, "angle": -362.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg2": { + "rotate": [ + { "time": 0, "angle": 27.05 }, + { "time": 1.0666, "angle": 9.92 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle": { + "rotate": [ + { "time": 0, "angle": -2.51 }, + { "time": 0.2666, "angle": -4.17 }, + { "time": 0.5333, "angle": -3.85 }, + { "time": 0.8, "angle": -3.09 }, + { "time": 1.0666, "angle": -2.51 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.2666, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.3333, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.6, "x": -0.2, "y": -2.35 }, + { + "time": 0.8, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.8666, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": -19.15 }, + { "time": 0.2333, "angle": -11.3 }, + { "time": 0.5, "angle": -9.37 }, + { "time": 0.7666, "angle": -11.3 }, + { "time": 1.0333, "angle": -20.27 }, + { "time": 1.0666, "angle": -19.15 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 0.8, "y": 1 }, + { "time": 0.2333, "x": 0.9, "y": 1 }, + { "time": 0.5, "x": 0.8, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 0.8, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 8.6 }, + { + "time": 0.2666, + "angle": 9.52, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": 8.01 }, + { + "time": 0.8, + "angle": 5.48, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": 8.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -367.82 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 20.64, "y": -7.55 }, + { "time": 0.5, "x": -2.86, "y": 3.32 }, + { "time": 0.8, "x": 24.09, "y": -1.47 }, + { "time": 0.9333, "x": 21.73, "y": -3.7 }, + { "time": 1.0666, "x": 20.64, "y": -7.55 } + ] + }, + "front_leg3": { + "rotate": [ + { "time": 0, "angle": 1.14, "curve": "stepped" }, + { "time": 1.0666, "angle": 1.14 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 6.5 }, + { "time": 0.2666, "angle": 12.71 }, + { "time": 0.5333, "angle": 6.5 }, + { "time": 0.8, "angle": 12.71 }, + { "time": 1.0666, "angle": 6.5 } + ], + "translate": [ + { "time": 0, "x": 12.59, "y": -31.3 }, + { + "time": 0.2666, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 0.5333, "x": 12.59, "y": -31.3 }, + { + "time": 0.8, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 1.0666, "x": 12.59, "y": -31.3 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 13.71 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.5, "x": 11.12, "y": -13.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg3": { + "rotate": [ + { "time": 0, "angle": -23.18, "curve": "stepped" }, + { "time": 1.0666, "angle": -23.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_front1": { + "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 } + ] + }, + "saddle_strap_rear1": { + "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 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": -12.46 }, + { "time": 0.2333, "angle": 12.65 }, + { "time": 0.5, "angle": -20.79 }, + { "time": 0.7666, "angle": 12.65 }, + { "time": 1.0333, "angle": -16.04 }, + { "time": 1.0666, "angle": -12.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.997, "y": 1 }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 22.44 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot1": { + "rotate": [ + { "time": 0, "angle": -41.33, "curve": "stepped" }, + { "time": 1.0666, "angle": -41.33 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -7.36 }, + { + "time": 0.1333, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4, "angle": -6.12 }, + { "time": 0.5333, "angle": -7.36 }, + { + "time": 0.6666, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.9333, "angle": -6.12 }, + { "time": 1.0666, "angle": -7.36 } + ], + "translate": [ + { "time": 0, "x": -3.88, "y": -32.87 }, + { "time": 0.9333, "x": -3.33, "y": -22.81 }, + { "time": 1.0666, "x": -3.88, "y": -32.87 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -30.2 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot1": { + "rotate": [ + { "time": 0, "angle": 2.07, "curve": "stepped" }, + { "time": 1.0666, "angle": 2.07 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_front2": { + "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 } + ] + }, + "saddle_strap_rear2": { + "rotate": [ + { "time": 0, "angle": -4.44 }, + { "time": 0.1, "angle": -2.66 }, + { "time": 0.3, "angle": -0.35 }, + { "time": 0.4333, "angle": -1.7 }, + { "time": 0.6333, "angle": -2.54 }, + { "time": 0.9, "angle": -0.51 }, + { "time": 1.0666, "angle": -4.44 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "stirrup": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -4.95 }, + { "time": 0.5333, "angle": 0 }, + { "time": 0.8, "angle": -4.95 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 8.97, "y": 4.99 }, + { "time": 0.2666, "x": 4.85, "y": 0.99 }, + { "time": 0.5333, "x": 7.75, "y": -2.99 }, + { "time": 0.8, "x": 4.85, "y": 0.99 }, + { "time": 1.0666, "x": 8.97, "y": 4.99 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 10.25 }, + { + "time": 0.2333, + "angle": 39.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5, "angle": 1.33 }, + { + "time": 0.7666, + "angle": 39.47, + "curve": [ 0.664, 0, 0.75, 1 ] + }, + { "time": 1.0333, "angle": 6.08 }, + { "time": 1.0666, "angle": 10.25 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 36.9 }, + { "time": 0.0666, "angle": 7.88 }, + { "time": 0.1333, "angle": 4.66 }, + { "time": 0.4, "angle": 7.59 }, + { "time": 0.5333, "angle": 8.08 }, + { "time": 0.6666, "angle": -67.33 }, + { "time": 0.7333, "angle": -65.23 }, + { "time": 1, "angle": 27.74 }, + { "time": 1.0666, "angle": 36.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 9.49 }, + { "time": 0.5, "angle": -48.6 }, + { "time": 1.0666, "angle": 9.49 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_front": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": -7.18, "y": -1.38 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -7.18, "y": -1.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_rear": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": 12.34, "y": 9.16 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": 12.34, "y": 9.16 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 25.56 }, + { "time": 0.2, "angle": 21.27 }, + { "time": 0.3333, "angle": 21.35 }, + { "time": 0.6666, "angle": 15.6 }, + { "time": 0.8666, "angle": 22.96 }, + { "time": 1.0666, "angle": 25.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -82.37 }, + { "time": 0.2666, "angle": -110.3 }, + { "time": 0.4333, "angle": 36.21 }, + { "time": 0.5333, "angle": 2.1 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": -28.89 }, + { "time": 0.5, "angle": 12.19 }, + { "time": 1.0666, "angle": -28.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear3": { + "rotate": [ + { "time": 0, "angle": -1.31 }, + { "time": 0.1, "angle": 0.46 }, + { "time": 0.3, "angle": 2.77 }, + { "time": 0.4333, "angle": 1.42 }, + { "time": 0.6333, "angle": 0.58 }, + { "time": 0.9, "angle": 2.61 }, + { "time": 1.0666, "angle": -1.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail5": { + "rotate": [ + { + "time": 0, + "angle": -26.34, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.2333, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.5, + "angle": -21.92, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.7666, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { "time": 1.0333, "angle": -7.73 }, + { "time": 1.0666, "angle": -26.34 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 0.765, "y": 1 }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.765, "y": 1 }, + { "time": 0.7666, "x": 1, "y": 1 }, + { "time": 1.0666, "x": 0.765, "y": 1 } + ] + }, + "tongue1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": -1.65 }, + { "time": 0.0666, "angle": -5.29 }, + { "time": 0.1333, "angle": -3.94 }, + { "time": 0.2666, "angle": -3.81 }, + { "time": 0.5333, "angle": -5.89 }, + { "time": 0.6, "angle": -21.2 }, + { "time": 0.6666, "angle": -73.63 }, + { "time": 0.7333, "angle": -102.81 }, + { "time": 0.8333, "angle": -41.3 }, + { "time": 1, "angle": 10.93 }, + { "time": 1.0666, "angle": -1.65 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 38.59 }, + { "time": 0.2666, "angle": 43.18 }, + { "time": 0.5333, "angle": 38.59 }, + { "time": 0.8, "angle": 43.18 }, + { "time": 1.0666, "angle": 38.59 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 9.65 }, + { "time": 0.2666, "angle": 14.71 }, + { "time": 0.5333, "angle": 9.65 }, + { "time": 0.8, "angle": 14.71 }, + { "time": 1.0666, "angle": 9.65 } + ] + }, + "spineboy_hip": { + "translate": [ + { + "time": 0, + "x": 32.54, + "y": 1.34, + "curve": [ 0.412, 0, 0.872, 0.78 ] + }, + { + "time": 0.2666, + "x": -12.88, + "y": 0.58, + "curve": [ 0.138, 0.17, 0.75, 1 ] + }, + { + "time": 0.5333, + "x": 32.54, + "y": 1.34, + "curve": [ 0.367, 0, 0.867, 0.81 ] + }, + { + "time": 0.8, + "x": -12.88, + "y": 0.58, + "curve": [ 0.164, 0.17, 0.75, 1 ] + }, + { "time": 1.0666, "x": 32.54, "y": 1.34 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": -37.93 }, + { + "time": 0.2666, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": -37.93 }, + { + "time": 0.8, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": -37.71 } + ] + }, + "front_arm": { + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.3333, "x": -14.43, "y": -11.03 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -14.43, "y": -11.03 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": -11.68, + "curve": [ 0.379, 0.6, 0.724, 1 ] + }, + { "time": 0.0666, "angle": -17.59 }, + { + "time": 0.3333, + "angle": 14.45, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6, + "angle": -24.74, + "curve": [ 0.326, 0, 0.715, 1 ] + }, + { + "time": 0.8666, + "angle": 14.45, + "curve": [ 0.242, 0, 0.666, 0.66 ] + }, + { "time": 1.0666, "angle": -11.68 } + ], + "translate": [ + { "time": 0, "x": 0.84, "y": -3.81 }, + { "time": 0.0666, "x": 0, "y": 0 }, + { "time": 0.3333, "x": 3.37, "y": -15.27 }, + { "time": 0.6, "x": 0, "y": 0 }, + { "time": 0.8666, "x": 3.37, "y": -15.27 }, + { "time": 1.0666, "x": 0.84, "y": -3.81 } + ] + } + }, + "deform": { + "default": { + "raptor_body": { + "raptor_body": [ + { "time": 0 }, + { + "time": 0.2666, + "offset": 314, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 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, 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, 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, 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, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] + }, + { "time": 0.5333 }, + { + "time": 0.8, + "offset": 314, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 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, 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, 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, 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, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 138, + "vertices": [ -2.23608, 21.95403, 21.54915, -4.7554 ] + }, + { + "time": 0.6, + "offset": 138, + "vertices": [ 7.17962, 15.14358, 15.26523, -6.91741 ] + }, + { + "time": 0.7333, + "offset": 110, + "vertices": [ -0.82485, 0.73406, -0.01284, -1.10443, 0, 0, 0, 0, 1.4866, -2.59426, 0.98071, 2.82342, 2.7366, -10.49935, 6.12506, 8.95282, -2.60873, -2.28384, 3.43417, -0.47045, -2.28305, -4.76037, 5.08892, 1.40078, 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, 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, -1.37966, -1.75515, -2.13229, -0.65667, -2.86239, -0.77365, 2.45989, -1.65319 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-ts/widget/example/assets/raptor.png b/spine-ts/widget/example/assets/raptor.png new file mode 100644 index 0000000000000000000000000000000000000000..503d1c4462bee2fb82d3943688b9d89ad1175244 GIT binary patch literal 506867 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�t*~powQ4B#V;c=VlO!aud@BEGjy#j|RE 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%0DmoMXzlIxRHA!qGzlN z{-No!Dy=YliaSv-ETG!xgB7~%>os^>voD^5`tC`DS~yg8|C1 zTgLVR#~3WY`AXfZep_!&S30bJ_yYo>QyFt8DK_TPP?o!E`gZqOk~ULfn^O*iiDwvT zT~ThdhmE$RMn2Gf8Gmr(4o&_KfuEUG>UhuI=HpjF2K}NTFTmt6{kNfBs4kbWpPzW2 zn!3Z#e?HMV?a!N-!v^?5&*urlsoLRfKq#KFM2s+RppnSuC0Q5^pu!zHKWpAUcK9j4~KbwIGNxD916ZMm}|R0F>oLC93W*g z-=P|XP>C3~1_ha}JbNOAN2Z3H*Ajuy(&)-y&ZB~l2pyd6+Nl7lTGOwTfcWIE{Utd* zUZHkJC;~M9&kjDDBwNHprzdTg+LO<1QZyW?ZS{Fg_l|xH+%M%12gOOuZy)3nh(b+8 zC_2&98vr44FS+k33V?VIa#m0e{wG|NuWfIy&r^fbrUA_-`jStH^+%`|nam6bo*o`>OvcZ(YOuL~&6u zK+#W;3i9=xMzm?9#ibc>*L0j*Y#9+5=fCZ4Lhw_Bi3J=s519e2bRm&~FJ~G4TsYoV zpHV#=kVNGG6AdxAh6s*WWJ4k&mWs2AAvwOcat1BvhGKG3=)ONR^YV&@`m*<{ieSt& zJqHHl3w-Y*`oUnP!yYN$bXpLZmD6$X0p6jP1iH6nQ`Nr;~N*0%>H@f^>yF` z?{si;DCfJMAM!f;J{?A?swK&ce?p#^_<&_PS4~F6vO=z|elk(4#QekRLTbelx^A%D z(|-FKs%YN|ttx@3ynh5~%2k;%gQZ)Me(CXms?q(pLCi@kEh`Yrf)`PIXcQ&^RaP zkT#OqmJ0#=JE_T5-Fl10ClWo*E0JrcSrpJKZnu7w0#MSz0Q?A=ryx0DwHimeqxy?4 z3Y?by*x#7HjS?98Ob)O1ek!+nYPeeZVSV%6w7(`b;0$1}@@aog1y(>nDD6T!xV)Uy z>pC8*FFV8cwF%O_>Iv5TQeeOVs(x?Qr`%p|X zciw8hMgYRKyEbFKxyJqaTL^G{qnQ2G8GnDS)Byf5-v z>tCLonhLEx6}7TP0~Z(fHA?P1-f1sM2wP~V@EMDT3I1DD-m_E0K@G>b%pOOZEvRFl z-$sD+L?|cYf#S0;Hok zC4EE@f>B;xp7V9QKGI4!femX4MKlK8;oo^(%I5<<95kL&$mmN+?c^tHsOq4T^``su z-9wtUAOnV@uNi6cq*JrAJWsIx?$xty*@jLbXZh?-Lf`X=*Wdji!Iy~Pu+K!ZwH;aD zejSMxsaH0%UWU9Lzt)FB=G4>u$jFpX33FdRC@J0GKith>_Tnt4)vNsPW#y^9(tDiz zR_NxXXnXIz_e9`&(0C!9T3%g!@w+Jk&E^=QwjeU~kmDH>QMaQp`l?6v^7?BO@*(^X zW)E4F=?PP6Fe8C%C9qWYp|-A}D_2a<7wsuJ22n_RaXc6RDXoMor1@E_h}35rN=Tf@ z;NjsFHyQFL&?g{}HT*|d{%09G{*hH-Y>#$A&Uv0k2~k&o(g}y{5UldzVyCr%j!f=* z{9T#_U5I5b9H1{0pO9TNilab(&^sE^v6d1P0PS>y>0DZmSe0>_wcqY_rDFUA6YyHU zv2O$~^gG}LA9 zGt=*Q6f-{ooJK9zBZL8ASLl~pJVt(!T=^D>9cxPz_SJ5+^<1W-@9U)uYdWE?2C{Ri z6Z;ptw100k3_4i$PkSbT$)9wURsSCag03b}1Wtdoxx8^_0G{Mg2|C6(`nSHwPJ^3x zzIy(L{4&Yi>!X7?hwvho=!l0>5tkw1;M_-4k3U=M$!%d>+jH>*_4q`_XyKWkq5(Og zzgl7}o`5w0R9rH9JFK;j9K!roIY%c*S zw)d=dlYp! zOLyXl2~|j>Ppcbsjo(lf(kEQlnd#~L>6saVge9MRMo9rzvwu3$PJ`UruUGVEye}zo zyw{o5^0Q}`#uHx=y#waU0A4nNiZg=Gg6=uq9%a10d~A-msvG*Va}gX~4x{F4+NI|~ z2}4pQY}gf+I(9>5)-K!Erlb`qEE#+WN5lC!VGvl3JQaICro&qJ+|eCe z(CvuYNREs5N#uB_$3(|6{TKBbBerp%mrj zN$x=|$QVBh&7iO7==_>d7MJFxD zCL)!_#edSg2p@-~sVma+qs|L|aO8L=3xB|`iP&~U!ju)^S*qEDS9k`<5h0;|585Bz zCsta2t_Lz7We!T{~yu0i#Lwl*y5G3B39!Vfd4yT`^SbvN;TEBRh zn42;!$3%|US0?*w(ubk|VB|39G_d6+&Aom;#gK2mDV7b2v6N(NO>hdi=fW4-VFvRn zFmZ6$bluP*@m3i0A27d4Uy7VYjR)56zmrtbR;_zv9#}dPYre#PQzbbn$!yOw!`IuXtU{>h3bG|>;5QO^W$p-%DFilvQaUN!}>k9Kj zc0ld(yW&w?%q<~gr!u?vx6hgH{jdYS$EhYZYO~vMXv} z;7j2dg-6Ey@8J9~rFvrqiF8}We>Kab98GZm0APTeq}YdUw^SNBuMnyZW|-G(dw5Ki?cZPTLm3hzcJKK_!G5qLTev!gUu=O_?(z8sRcNE z_H}g7xqIj9Xx6vQ5WT&bb@Vg7bKOTbopGIn3b1od1YB^LoN~pH+=ef(o*Ux1*!%k0 zU7yulBz_zc%ZF&lHp&YMeBxn0@8>aj)&EH|kD05?Ojyj+%%FbJcQgO-`J}_|`9{UR z>np87Zb5-dQtN0?Ecrh;u@>CE{yoI%;%2T8#h!{T59bxwQjD;>lZBWpgYYhY#w*nYB~_H7&5qpGS39i z?KfZ$XrZ!cN3qtAyEywW_NvfAxMB(m=uJmt(7%JnB_Yo@dBO>Au{Ze~eji2^)X(D; z8^K-V&oabp51B%XscOp_Ux7XNGd!@{j+Am?41IDuAUf~_Q!^93=Ge68p@tvL=|(Ob zS4NGr1t^tZgGs^AO=;(=gT~ces+L?^PlBwVV2Vm)lAF20OWb3BVX27vYDA4=vWQ4x z_3de~=h@~C4$ury2jtd3Y&hb$Mqy@VX4>cpG{p*EYJ5oOn@f1> zftDxtMRubV!RbnKU~W}r=azo`T~;sOS?ZZ$3@P%yVaz3RS7k;`?GL9Xn}lN_T-i7y zo0=M4$>4iH|oNJ%8?0u^Z886Drh5CnE;rNcWG3 zJL6Lw`=0f6*bSc1IC_>bEk>ICw#3-E{)D9EsTW5_BXnM;(E^A5_^()^w(&6cO&=Xt z*Y)oeDUoZ-KX~o_9{LPRmKC4^b)2!^j$H0bU;!uLG2`iwPu!owx)h}dc8bOBnNotz zF0U@^+<5%>oZ*hghHfTmg>WRX6Fc_vh> z@8TiyhJh3bGXh0xNIm#vj8fCMDv#e|WzV4YmWRc2D8MzJich#=wV8fn_fvd#{MMJ< zwvf-~?%Ir|lUcH@9YKdHE}}RC_5a zRYXyr4Z)o>&KD9|l=_jh&z+woIYRs_AxRNGm!k!ZM8#Jj@tJ!L#KfNoMaL?NxWSqF zC&Heit^T_xx@BY+8xHUQgT={n4T{*Nmn=si0gN?s%Q|2O@8ID5#?2gb!sqZcoRM$_ z51H0KV=NM3wJ{?-Np13K<24Fl8TcIjP-6iDUW#XFg&pi7k!4$rN$fh2WnKu;Rnv5I zi4)W6(c12P<^*`aW_pH2JnT_Td<&|b7w~ANqx8}vQxDXpp?5q$IM+<#W%lW(Qiqo%q4ia^zR7>m`*Yo}2}`S{+TzFF0x^ zB3@g`ehDuT3;yT&K+!NaTy;c`j$;u?q4$eOzFJ!jQ&pn3i89x%$=~3U7Uk#{y z!QVD;r?Py6t89)t99^UK?|iCtLFKEiuz8pMYR z{zA}cDGpB0*7bMRSA9a__sd5G423^vX9855NnsAu!nb9plE?$1TQIsjZ73=GawwXx zTL*X?sh4z<;`?{U%O#%+P2jv~O(QihePomZTdFYn;!*+rd;F;<8RC8gul^@QCA`ar-GfhZ3<<}8!+ybu%V+NeU$Tz0kxHdcTGHukxlGw13; z9c*Y2A{SLC5}C<=Wt|>Fn$2?||wvwOEz05)#5a`VbwnGr9hW$zWw*GA3#fL^} z8j8<~kN6#tC4Lby8ivr4HAY-$pT3FzP>W}59TPtAS4zFqXI3kjA z$IAEc)H&>rli&3l)6!1D+7=NGi&<6vO}G_;NIu?sYSw~te8(?s zssW56(LW=!(DH-8@|inpj>BvOh|&U5(~bvV*DK^kl+e7cGaf+oAt38T0K{cxEnu$8 zSuwO#l!{l%IUiB17$QlYGOCwN6tx+dz|3N0>ZC_^h;-8QbqEioob)Dq}}@38LSc2CFZCZJ@C{eW+_>0h5mH&Fyb|1UD5Cc<$ z$6>x|T&bqqOZl=Mj=r`id=2kZCRf{zF{!K*0JQ zk;=0&@c^EZAHjam*wOhe=-W?%%*2!Rc#iSJR}^YJoh!Czt3dYFh-G`~IPL&~Rgk?7 z?616GHEi{;&2@7In}~m?y0e=GtDA*vo!_30&I8W$s|v1dXsoowAbBFUkmy1rB7=c5 zR)8_~fxAFe;$ywtq*Bwr=8jH}yGu^5#YOw(bjTSw(r-4LIlPn}#0 z_mGM(%I}_pv0vE@Tw&z3?i)D!5af^0q*DCGCs&?i=cR!4E=gO$nVOrQYJb1e9^Dq( zHu#hl2^;@&HMnp`!0g0b=LP}T)tiI0Rg?LkJ@%RtWHo6ygqgdEdmnh$IVu8B-nCDB zV=v)!?d66D_ymUo_)B?z_ug&i1+bgL03<|w1bvCy++4b85D~TFN|bwfr%JX0C1FSeTZXq? z@m&Yh{#yR=_$&x?JO|V&Q$G`KMk>T7;!Lr%qt+!(;>nuLQPuo{Z3p}4pc4gLn8I$H z5g}I?kHycegytUr%NHpM@?UIZiL2}Nua&X}!)h!MeBS?AKT3*a0);CBoiopyGBVQx~75w70+s zwA94vh7b*DiGV9(kbtM6t9}?En|GM_s<0`O#-N<$@Rcu=B7PY1U+=`?odBB4cdCYd z2<9O&>N#)*lEp{y*OC*EQe_kk zt@DA&1T;YEXK+84<>pc08^tuf3nvkCSni|vv`e=7>MpbK>ZFUlmZqf;*VQhB8(c-dd5sj3X;v%3Yjz1*kSH&x30O9o%g>LuvgT zvy+_Y+yylx!+_HD-Hph}9rkEq<6*ERP66clj2rltf{!ejNt(}SH;VpKw#W8%Au50{ zhNxQ$=tF@U{6n|i?@dWmUU%%@Oe~cnUq2b#v&LG)n;eNZzX1vNFdQ$E)YKPJvOOu3 z37!bXo-OaVy`}_b>Ce0JwQxV zlz$0@lGg&mIp6)p3L_HxF0b{T9oO@Ws)GfECiL-mWW=`UD1?y>S6>D)2tU)`X4Y5! z;{~4ta2*056A1(47vjO$^i(MO$Z434NKLb##0E^3Zk?B6zRRsNuoD1j?wcEjl_ zV<%vY)pHCvX@mjuoXFy$pLfe@x{&@n@7}6Yt~@wH0fdvQq=H4DsleCiGRl$+6&bR> z#S07-r;Et|pRxX&#N=$+-JDdkNzZV&9I>~QGE_J)AA=>QaR3a};#y8*-_tXokpuk0 zS16yl1?AzgWnI%JFgTnw9Ct3a^e{9<0UNm@Hm~&vC9#G|4?;V{>j(evXs;NP0G_*L z#6Nk#$6`dQl*DyX6+n75+6xt=(Eiy@`F*lW$N%K zA>@n64(ZTA3Ke`Zb$f)_o+c0U`N;`qj)N{%NwJV7=rZ4lke8mh%60GVa?IZ3HKz<_AFCc$ z^p6kOra3`kJtRsv#C1}406#Od@{&fj_e^|*A7DJD44P^bOKnBU4@Sf6s}7(nhh26o z-trgZGq#gWeH%JAKqR6|vgl`4YO{I8c{%`UuUWUhxG#_aknhh-+*G-Je7HEczLV~p80J=9Q4MMP z2V8zJ%=hWmW>|X$;VqFH>jlEpYuKpO?;(}Dy_Xgn^_Cr8iySx?P|RU48f{;jcU8P# z=s;alAIZ#}es>1N1Nd~mitAdCN7A+7m+F86H6p=8a(E1Dm!R)6L%JV|*#KPKdToaa zxF5)+JbZ*MoiQk(TI6ivM#JI(YvGa7^~H=&T30DBX!HZ$(pX0((VwuqJiH$qlsh4& zww&+%##*IRw#n|Yxgfq&9Ygx@->EwGYyp(Ij-k)5%3_}$u*|+=P%`==c6ISm4lD!3 z4)HcF8C)T^+g0q8=WX3 zL*xB|Qh0mUhcp~Xlw#)E`Lrtf^5 zzQ?uo|6%Ga1ELO__2J(x-Ca_n|FjMXg)s&WgB9%-u4n?0dTe7nfC7pOpZt(;Y(hYe6^0ks!oudeQMb1qAB7=Ehv zoRa7^?8z94%st3{u|i=xyk{!1KN*UDKNBmJNtLrTthjQ`a!D)NLEhv0Wo4Hp$t6Mf zxb0V;uhAo0P2u6mhJt3`R`S`5NS`E9Vc4<}R=VAv>+-^P>8-G0O zCTt6(u=iRw;RoCrmD=#-O`-UKqvFPm$HxsSC#0JG1+kMtGxuO78N7cK_3Xn@hZpMHCN6p>>>sj=>#UGo&G4vg`Yh~ z4C_rl`{SP-@(X9*t@6MZ);`8!lFJ1CYCVr1`j!iDH{twX3qES}7?VK*DYVP5cCNAFQQz`L9jQ+){@qQXlXc4<# z{uqt3;_(jYNKes=0zvFlXs)#t+w><9f?DtgP*4Fj`BDY8R)!6FAaa4C7~1oGALhj8oKe88M?Lmh|+y=-!9qy zv4ozYT*Fw_>tye|DJ6A+O{_k;gC_?y6N9`tWag>qb{Odo2etW`Ek*VRN6kK{2Q?a^`HA3 zs9)R02T3k7sZXY4&bm%>v0>t0V!3|j$G0HYS1RO^5AeD%F$fyBx`SZ+UsIVP1oDSi zr>sQ@4aF+Mj`nJWztsy(ON9T>Sl;-YZe%Cu(I{cT81lFDEdC_CUbJEOU`9aU1CsJT z*aPK#YOv(Rr7?eHpf{~}{7eqB0TUws57PFsfbWXy-LSk`=}GTtx%@FbNT8H-=%=?V~CBPUWdG z&!X+txWp8z;x{u_Rdr5|x4Z%8nBXolu;F1~^4ef#PG%FJn5${y#0=YypV7X#$k;|-DOvngQsIzL zYP=`kaKFle0zsW6XP}T=((WKL8Ah=z8r+79kM_xX`OG7TYYNd2Vw99B?WQnMF}EMr z%S$@@pAwL-ZRHEpwU>O+Z$ImPkpx9-NVeqnaSaDiub1IoganxA zl@g!8>~!kgKV=dpCPd(dFQHo~?2kzvN_FS_{oiQxOy1BYI$UMF07mO1FrBy621eB3 zq6wL|y>%2&w6X?q1pOp8XB8{#bEV z0Y?EJJAYoPj--Xs+I2x3IYp_Jrcm&}^wK7<2p4(_RK5uYFW5!_HU~j$KM$k5 zkmf6&52I=fc($@TK{q2Z=;H1AJ#{4YE=SN$E-bx%1qwLV%kZTe}HB0B2)c#iov?>&5o}V0H4rYpO z?A<=qq>avTrD)x)b9XwYW+&#woHv4Qg@n~T)ZUTuJ}2KocrTz0dvevlJvKGuiGP+; z;Yq-^tB4<50+NIQG2d>=nUi0~C71R6$3$|fgh&gw)3qEas3Dk$w?W87XS84GW(8n^ z4yCxB1>ywNd6Fu3(A?DBk&0E5<>JY73vj4K1&}N4e1;oZ+VTQ9bf}Mi_^$(1dX@&U zR?}Z_d0y+!5)>UWQT{k8Zr>qL;rP})BTJ-6;jn_f*2@*ld`i*G67~x}u#Js{r2;fH z-(~k6!$`OT)D%|zr-?}@&Hd(CMRgjPP%s@wnt+1MJ;g*7fnntzsls#^jq2N>)q`|wfuW$B&Bw84Io29R z7Ez6x9K5DKhzy(j`sTx#7A*RVC&*NSdY}pyl1Jst4i_^B$#!DZnb53iB>1#RhIEFz z8N(h7n@BWR(M*f_A)CCG|G=fa995FV$dx*et9{Pn#TtJ@VvgrwLST-yBKGQ1Vq>AR zW+I@t#_9H#?im@an>YjObG05*JKWgHM@5Fd!jBr2X93tO5v&5!q?#hhPukn0N{l9R z>OfHUC538C2-?EVXt~ZA^T0$SxZtx9h%@hP)h2a)nHyfV5uV>65#0FA3-)`8cga1jDmbgI`Z4IaT@iyAw6fwD;5t%5a2?_~Tt|Bm&H_l%Gl9m&`g~&xQMVIK9 zt_x&*h-%sQ)!-3OHVb~cEiGJsRg!Z>*4sx7jXUF@^jjQp0Q{~XmR@vnOcl82JZk-o zF&b$mSgZFEkRRbViM^~VW&6sbRd2L%1erJYI$^ec5^a1%wgzL`p!Z$+uO?ZuJg+lC ziCA~)U5~vrRsa0?6kqr|ImhM4>?tbOQVH{CmD1A(ZZ2_om~B%1eYm~?NX_KN#;6>8 zO0;oS-SHz9(6STbp1iNQ5Fcslgjt^ijneEZ+e`@|@)B-5J5RK5y%?!}2CVKfC7!Ia zzS`j`X;;8TyZJou38|Ip)~0>iK!P$LK~3P9tGuGi&C}ygL*3j#I0L4^dO5e!_!Lbg zf{wEPrGJr6V{1F}>WQ?hx*s!BAZdIKzt@ak32K{b9@S_8g8ie!TPkH`eZ`+$aeso$ z#`Wo8JzwT%zrMl^7NbbkXC(BcdP%5zMDn9pJV%C?iPv1*b|>QvEnP1A194&aoM6K$ z^LHtppQyj-OkRxZaX=RYbL@Fb{i#GJ3kq9%(oaPLsc0oMJrMI6 zaMDEtF*nqr|kQW@;?)MIx+p;hEP@WkdMP$Akc= zl#|GoLzOy507;;xoZ?NZKthj`7E*S4Uvp-$mylV`@g~XIX*H@S{!y0aU1BJ5mb7SW zTcnvzXe)dmr4!xW<8!%orq;*O*ESatTGjO1N@s8hklOu>Xl3qqs);NqZ4JTG6z=L!ScR1~=9vEVWeaX~saELYy(>${(7D}Mx|u|7k@rQ=>KP7vd2vZD>N z0uPLG;o0xXE+^|sp9l_4GxqVRK}G9vzaECw(o10{RH)`qk|x`1u@;~`T26{_PyRzQ z$ZLm<&_|u=U*7A&n{-S;a6eM^pd%LEAWo&SKSdBE(3aW>i_g3R%`?E?u83mxif~bd z;}@?zQK8C)RCM+lfizsd*8Kz=G(GAAtOU|GI0J*!A>>xV(b@#r!eddrY0rn8{b# z(IKG{yt8@1aDQ~Kxjk8<1fz%7KxW#uS=_2+!%i=?af?|KPr=^eg7y3S6-apU!C@y4 zptq=sraT9p9)BDGiXaDm8-wmj9vfyGu{BCzCOG)Y=6aOv;DMeLEsyMbQT`m6u>>x z3mL8Dh|k!qgSCvWNDK^IwF=+j3oN_P9;`$vS&BK1CB#j^(`%W8Sz`Xz`aBXY2WZSu z{rH9a%!>gu;V2xo_3wAZ)#fJY=ARSelOxvY;?NXH|2?lCKDfuFiM%MQ0+Z{GVQoYc z{>LJw>QdUCzypnosqK?IBaFR?DV|IUq4!YCB3VXHDWI=zg-74dr+zHbW*aq4_?w%8 zn`;;`UZkqQvyeD)Ii#_Epyqb?%CP!PB;^uui!@H}vIrq)DZMIW(XmfJ5MyeOskEx$ z{o9gtrr$3S!Tot`9OwqW;NZ3^^+{J9y-f`7iWocN(;IrIGm_zy=xW%v->|xKsPmmW z{x#ajyTRq!5<78fKr8OHFQKUD<0SosO91}*-w9Oy`~?VJ_t>Ll6dQ;fF>nKPEzm-z zkL@(8jIEeYZyTI`E;VwTni5;0n5zXe0DT^xuS-bu4OCr&@O%HI@+$mP^UPD~HRZng z_r56ymi8xQJ?<7jn`rl61mP;wC7y6>n*fvp6e-m)sK!{J?Eup#;+bx@od63}RV=eS z>G3JC=rk)XVV_s&V--E^S+(|vt#^BE1X@4!`S9fMaof|5-J)d zHS)eI+IAqcMMnehT$M8PlT++&WYA*UT1J@$MO*h~85&lHM%Jf#G>Mv_wT08BHd&Uk z!rY&pUC&1+4hofF-vacSZU_w9FKO$Eu1ucJ$d`%*Ko4|12oPB&n(@Qo+Rta+n)PgB zf81ztyLqueeZ(GXKl+^bAF2C_YLMQxGvRm`XN5Dxh>@%zKZbKBvEl(8+OrYCD-&z` zYaXE!&Ny3#=2-A&Z9X9IT-3uf2=F7{>(W}JmB6vtp1)O8pG4~kBad;c{L7q){ydm_ zR)imoqPEjL`p$A>XUeLpIJ>^(kCOhcQUIMMk&;Id1nx1a#1_eJYiyTWah zMa}pMb=Um$1jOAxxS8bmxpTG)VxBSu;nEiVI208`^QIw#pCCLHR1PU5Mb0g8ZmWt} zhWRQ%XUbX4Px?cUOo44bBbKkNugTVrz`=4H_xE?7qA^Crc42CPGO)tj0zF^dNqYT>$XTfxCNgRotkJohT zJzn*g-`PfY5svdIm#Bgro#HBROWXu|VTAFG(6s}nZm)cD`{+zMV>8HD(eC6Gvi_S4#`^kQ*Ldc5M*ssRL~QBhcjDxP9BO+$*iwhw zI9c`bIaheyfB#PjCAEWlcmQ;cuE|OP<$eJ1E9v`D)#vSvYyt$H%36nGd0eq$f9(Th*n8)L zn4U1$35B`wft~Qv4Q|CLFRo0^YRZq)f+m%-#FpYp>fXOl{Xw&07#1JD?SqMRMn-KO z)0XXm3^+KKYG4fp4|Feuk)xqj);O73kRqY3@lltEbi><4;@W0> zn7JQVG5tk+a)q+urN;)FTkkz$3PE_FVx&Ru6KS44h7Az80dVF<2IUmDBly{DCwQj4 z2VspHHVb%FWeT|7qCdO>p!GO_MdYDPkD}~X7=PITEufphuB2WM&Z{2Ag!ARgtG(NY zu(u>UdAoU_N4pPW6vbVGfOENPwDQs44U+|evY7rYs)(c+__ko63u}U10%{dzOb32a8SC-s zQJdcMJwV0FT-<)4*`%&ux`)AKmbGQIq-8l@B8mzHDV(_*O*ob%p`LHn#R#3tDgp+0 zwPxShiXS6pT#nK+>w~h8iHCo zC=^dk6&@jA>7M&_MqgGRg9mJUxPqJ1Vy`pMu`;CQk1`^j&Q%ctz0yMRjf_%I-gM@L zx%@OC|JRf9C6g}6we2VUAUoyN%gn%tZlssNLxxuh^Wz=$-nYpqQG z=d(IB^l0H54ovGu$ZAI(P?jPv$yO@>SStgYzM)V+2stVoRWg?*`1n~Y-S17VuQ&14 zV7S1sisb0;k~H%l6{4j$d!K#!-ow{k=g<^4+} zet0ou;m-`5s)6{duMJK$9g#mSz7fNd4Wf({Es?CEL)!I*v;50LWmr`feEBjLwd8^7 zsIT*}|0!<(>ef(KXSUI^_&8dls(SF~51&N}8S9|+?gqTm5q36-g&1D5?uLQl=tz*k zRyh~&^wN}bEfS*f@%soDLdlVl+(njgn`_DBCjZ!qVk}WHQG;R47ynPrGRGV%mmA^( zA;uP#oshZf4IrR_-TGJYZLkc+Aa|VaZneS$x-#nVS7s9dDSGS$yR`bjwvE3OfGC*(x8 zE+7D9HC&^`N^*3fnPK!_?0QWUglcUIeE{9&VG5@OEUCKmsj^Xf_O@sIBo%v!=G}9c zfPEj>;2vDmGO7hBO!GnjbJ}4PxoF=kJBEn3(TO> zYW-|d!aYd6dEEQIvZ(tTvg2cp1p#?`#$Di>w&6vr!n(Ai4G+05O#-}Hwp8s;a z7PeUMidua$H}}Rs?9O#jbV4NNLkz||iFMM7)2 zvZ7@9&d{y%%i*u;3R)7<{dL&&sa}PuT;COps`k&!JUiC%w-p1Mex5 zsjSd;O7czDA_XA0i3*q{4>jGB-P{k?!R>x@N!0-b$R;819fI+B2pkXm_Z6&77Nj6C zPh0yDDT@Cpt?nqZy1kT;{LR?6NVF_cCj&+sNfa#t@ZS0vuZTd&>;|=x%1TpC!Q<1@ zLQgV2Np|yttOsjbR>`laICc4+B=?4#&TB8l=I4AvBv`~O9P?8~2NcEAqB3e7y;#iB zr8@}o9{h4X0Dmmk_6R2!iXJ9w0syZgJRqwLkemzd9`_P#YpKj!zjiQ8_$RITv$__yH zoyjc0$}FIO7)2IF==wA{nJYNbb*pMr){ypvf5-{9&8JyrVcE*(zOxFUIsFs>{p#pA zn(*6d=^=Tw>k55HQ5Y94q6yl4yVccxLXag9nowVcv%l^@bfwq12Hi*rfVx9sJ5Q)L zeg?pM7gJjn#Nf^TSC2u~(??g2u>w7w!t_HGyB|5Q!(J~k#v8qKdJi6HJ-j@}XgNs& z6uvVSHSXlqlNYV>^#9;530ZZbl?%D2>FKf6lwRW!fJMT-$8eeZ6(%pfC#`A054#vz z;YmfaOvLzGnalq792;uYieVc(lxqGF6tl!08_$eXZBhh(GrxIo5b5hu_)>Yc#|WTj zL1+KFG#dgft(ex9O4M37=Dh>6^yxOaxFkTTwPsYmz~7*KLUdQuZJDWm_6rV_kI5i{6jl^ z(2i$4RKezQo@+R`X6zchFhU-)aI%3ARY`pp^R?jADX+4 zY`o+VdO+7?pZ7UP8TjMxSXffeXciUxPr~fCj#QyXp&Hank>xk!S&lol*;FPW==4O$>mMsUeg5y?&o|}fnI*;&HGKHDBPHbJ@4S|SKp>WX zWTn*A`-XFwJ{`1>p=;pvRA||tK!Xz)rwzD0luK(iF*4_ZE7>w?ZTrQFieDu26tUu; zXIW|i){UR&8`u|rSlD*X>Mj$a8?oekhR}jafL6kvML)yW+S&Tq;T@}}Bv!HF@P0ZT zh;~55u`U!C)q0$>6~`p7KJe<*uDJ{G_<~cB>wPBG_pPN5pnSEKzCVB0Trn6+-PF~G zkmuP?|MO+a_Npa#A|mfWFT5_!%IhstpXtvXfQfjcKKoE8gkm2utwUe0%0gXT0ubz| znKo7h9RMO7r9aHc^)__m-9^%mUlgIlPdBkNz6dBc9Y31T1>IxdJhO|V(cEGnJ{|&sA-6V4^86QawOZG zY!(e;9~g;;I7@|aw-AAl1Bl16z2XG+UqBn^6Ip8Zbn`_z6a9Rk>w$e#!{S43$JG2G zkLG=@V9`3Y>#alOp;GH^sxYN>veAF77<0oNrw3|VBNJPH&?9)$rr zw`~Sij30gIexR_m71L&#kblkY9hAM8Z1_Yoozg1iFD;0L#aHlGXfMcoKK%s;M_DyC z_8>hGA>ma{j(NMQwR6be#K>WLROa2&8oUT*tpd6*K}jCJv@^*X_d`pHz08JZ)u^8& z(i+QNh=dX>b?6>sJ+lH_en;4g#R=t-R|_k}(Gy0~!Q>JpT>g)r*-pdg8}RS9{c%g? zA<28aAM3~jf?2!Mu<1>E(dP-|&c>oaBaA>8F_2?tbPQPvfa5gE|4$$*hvnSbFl@PHel z)}98n?$1FLd;<1`0jLmaq5-Y*=!XoVs|YVZ`@%B1@e#=&GZ3a^N=fe+Sp z%x0^q=Ey%j_C_=X$dk{J+nV*>oYEVa)1PP0R}UY#576&B4}?TJs)z-FOn7HEMX z1aTk~UMJrCQZD4$OZGPDKZE4=1}5e$o$nbYQa9lIA7g72pY=a#ky0(;+H20D)hIyBMeAc1nomrl$bmNNVm4$6ywp3D#}q?5n+{enKJ zNGVfp`aG1_Wx%M5mU3vn_Z#>0^|1PfoZCM5<1UhciD0gbka+F_)%e1x#QT;GH(ZED zIQ?3cG8}zQPJdS2`3pxO`#Lb8JOdfej)V70`%8g5dp;xHb@mnF1rbjNOc+5ks=m61|vChBg8~}(E*z!a!%ic}( z>6*0H+6;`o`BA&11EBk8KJ^~XK0YaqjLuiTV!zKcL60{++{{jdtG!cJzj6m{i)+tf zz`ipwzmHIiN?zF%%FRIr;pSz=7tPAM9`0kZ4Q|?<_M=%BgXO`T{p=8pFKAF6=yEx8 zud6e(T~Qqqs)M`ogAea|o~u&G)!qHW^KF6b|Fp#@hw|Zau{x1=P;U~pU# z+RC-pPuNmqMJ~n+F%V`)kSE?k4C-&}BJV7;2u4}d4vlmqy^@GPw~eRbQcI5X_{a_( zKxiIkB~f3Cs=IegFqng+)SZLBxb$d~RixoXRA$|tyCw4d3QZSQ*p3Z)Brl`upM!=> z4tB6{w}5;Cx$sxak~G1&Fnn_1Hi+e|6kVacTk}ihn_C>XpYRJ7W2k8m-P$|NjZhlM zD`^tF2dOOn2h2}NI^V1_Nwh0b|AfNa5)zwih|NT3pvLt_(FQlg>n}ZlzkKpCt$5q4@aG zbU^qmx@+duyz9h=Ex7|I=HO)z)#f*UB5F*kfylqQiv7az`2OiExcFQhS4%jwWh5e$ z-1?YQ!AIyHUES)8YX{jRWQAl~QNF)qAbBCnKbw($rNg0DX2Bf>Ub{g~->+uJ&c?}M zKv#Jz6JS}8e*Bt*lW<*9h>(dw$y7w4a9HoPemCQXtF{{(R@$81y`375#rgvQ**23} zeONJA#)siX-&!uvc)4KO@t$rp3WtR0N#OBH&w6;wQyh^gdmJJq&S^-m9r0)@k-E~j z8Jns{tl$O2$48sOCY(v1j_jd6Nrm*~MryS14ZD*2fxHNqUrY-N&RZk?5im5Pfbn9q z^nC(GT#GB-#JAJwm_~Kw?;9L@jr8O|6=`i40s8m27JG}>g(M!ag+rn}LzdujXS(iD z9kdOIA~_(#Ch`LqO5p^R4WyY+_7`!CJy7)Tx71j#!1JOs@X;>P3VTFnL%*_WjQ_LI z3Gv|)w_f-(?+Y`zjdt6G{3}5W+5~6jO2qk#ijDW8fk`|EeGDvaqhngJOfs^wW2p1d^zvAYRm2fZ|8TIArtoD~#)uC2YB<%1 zDM`z(TVK}%=Pppf7DoJAC+G_+1(SPnLe4#vzCn$QZ|(Q2<ndauiD}R@?PL?B z>3$ZTkzr|b4I+@4z7O+Ao(!oDds@0E^LGcDqT-7?gS3*`dx#RN@9%H#Z<6?5Y9$RN z=iWO7Y@}#uy|IKFe^`I^f?5vx?+3;y6TdKq0*_4p2wE$dQKYORUlV)<@Wo`|hMOW- zxO(69F3rVF_j7i|StV%_$VM42wwiR>0Oz|xFghUX!T{jnY`y9Gn8}T8M&u-eG(2w8 z!HsA$7yO>aDu$sHrT@E5*=Y{fEBP|WIqKJ8bZ0bAFHf(J61NRdOtjjTI^R6)T9)lP zUa~o}D09)f62_W~XFVDIhnJUN-r!*r=X6u`zXRyMBMIsBTD%GOHC;ihVDl?22KK>m zq$PUFG^rnvqMv#_=GzzptNee3HzL zYq;sB`)*m?gNn@Y4{pv$ydBZdz0_E`dihsqZ}=~DQW`5omBB~RA0I3GEJ3H~i>!Zt zt{ISD-_r+kApeoBN?dV^o)svHUXUwg(DY5IV->2uCS%p?_=;yPVq$f8)DHdYB`RS$Eqb`H$C?})FxlDU17w<9)nHZ$XD>N?R$Pfw!p z1LSN9dmD4`3E5Fyech1zpJWv^#9X3tmCmY$4<NDWX4EzERk2^^G zOhdT=vRN^mbcv+WH%KRwyawECHR8SxP)A96rUr_z~ebPeow&$l2 z@lgvMmj#ObbS7jZIpY3BA;fcY2w{%Qf6pS6UG;6}iZs0*EC+pijL)a~?i`RBN>%#0 zfD>bjb9(BZ?(59%7S~!7ijx@?dS_;edf!YYH7s*B12zM951Pnr5hkyZAZ~&&$%jE3 zAKlgc&mX-5BV4k;MH~uc%UX>RqCpx=LmRSpZ^+G?+|G7?lEap^-5nR^?CC;WQ*KL&h8b_{kT=Lr%lreMVvn53AX2I7e< zBR+2bL})CMq;C+ijgUxUD1^q8Ch9&dZ@HfXoCQHkS|BdbIZMF6gTf~i_|r&ey&L)! z3L%@%%S|h;2pTQ94idYnQJWIDT9|LPN+ZEKdQ6}^)%YXF> zYI>J9xoaW}Q4e8KzQbV=xrYcV1t>o1Vjft_%;AwG(3|i`K7+HUw21jyVa{0AldPq3oa7H{12qBcDzk4>+hah?>CG8lv%Ve~{R?JXm7dC`VHCo1nI$XaY~MGYWHLvY zv@@^me}LP2M)5g`oKDHW^DI)r9%7Li{kw({3gfrof%LMsmyCWoFN0KF0q0=QXuGoI z6}QG_9Q4-$k>0`^djkweh*W>ECKPY=4G1yppjeYGpD}b2IM&JZV$bMcDF+xI_$a|Q zisLeX+7p6(c>bp7WiZ9-ojC$V#Bax1MiF38=B{swy(r?s5ytzy!?Ne`P2vn$d>T}Tpho#|qF3Y_k64UEnUPDF<)8CK0Otf) z)*}ENg!s~AMR42#?tmhmR)QCJWW5GQtj%j6pUT~$f~T0*RnlBrPkJ*J*aLTEaKA;A z9;cW)wfi`OC3l69`{RUZ_iEO=qj$KtHG}1fWI2Lri6^Y8$F;@{gD}Hu&Kpmqsxh8u zt^6d+E{Ba%pO(zK&^|}S{P4H)4+4`MfC+w4I+ihZ`ziL|~+D06}0Cxq2KH)Vq>oeNk&8Nm*Y$9?~xJ5K^zkT{_JLp4+U zJ6~1*nw+*-tcwYPm|4$WYg5*q-Wed@p+l5|bp0_-D`p@+yELY6Rg)W&)ZYA3)Sz^N z=QL4~&mDAa$-T!cHoYYbs+4n-c~E`dsd&;vqgxZE-H)O{m}^F(%&I}PiSZ~ZX61(H zq<@o+k$(W)te5CrfB0-SG&vwRt4!*C6$auL>MCry!MX{-!nA5){^f9(^mln zikUG!P(=budnugKKhy4HrGv$|chv+M|9rKgW&kkQcyPe1ix_RmKieK=VB|=Pb= z%AY~e{A#UZqO{*$g=aoV{T+OMG3q`)NV_QA<#?#fD zw*z#5KDQ;pp5dEgx6UiEUz{8z;s1UK+xBQO#T`3Ih2V*hTQuwhs0?}%O0WACsNB0^kU5N=-zm`L(ZtPv%uVx;Q0ls z%3yWGoilqhwB|YNPq(`U(HuJUSaM~OKt$XGT%YBTf6K)EiblJrYa$AT7lq)Q>JRvW z2jYJWKJ6eByF4|AvA(jPfRNqG@ zgwNdz1jv!02$)#4>lj(p)NIac169}_$7zJ(vur-yKxivuDXYAh204Q5%MPLiZFr-- z>G32WA~vk`1`*^HwtMt@4H@|V0yBjIxaw6Yf|50 z=(0irv>#KdGAr;c#Ec@|B5=*LS}=2aG~rbBv}5w5f37esjsE5nylZi8yk+v=DEC*7IyJ|-32Zo=fcW|o7S4Y}tSiB96LW#(%&smQ zr?}3?W+ARiRk@2Y*ZI=hVy<}xbdP)?gv5f-Dm1gc2Aw2{12-V zH54ut5=s%0C;mHXFP<{`yD@9XDW3`spPB^%pH0nO!R*w--hna7#5*<@IK3w+&hfz* z;g(3CZB-0>`5wDSt()o>ru7=iO!+~6{-JO}5~N`Ah9>b;25!6<>&CH~FGD(3qgsu^ z{RMbkqkV`Y%lq%wy&U-mpBwe~M$%H`3k!z5X0cGmTa}ik(C*7z5fmk}bGNmY7o}!( zi%hR>1ticd+4FFud_2mG<-X!N9P#y^cBSglsM9e~9x>|a6lv_f;v+I-ct37h3@+YF z+@Bf$R9?%j{#X1bdiZZF{c&DY+~Vckg3<_4p7MRBh9Ta5BFs*Y^Z#}TN>}J zJ)AaWz;BmjM~F>yrc|~i_($b>(h~UIc+}mv2iG8B;dLa6R!mAi>>_oE{zHf$w!}2u z)<4aQcAoe+++&kPTiL0p&Ar^p%w2d0@q@yuVfn`2dgi%*Z%-{)z{^^=K%dS1Tm@ z6BUXa&oW-+I(3QWQDV)9{Nv5;i0g?7@@0I?7Nt~bbVP1BJO4eZL6w{Nc@%%{YJN$- zZk+NQ;3Y7BeK>w#7SZ=1BsFD>1m3p2m?b_+}c+XodEBmoPaM0{y`wAUa zeitz?Mp^ItODr7;p(if~azqtD@`XN_F{8?{=aeCRPRhy@z}pKwRBLQrxWm962h5EJ zV5HDUy=f?9RqVvE45QK@UPylZ4%68U*jI?YQ~J0;-t%pRjtr$ECC-mC&QyU{^zjog z6;Q%BFp2P6qEsfMbxA-)Tcz872$&IhK;FU5=xBaDmOX(AitS+ z@>>I$9~VD73zn(Gyq+@_)Mk1aP1Zz4nn(=yP38cIp}fBG^}?6rbzKy>3FcB55E}yF z%m7H{f?7&MRU_JWv5cWN$b=YBPXLHjR04_mgE-UGr%hXLA@`+atg4-vxF}cqj`XwF zyAI-H3Rx{=N-UR?AvBPIxbXm}Fqj(38Aw)-u~n3*ccs2jx^r0&qDqAZ25UdL0cyd6 z=^8z-HN$&AK^;hav>MCLA#44oiPg=WA!j?l2hzLT)7FDo6sur|0n;X+6&s{G>3FkB z-<)vW>r38wd^(uDBzK*`B>UuKGtf9hYMROFFYy44kMlJ$=-wg|{X05<+sBb7Z;!a<_GKCO=NS=}zf9;k@#`_t(A z$GtMT)QgS@fJ3o3l>$BT_xxXNR0lSX=3yN+%bW^++{A zSi{VKW}Lhou)X%GpH1T*ir{AQh^6MsJKVd^2=vz2-3lGV*)nH{LctaEkAq5xPPH;Q znQ8snyvnh>+usu>TPs&=u07MI0h)V7RcqyW+DxTec$8Blq#ruyexJCeGd0k-KxNX` znyC_&_R=$&vJ=9^$R1v?AgB01-FmX9I)B3zI}Wg~lYFF)5u?wK8mK(#3BH4RI;kkL z+T%7kT-vwp-8Ca!#A{WVJl@lI8>ETxEo0B*;`dt~5XlRDv{FHGEKmMHGgIFYE+md# zKfu2TcsT$`g^J&=p@YPlD&=QdJHM4A?S!)G9NU^gJnN=TxS8>X2CI46r@mNKmqaN6s9MHg=#!EBbhv$ z)_7{E`KwM-_gCjwfr0EE$h3JQq_PD+=ywp}4<{sjUtOCgh(O$&Drixiw=v6Y zX#DlnM139JaT!QK6QrNPPCMO3!f$ro^Z5ZY8spJ*4Kf-7^IFR~X6)O2Wc-7`5;^K3 zM92%0C=(Fo@b}}>leX(_vqoo|;u)|mY>C0$*RDs~^i|@5 zf`Xf4VgJAE5rvb6(mxm73m^ZXhd#ayjt(?r?f1p*<@~9nwIYlbKNQS*{c$I+l-cA` z^KbQGy{;;53oPI}@uahV?-p#-9q?$5jDPc^9KNY+yn5Ppm`$cAcLBJN4b1ss9329JT|)*!GJAT{!9oTS)gMOYba0>Dh~;PdI{{1MN+|Z#8DIag zO?nQk5$4a+e-`^)VgJIZ53a-GQtl11ETck3;^LoM;slV0DJgHI4@oChB`Zg7e4o5h z%&DjERe5x`JQ5wQHmYW?;%h%c5g*8THNy$2pY&(tJOjWOBQ^`a2|>kF_C#{_DX5$q z!R)V|=yTP4^AFkamrD6{7^c4~)1P66XUsfd(=t<#WJX6AoUsM>X(sRQ|BtG_42Ux9 zx`yF%hM~I~W&n{?x?|`L1CfxB?nauSy95!D773-hTS6K{y1PTV=AG-g@9TNK@BBGG z=h(+S_F8-GwU@>=f=BKuU(w~4FYoEpKTCC@0%{05;GJv^I2}oXU^?ERFlxYE7XDS} zaFxgNB{N#b{uKsrh?YZ-PsNywPxw4==+H5Gw6x?j%ESasdg{zr{`ys$1Ej?P@Z+XJ zjFw=SRpbt6E$UMf22e7lXJsuRP)^VOV+7w%kvOQn+W#Qq`_H+b8#n))GLx=urzJq^U7w+^NYTHL!c8KoOBF;@*IGi)J%P%T zFr|`N!3J8Ddxiv4A=;@+e{lj29i>T;gppL`zR5#aUhtl4e@mc$&xSF)Gf2wodtJxXT0&$)iH*zQc{X@L}+w#A>!hYjhUIARjYHUyqDEp)5ZK2|eT@TkX z!=Tr0AknHxA`AKmwsoqimjpzx_JkK{EuXQF@A@Mb!_Rkyl@sP7&rdEw_i557Wa7tZ z6J(*Cu)K^KkLt>WTeHwR+2xS({yIJW*3V8)fg;e@=mdpO z$YHHNur~-SKzF3U+y*p!{5h4N6I3OH4=fAgAx_4~Adqmmxnh3e-y8vrDnoqJ&dIJ{|PCR#9^xCTr>${o-(3<^@0jAc#*Fl6YH>|;g~B6 zG4Dqjtx%Oc26IdLAY~sM(VAC2M+*Ho<-{O=(%&S{uyZ(?F?B@Ak+u4($fin$`ON3r zo@=`hK;@VJ>n+F5r=-KD6S=$D6pt781HXtq=lSVv=m~z6I4ThvffW7iz1`P96ra16 zUV7IyKWtt_A)3*nLL;k&`1?mBu%p&UeEl1B5^6BuD2kNkDe(IBweGZQ#!{p}5KnbH zKPZj(B=S2*K>t+h`Syr^|0iI`Mu5V(S287K5$`#6D>bz;z5|1ITmY&WsY)PAphnw zEZYYShw0qL4SwrCVU8(?k@Be?`n(axrqd$QZIoHbC%vTln|uW$OK_lcsLJc}W7zuu z%Fs&jB;s0fn^oE*iYf|}Q)MDe4GnwH&qR`ZixXSdWg67*qk_){hIx;DFpncHA88#g zGd!gY_vLtivUx=Rej|w7;j#XNH--Ng&hfNdw*l?F?2ElOkspO*soL-cq}-B3Y@V%2 zY{5p{7(TXcC0&UTo+fjcj{EPRo0+YD;Ksvu_wbP3T_~P5cmfzQ!yU}w7^9&DlCa;QXt0JCOvh+y-(lBoyhZ0X`zRlsCRq;jUp+T zbCw`pu$=_{;1}9&(P6_A^zZQJ90I5J4UCPKOKc`B`|u6w{4JJBjpfYXw&3#}drb|X z=8x0E&tjG1kO!aH29IN@=;tzP|0SKT3%dhajI*UABba8sL)zkLAWffOe_Eq?dp{6= z21m}u*7VRTYt4_|f+F*+pl`Ca)e*rzwaH$QA|kV@n$-<|rh&AdKkn0f0c!1gvKnrw zEeHOtgnc768gB~pE&GS$jF5H$?hhuSsezArC_wDN_*<`b2%Byqvm@E;Mmf-Y=e1}7UE=Pdi|&2uIE zXu7WQq4pkNhIwRT4_Tc|2;)q>^qdKXepZcTpaa?bA`kukJfidyBgxZpc+;|CKBl9r zqDb8CF>~-EmFvca;h3R`C8Fd6$6SGt#3-odgpVbiu;1GigXt9etX?TmrH5ol-!0-vPoQIxuAH|rBnjSm3M*6s?bJWFHe{N=88#u*lAiz z)Al{SBMK#$+?Z)Gua8BEZigf4GfzGTZF%w@cTU#~6gd%8M16GT+EMu$2S;a=Bq{#5o2KyMv8hReaDTtnZ|YkN`aUK+ z4p6Nw^DhPgty{M{rteSH0{Oqbdl(L%F?jp7W+jmRKT4JV5gO$7kB&M`w5qj_1{+4N z?B@iv|09EFmB?e6=2H@5c5)_BH3oeLCal@vw=(7yj7st6Ts_hMP!+T6h&sXm^|Y?q z-g7coHy^Yg)s&a`U~Ja(rM+|qValzY4xU(Ed&E8qfZcm=S%F*brKy1Dndx~=&f@v} z$8u8t7{~+()37^Y5j2`5lOobTADoDgR|9s;T&V|9<&u= zPF%LPC%pMO!ch%|Q7=ZYsjN4HbLCoyR=x)frpdeSjyXxU^C3ylOfUq29%^&RLIwrT z`v5FvPnhQ!iC6EN9P7#Hw5n51w$FdwZ>(VD-#Rd@Wn|z!eodrk`4oATNz{96(Ipjw z<>zA*$?_ETG0Rfr%RvUI{j@ayAra{#_3P`tBc{Ae93-kAvlyFVf(pdxkA3e#%$IeP z&)!9`Ff!fyWBaGJsw`V5UmC}!bdW3Kvw)?n$tP+p5j?Kkd}e=PoB@)g*DslFKUE*e z)vgeuE&%kY8EqBmUzwDaFP{K&g>qTNllLsXqly{Z_B}q@q$UI(2Sl@vUZKHOH(p@t z`cmTy`Sckl`~KUy4Sb7%dT&YOFyb82FnC-WI5F_)@a4KacgB_=lD==N+yVNBzFR;W ztwY5QAd3HRX{HD_RA+^}k%RK@hAX|PYj|EEQ)+^>hs7ww2i_wEUDyCLckR!pqDg{; z$>i^!>Nj*%eCd33md?FY=&|&&(1P;ayG4KQ^K;`b>1i@1j)Ni{Lm2+*r6%SxAPjE( zJj@&QyDOSA+(!RNpgOnP!NK9{zjl)U%Sa>P?nm|k{qr&)<35R0FqSK)T!n#Xmt-Mx zZ$bg^hFR2y^yPXzv!pj+D0M_4w^%scF12zBBRt&~`>bnUJ7vK!1?=Sj-uSq`|81(l zY@T*>*!@&bn%+-Jneut~?%I5A)3r;=vw+&W_9s9a%`&>^mt^x5~g$5d4lXaaz>N9QtQ4yE4f^fwsN#kArlc`rw&{G_&Xx(Ce)_&>qrNK}4KG0#c%>liZ-SsL3B}GXt(>C91fErnnYl324x$etz5_`` zGZDcy_1Z>$Xs`ZkCp{M>NG53I?G>|ULB%JE^2<`T#6X;|^z1%`s!9YOq@fWh9Q0X# zmM1HDz`OY=4clM0^J=gq+H6DcgZv_`ufB_4Zn%zF=7&#QKMLi)FlB6~rH=AVN@^jL z^@&{$IZu11{4E$|6+0nY$21T~zt*Y?9kCOAFG0!dI6=bV{c5!x93_AMiq%_q%YYTJ z%$Kjt+>uQK8cd>S0q?>%VR!~nL;d9a(Rxt_4O1wB53VqRtuW;g`O6okI@{9|=((V8 zt}xzi99)C&j=U<7$>`(iX&hC|L-F@s8cM07?&dzaZFHuqOo6D#WLTXdIBd!@*p@;; zj#LV{837<2oP&*Ud^cn=F^l)uS*$$FA@3E7CFyf1bLF_@L=BX`0#al^l{=>P!8)y6 zE~B<=M>zIW$HY?5d_}lF6QTgLb0jSY`iq+ZBY`kEnefQ^&UWV%FEO9#mo80iE~)71 ze)w$kkK%dr*R&V8%N=c!n4JypD0k|4;KJ)h2X!DzA!*{WD!%GUPj`3wUZnniGp5&l z$XKhLQ`AGE^0nw@cSHfuOU~r%$1cnI8v35^5WNB~DrrBFr25k*u=&`QMOQb`W(GX| zo{QxNZlX;Y{Dr%m_}1|fEk?&J7CD2yfKsM6sl;As%+pjcFV*YVlbFt?Yg3lKY^D9R z`pUpAEUKR&hr6ngkteB|&G>p#4*jV9J?}aLZDVh5*)U6RW~8e{t><>z8L0kFi;cZ4 zeB6<}|3@1zJYmK5_J$p&n7CrqF2(UC>kEjyIUvYZhC8G6ll+)8Yl2Jm7tn8;jmlzn zZ50gw6`L29IPiC)>3#j#cXVCsRx31#5xJL1X>>+GB_vGe+y3&`bR2UAIk%wbe!Jhg z*$Obzjt#K8z+P>f@fW0CWVKdPWLTkb6u+iiMgWc|`%`GNH2B52DMYg<_(PXFnbR%J z&HiK9>)il(UoKgc;|I%KiBi>-KGV=N(ZsqK%U#(zY?_BnfXZl7&L%fG&5IMqL?^MiRYbP9ibZL*G}-lLH&yY|rA`IkGK>&jWm$ z3E^6kpgBH7W$fYH7bsT~@MWU$ZQY~5WoFT@_>g*23rW0?Ql;u^qzHF0>iL#NbvWF2 z-s0IVV(4Pbtc9DfIg%`~wlG&%{3l{pzI3G1*JEeoP+ZF>{%Y4D%23D1i*iif-|$Fp z-BxQ0DJwflO~nW==hDDzGX-mV3LXupf~{=;4NPsEA^QL-6U%06xDzezBjx|?BCj(B zn|3ci9(>{ya@=_Nfg)m}6~oY+(^te>FT$*|Zz2ibMdcUaD@V}hI>{)C9#U-lfusdcM(;JtUoTscjoxBaeMuNNB!p$1(nbHq)J|Ep zki-s;#gVt%WjEI~mhb$5>eQ~0T0+$I9z<1z{3BkbLuPLH`36U!A~wAH*IK^ z1AnG!we9ZEt^3_xqCpirsM^N)iPIW@+3y?P6n???H;gWmVB3a*AP(D?>g5UnoAevo z@8DTmT+yzhxo%GfmwO4YX*TFQOn$)2MTH)@5$!i3B(_Lce7OB%1`~HQ;-%D*Rj6u16R{pe0Fo3*Z)BD`% zmUQ$kE8Yv3$vPczA^H^u(j48-QY9=MEe1#oQpCwLXiMnk{yE0~?deHl6}-D!#%0ONP6bdM zFkqWK^a<7%?RczFnx5O|in7-p@FnsxvYg0Ev<6(A z0eZvg+Ma4DF|V1zSv#~2SBev4^-sLLdX0=HwY+1zXr>TYeCa;cwwvh#?>+LvPtIQHZ=HAvljP zcR)O$s|EMuiXDDeR}gda=_Xq)Kq@_Qa@3I6Dg*QxEHeBZAc==@-txG<*X$V93^GNN zCDw#^zXbH|9t{!?s)Hi`O+|jK$%wpcls_L`lW)0n9cxg9hh;9w?=B&O-gjcjQMWu zDYxvsxvP{9w_@JtdzPDLidD<+^C8a^^-pB;NlmkfHK}+RyCTCvW762+?0CkZLp)6P z-CHtbLYSht)k&MWVXv>=Gd-#$ZsG+D(5Hdm z`$&U&q2Sh6L?8JrO}fkMM4b1CG3H~#OXJW;kr((N8yb^}TKZUVPbH`BvbQj*1kT{q z26<%-RL#(!{>+IuR<5#xmP7`+A%DHCk1ngR^Vb4PUufzsyrlpy^Fwyxb$ecNnd9WT zgMPhSwzM+%oONxv$OF^U{5!BECx2g#{{I3LuebM|Ra3%<=~^}?8XJ^LHc^dTcCip< z%SQ|Y4JJ}m#(%|0tiYu%zJrl5SPqY{%#k6ukaGRFPH-bX%t`*~)h`OK7U->GF(2mn zR<&;O69}>{r#cIRr?C-E_Kg8R`-}}Oc&_~m*h};crL;(07pE(7Z-^su@JPl;F*NXo zyPw0cng!8vMnHV^0s7^JC_yp;AP~DAn!>AXV?O=r?>02F9L3CA{Pwe+%Htz37p4eQ zu?j>@UI{9 z2dw!|7-e-lvayhb+N03m_FPdY@uSmMKrjQlg9dK`B6H(lefC^7`3i)CE$$(J>~xV= z{1D*rxD6c^;g=A^6yf)2I>^@exeEBO~Cs{MWybVNfY;dYlZlbvFd7k`hSs*y}`Py z^tS<1-{sl|Gw0IFcW3JQ794xgKBuMQ=`EIqm?W!2NQuYJe>prhHxF27D7`tXt|&fN7KKmdGF#5&77- zA(G%MHPOAr%#0FHZnTw*=@Equ$!ngto8P9wO#Pmb7`|3^nQEbN+Pu)1WYw@;k~5tT zIkDV-qlo_s)Z|f#2)lu%LUQ7O;v%QTANX^%!a&(jRfl?W%L)UUX*};fZKTCrjYhF6rxsXl*+JIF=#hl_Q9UOY%2A8q?qYoshX7x7yey08FG0v_<8Uq{ zjk!X-HtS*xCR)?`W+w@TbADSQr27>rS^NDl#>~cYKY7kc@8{4>4XS}bxzTbI0SCNm zHOW4q&cR9zmuWLd&#$Zg_2tl#*Mn8_iNvQ|xokFm7EwY)~jEf5v)V< z4HSDp%XI1MoYRi|&)Xn2;~wYC$l0rytniH%No7t+oSPPLHpAg3pq|NR%s)>ce(!%m zha^#w`%i>3Y;qJxt3EM@R~>glC^H%9P#+)3T4qS0odz&RmY5C*CWxFGqpZh`&zj&Hpd7*N!^xDYs0`Hj}(J7d*dDB2=SDCh?y@m+G~6YKO1Al!PMZ ziWnE}dN|9sPXWz^!|A)t?v4(o_kpC-@xyp{cuj&%jyxHWLX55<6?)ZM{Bty(OZIaX zD~)BDw+|?A3>xV+Ta`8nI#E%Gyv&TI>JmZn^O9Ic^PuPLW31z1?4ZI znLTfdqLCL@P1?wlMXi9}=1#8_$@!NRTX~0e?uZ(*uguDl5~IE{w?RB(HKajQ*=yUvIFOzm(0Gr#x<0Nz&*9TAVMo$WG!nf&i*z3g6_O#1vu~Es>>nK`*{Bt#0ZfDjFKG;)-QV-aY}# zajY=Dj!)dVF~kNO9Q*MQipjvvM*rtR5!j6NA_r7g%&a%2S-JL)RQ&ZgLX3@b9Vb{aHPc%hC4z81l6zOF#h##p< z@360!xV@f!1Pj5IK9HlN#@+2ZDlx=@HpEPll+gEUhN(c#+VW^6RRDoP=&v;ULd8PQ z)?F`=d1Q~>vF+b_r}?@}4ukq#=Z>)ovvEf zRUe`@TBuA3!=?-)xR4kdVZtyg){fzDS3qZ0@IXBY%@cXY67=~}gV(qTTvhx5C4U7b zx_&CFFGdxuY(`!hM~fiIQJ@MpcSj`VVR9=-^)LLSlQu6~16PJq5lJ z<)D7Cvi*fr9|5#^(ct2ii9%E*(9svp=&HlsWR%On-^{r3J_-h)@{`@l9ve1|ILBsE z`JDjPHxzNc$Hv!n1!J~nL{0WFi#p?~0X;sY@S%!u__B%fk``%**DD-VcJ2@OC6_Qcl!$M<-5vnX*?BTSch#G zLx)4xvA-f;P5TX|D$4a+UANdITUt;4-f_&%dh>8&4E}%O0x%wpK+$|+z>ze1EN3tw zF|sXA9YDG~!SXCNxfn^x`bV_hOm^D&Gl{GgyBNDUF{>*33oyHu+@F-K6u(Cz?=4(0 z%gL~HhVZS?NpDqcuLG}uJ@R$cJrwszv(Yvx_hfmo(qNEv3WQcgo5-pH3Mu%J}D2JZ^ ztsi|O`sc*2AF#jZ&5sY)AQ@1_l}G=m^ql=r#dQv`9Mh;4)lWb2?REw|VoVs`e8iue zL*)~L1d-!Uk$GK#Yjlw2i8-Vzs>EK^>Ip(9o&r}fvMpBE5rkQG1WEWIb5 zou~d5d)HazAna~y7wZ{*Xu9x&-iIpPL^)#VWM2@2DTuHDkD!}uUz_!^_?q(aBH!bI zYO3;iQ~d#AOCvo%gW+ocMO5hGqru-6l{+J5@!I{i;f|bEb|h}cf60ndV+jANeTNGS z)LhwtVCc<>Tb_72>WO$6RS|_^5)!BwQIhA_h0v7HOnU(nRyA-&sIn))?2o}Bb-nog zkY=~FcHyV@*?Mgh4=EP~fCkvleilOLAhuo|H0)w~V67fg6vVYH&{M^k$Wbm^(DXP5 z>1WQ9%#J*lWg3fdl9Q;V;H)lKpLV%L{sp{N--n`|+7yi)SalgILfY+r3&txq?j^>{tQzV0G}JW44rVis=#5J^ zPS+Q2)9Vhr*sDHInyPh|W#idcJ=$grz#Bd=Vq|B1BbE>Kw;rv;I^e}fZpIHGZFI8s z#XYy1%>4WBn+N}c@z+Ed7jU2ka$7N^ z%xts};JRiNvtihJA?%L>>wh#=b5_`EXpJmz95pcA#&3{(Uy=qbnyThnMGP&&g;NwJ zn*KLOIHzkPde*sJZ>Y2&M%Lxu&Zn*J&Sr_CZxa5Y;Fo5<+&27619@KTxBeli5W0aU z%I1u+KUyveuyYzgdY#CS5iA2m1N_B_0Nv|yJT9rFyOGGyJ zZ8rGVP$C8Yt3X{6Eh#NE(7W=uNiP8WYB3P?nfi8MGNz77l=S>J(LtUd2-O>(v*TR@ z>oW7&^1qDq(o$PWh&}HnvSg4c*b%AfDMT$erfTlV(c>HP3c^w-D1N=Mr!Xael|A)n4W@%RVmGO;F;rdL` ziw1#)=b8yr=pF|g`GpL!<~t!w_3SI|A+wpeED_{i_aWJ-6fdAO^LH@S3l{Ur4VVSc6#7HjU4m@B) z*_sFVeIzTo$&unsnPluv-yMP3?V6ZL-!A5Ta$PPHgUUqYRCSJ57N0dOdHBh5K8(s# z2vi55i+Uc~6MU=dwVo`H6#MEPVZmq@OSJ{DdivZ;9V>WrgYEjRhiOcjK?R#>BhoeZ zo%<6!n6V1zA&kmdcIm++~6Yon{xl~bmB;EL5y+sTE`QFrMr=v5~JsmC$9&pV2 z2a;oh@Do~!O$UNBE$olHcdoxgrioy_Fv2BP(?C>QD90~F{|Q}GR-4u8c>q~rR(dy*(Mnwle%oHuxOuet;e zp2xao?Ei%yj8j&1XH$&GJ0Kw5yP^?9vme52=R{xeL7mhc_>apb$X+7nF9dZw41A

    +b3W#03nX7b_t42XsnHp;2;*yR?R*;nc^ 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

    R&g_Ngh6%$SD{^p6Es^E&16u^4!q?orjufT7HqP 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�T+C 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
    52uhxTxKE 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

    #H;GaL!gU}=$P%<2~ueS;pyABPV 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 literal 0 HcmV?d00001 diff --git a/spine-ts/widget/example/index.html b/spine-ts/widget/example/index.html new file mode 100644 index 000000000..30026abc2 --- /dev/null +++ b/spine-ts/widget/example/index.html @@ -0,0 +1,30 @@ + + + + +

    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/spine-ts/widget/src/Widget.ts b/spine-ts/widget/src/Widget.ts new file mode 100644 index 000000000..c651b153a --- /dev/null +++ b/spine-ts/widget/src/Widget.ts @@ -0,0 +1,261 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.5 + * + * Copyright (c) 2013-2016, 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 and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED 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, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +module spine { + export class SpineWidget { + skeleton: Skeleton; + state: AnimationState; + gl: WebGLRenderingContext; + canvas: HTMLCanvasElement; + + private _config: SpineWidgetConfig; + private _assetManager: spine.webgl.AssetManager; + private _shader: spine.webgl.Shader; + private _batcher: spine.webgl.PolygonBatcher; + private _mvp = new spine.webgl.Matrix4(); + private _skeletonRenderer: spine.webgl.SkeletonRenderer; + private _paused = false; + private _lastFrameTime = Date.now() / 1000.0; + private _backgroundColor = new Color(); + private _loaded = false; + + constructor (element: Element | string, config: SpineWidgetConfig) { + if (!element) throw new Error("Please provide a DOM element, e.g. document.getElementById('myelement')"); + if (!config) throw new Error("Please provide a configuration, specifying at least the json file, atlas file and animation name"); + + let elementId = element as string; + if (typeof(element) === "string") element = document.getElementById(element as string); + if (element == null) throw new Error(`Element ${elementId} does not exist`); + + this.validateConfig(config); + + let canvas = this.canvas = document.createElement("canvas"); + ( element).appendChild(canvas); + canvas.width = config.width; + canvas.height = config.height; + var webglConfig = { alpha: false }; + let gl = this.gl = (canvas.getContext("webgl", webglConfig) || canvas.getContext("experimental-webgl", webglConfig)); + + this._shader = spine.webgl.Shader.newColoredTextured(gl); + this._batcher = new spine.webgl.PolygonBatcher(gl); + this._mvp.ortho2d(0, 0, 639, 479); + this._skeletonRenderer = new spine.webgl.SkeletonRenderer(gl); + + let assets = this._assetManager = new spine.webgl.AssetManager(gl); + assets.loadText(config.atlas); + assets.loadText(config.json); + assets.loadTexture(config.atlas.replace(".atlas", ".png")); + requestAnimationFrame(() => { this.load(); }); + } + + private validateConfig (config: SpineWidgetConfig) { + if (!config.atlas) throw new Error("Please specify config.atlas"); + if (!config.json) throw new Error("Please specify config.json"); + if (!config.animation) throw new Error("Please specify config.animationName"); + + if (!config.scale) config.scale = 1.0; + if (!config.skin) config.skin = "default"; + if (config.loop === undefined) config.loop = true; + if (!config.y) config.y = 20; + if (!config.width) config.width = 640; + if (!config.height) config.height = 480; + if (!config.x) config.x = config.width / 2; + if (!config.backgroundColor) config.backgroundColor = "#555555"; + if (!config.imagesPath) { + let index = config.atlas.lastIndexOf("/"); + if (index != -1) { + config.imagesPath = config.atlas.substr(0, index) + "/"; + } else { + config.imagesPath = ""; + } + } + if (!config.premultipliedAlpha === undefined) config.premultipliedAlpha = false; + this._backgroundColor.setFromString(config.backgroundColor); + this._config = config; + } + + private load () { + let assetManager = this._assetManager; + let imagesPath = this._config.imagesPath; + let config = this._config; + if (assetManager.isLoadingComplete()) { + if (assetManager.hasErrors()) { + if (config.error) config.error(this, "Failed to load assets: " + JSON.stringify(assetManager.errors)); + else throw new Error("Failed to load assets: " + JSON.stringify(assetManager.errors)); + } + + let atlas = new spine.webgl.TextureAtlas(this._assetManager.get(this._config.atlas) as string, (path) => { + return assetManager.get(imagesPath + path) as spine.webgl.Texture; + }); + + let atlasLoader = new spine.webgl.TextureAtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + + // Set the scale to apply during parsing, parse the file, and create a new skeleton. + skeletonJson.scale = config.scale; + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(config.json) as string); + var skeleton = this.skeleton = new spine.Skeleton(skeletonData); + skeleton.x = config.x; + skeleton.y = config.y; + skeleton.setSkinByName(config.skin); + + var animationState = this.state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + animationState.setAnimation(0, config.animation, true); + if (config.success) config.success(this); + this._loaded = true; + requestAnimationFrame(() => { this.render(); }); + } else + requestAnimationFrame(() => { this.load(); }); + } + + private render () { + var now = Date.now() / 1000; + var delta = now - this._lastFrameTime; + if (delta > 0.1) delta = 0; + this._lastFrameTime = now; + + let gl = this.gl; + let color = this._backgroundColor; + gl.clearColor(color.r, color.g, color.b, color.a); + gl.clear(gl.COLOR_BUFFER_BIT); + + // Apply the animation state based on the delta time. + var state = this.state; + var skeleton = this.skeleton; + var premultipliedAlpha = this._config.premultipliedAlpha; + state.update(delta); + state.apply(skeleton); + skeleton.updateWorldTransform(); + + // Bind the shader and set the texture and model-view-projection matrix. + let shader = this._shader; + shader.bind(); + shader.setUniformi(spine.webgl.Shader.SAMPLER, 0); + shader.setUniform4x4f(spine.webgl.Shader.MVP_MATRIX, this._mvp.values); + + // Start the batch and tell the SkeletonRenderer to render the active skeleton. + let batcher = this._batcher; + let skeletonRenderer = this._skeletonRenderer; + batcher.begin(shader); + skeletonRenderer.premultipliedAlpha = premultipliedAlpha; + skeletonRenderer.draw(batcher, skeleton); + batcher.end(); + + shader.unbind(); + + if (!this._paused) requestAnimationFrame(() => { this.render(); }); + } + + pause () { + this._paused = true; + } + + play () { + this._paused = false; + requestAnimationFrame(() => { this.render(); }); + } + + isPlaying () { + return !this._paused; + } + + setAnimation (animationName: string) { + if (!this._loaded) throw new Error("Widget isn't loaded yet"); + this.skeleton.setToSetupPose(); + this.state.setAnimation(0, animationName, this._config.loop); + } + + + static loadWidgets() { + let widgets = document.getElementsByClassName("spine-widget"); + for (var i = 0; i < widgets.length; i++) { + SpineWidget.loadWidget(widgets[i]); + } + } + + static loadWidget(widget: Element) { + let config = new SpineWidgetConfig(); + config.atlas = widget.getAttribute("data-atlas"); + config.json = widget.getAttribute("data-json"); + config.animation = widget.getAttribute("data-animation"); + if (widget.getAttribute("data-images-path")) config.imagesPath = widget.getAttribute("data-images-path"); + if (widget.getAttribute("data-skin")) config.skin = widget.getAttribute("data-skin"); + if (widget.getAttribute("data-loop")) config.loop = widget.getAttribute("data-loop") === "true"; + if (widget.getAttribute("data-scale")) config.scale = parseFloat(widget.getAttribute("data-scale")); + if (widget.getAttribute("data-x")) config.x = parseFloat(widget.getAttribute("data-x")); + if (widget.getAttribute("data-y")) config.x = parseFloat(widget.getAttribute("data-y")); + if (widget.getAttribute("data-width")) config.width = parseInt(widget.getAttribute("data-width")); + if (widget.getAttribute("data-height")) config.height = parseInt(widget.getAttribute("data-height")); + if (widget.getAttribute("data-background-color")) config.backgroundColor = widget.getAttribute("data-background-color"); + if (widget.getAttribute("data-premultiplied-alpha")) config.premultipliedAlpha = widget.getAttribute("data-premultiplied-alpha") === "true"; + + new spine.SpineWidget(widget, config); + } + + static pageLoaded = false; + private static ready () { + if (SpineWidget.pageLoaded) return; + SpineWidget.pageLoaded = true; + SpineWidget.loadWidgets(); + } + + static setupDOMListener() { + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", SpineWidget.ready, false); + window.addEventListener("load", SpineWidget.ready, false); + } else { + (document).attachEvent("onreadystatechange", function readyStateChange() { + if (document.readyState === "complete" ) SpineWidget.ready(); + }); + (window).attachEvent("onload", SpineWidget.ready); + } + } + } + + export class SpineWidgetConfig { + json: string; + atlas: string; + animation: string; + imagesPath: string; + skin = "default"; + loop = true; + scale = 1.0; + x = 0; + y = 0; + width = 640; + height = 480; + backgroundColor = "#555555"; + premultipliedAlpha = false; + success: (widget: SpineWidget) => void; + error: (widget: SpineWidget, msg: string) => void; + } +} +spine.SpineWidget.setupDOMListener(); \ No newline at end of file

    =?C7Uin6v{h!j!iYA*tVhNDfj*g70Zg~q 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

    X3+AJ&(j-aVIQZck;r-jHgiXeS9kIQh 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 _ES8q zHI0fahve(BttnyQL_itS*?kq_tH#4)S#e)Z$NP-*1UqO-?| z@VQ%puc2jPZnJN|jgTqfIyKW8vZ9NsHa(h}ja6XVl44btUs6K3Y_7N-ONTe=G86CZ z%z%?FO3hbE%?V*{R8*AZ!!Lp^hIPDRUW^{hD&Kui=4rvI#pm_uIMc4 z-l{seOzjLv7;%B-cN)k)7Ft=1_CGdoa>d{lr^$m!9IY-Z-vn2Am(jL8`&`7Od6~;9 z6q9{l4m7i}kN^CQ{PiR0E>mi%S>N_o-ewP!Z3WRTq6br1WX;w2z=Yx=`@0SL8=9lu zp-tMOwP~gGI=r`a#_uJZn`ifrYK`nmutH;$w~iLkGKG0#ri)4KEWBC9boDw%moe<0 zZ+N_1;N%sn!XctD${RH;EPq^V$VfG`d1UJ=K$>0GI-d5M7o3?w;=y&i3PPSXSZt4} z-Y5%g9f5Py%yf7LS=m)CJ}gSv8Qoo9MDJPrR!glHT%D*{=8Nt3d&re4MxjIH-i`K` zgk!qej6eeD)q(kuC|@{~<+c6kxkx)~m#F>e5NWN$HwXdFAGYo8;is@W;p^3YGTYP5 zzelx}U~cDp z@wKB6by2bzNSU5~ZnU!p+N?{2XBgkMVOY97Jc;Oaw1;@!j%{`Zs?8`t&!N1vFge`< zo*3G!?%@={U*G#{z#4Y&Ns5)GmJo#$m#qh|?D>6$sN3~nUrY=w2u85SMGF%&GHTm< z6|XzJ4m+-dVVqmi|JylR=aabKE|4@eJroUlwYN@|wEe94dRR92OMrYJu4x9gfQ3s2 zvR)-VXCls z?O`EvH{e5X+k?ww!1Zb z^X-umUM4Nx)3#;h`lsjZ(_D%?54IJ)||8sUU@HtOL^!kxojHnCZhPm9_ ziYfT5pnNrAGL4k|^rUyq`+32&k*;OY9!~FawEqF*OY_hW%H2{!qQG{%&{RtEcze4w z5Qao8UYE6miBC<}6+O#2!e!IF<-pcgM9CvE8Pw!nZ^N?sw+C`Vk3JwHqj~l)a(2&t zHorJQZl71U8Wr-1KOM1}UGPVAyLPQh6VXrG+0BW9!qKQEnq|AED}`fqCt-_G0@J0X(3O0vR%?Ha`KYiopE(L_`w_9rYbT|0=&(MDua{$;2qLT z3I5=kz1=@92DBO#$Gx*U7*#$76fAQx_D2hZH#EoH6)3Ah&K9`y6{mfHp_Yxe+plQF zP5Sx8+&)BMj1X*XFX7%yKcrOBcG3B`h1tR-k3+f6R&&}RryZWbl^xzeg0>Rf84Wp` zF}@F(OFCZgXC1H4P#<`I%H8Ja`bMblvv527(e)0dtm*(@LVfaIg`c3cKi^Owd;!nN zns`j%P8Ht0gQ?HUzkf>`y{yqRDo=Vxbwbas4oq6TUFkqR?sUpIpq|UUl=Fb2$BSna zSSG@4NRN9dJ-UqzVxF$8Gd-SeT>qtNbhX7h?P!;U(r%Sj=5W7*#1PQx-Nj%KD8a|S zuU^m399B;h=lI0mUFN`_Qs6XFPtutGcAf+S*I_q;*=1#kz}?*KHCzh;6bC?ZrU*!@1F_sXF=e3UT0 z(0w_XX{bG|S`a*K>lbyifk#ecReK@XTs()_@;>zNP+ll2=~w<^{aX?Z@w4eR%9!L6 zOa00zh@sk~5dZJrGu)KJ_nI!FPsWvBri7S(4}#QNuwUyWzJ#1kddU?1+U@k9DKGaQ zF3;OD-^i6<$!Za&%sxK7&JgDDCwi&NSHG0E3$<+ZXa?uHt2+31{_@jiV-nqdN|R9& zzCD%kdds}NKe}Vr$hKKg@`2v?gLe(d=TVp1+UAM1o%g5ugjuT+e1f8rgcZ^X83}83 zRGW7EEWUSMifH-a3CQU6k3?Y$_YGe_wz9T4bVdnysadw2Gft?>4f94e6(pslZ3|5` zR0RcyIP2~XfAT_Q^A!2Br$To_M+sRIZ(FFUL8+-Bq9p5C_$vMo`h;*GxedS{C4=1G z=NYF?KDbtD1mGnf99+Fxgq?sb(x(;psdEv=K@t(SPa- z$F=Qf4z2w4d{#Vvw;5A;7D|^5T|U+Fd*(reYrj(j`cK^(ulY`oP zd*;D=pai^iA9#S3yZ^fHxRv1{3Rj~w;#UFSajp%TjLT!rL;j62a=Cv}X>Z(%sw)B1v{$v~c&hOt21Ze%Vy8et~uCD$-AS_%0+}#7` zHVTDe3@W4{O9rEg1mb$MMPei!y9g8LE&ooM+z@2L*_cHjx_fUvzkbfIIhF{fO=Iy_ z@mC4|lo<0icD){F$_5w}U~W%(fio4CkPxuFEo8O!gtgURBV*`=TRrtcH8TahkS_rP zdDcXjl}%BWvlK0xJTx&#(`xZT)Yy2kaqHJlAQM^Q7dFnK%WA6u<48!X?D*jBZTNm_ zN=~%2_VkBGOz+sSTQtpyr5`E-Ao!xl|PIO+^M z>am!JugS?V^L=wki4zPIl^XPInn)Bxm$~1ONR3PKS$0(Qb}G3o)(CY)W>2qN%6*v9Y5nW-4~huyu{PI5|H|0AEVWR>lw`Q4YZLJZ`!SS@3hn zJJ-C$uU4$dDY2%+XfALH{L3rk?mA!@%N2{Z+F3%Oe$lW}ovjx?b~j(_A9(2nV)$x2Pd zny$h^dGAw(a1?1cE#@OHOjEkOPNRre&>J4@?(Bg0bX1)y6__C`lspQT$tlZ!eBl74 za^+h05rZcP$hpLIhuh_O0EdQV*kZTzm`+hp5Y=9EQ2 zof$C{(A&|VTGqg5ih*%(C;Y3iNijWhFcH8f^sZbd_9a#5GuQgH;0~^3qB+@366_ni&0p=D1i#HadN1&r*yf8S^e%U#?Y7 zC7vC@C^>5?1N$rY9AGvLA*EDb7r%+6RtOHbbAMNR6R6Du^)&UYTcS9Z>fT$(vRJB# z2d`4$l8BwzaC7^zHXQ-gKG}(U<5Na!`HmROE;gJ~f;~ZAUldKmHsX+~=pdm{`Zysw zKdZ-L%Cl_3R+tUdrj`Q*V&cI7Jeu@I!>!_ za&3%PF#2*cBF0|qdVY`s(I7>8IZ|h=L4PbkQR6l2=Q=6IF zPt?)aq-0yEcSCv4*u9EOAumZ*_|f&0^qtC(3JR|GPYDd&ej=&Wl#|mC6!eenq-TLrgDU8&4Fwts?Ypk6o^hI7QmXVRq$jGdbyRu+(7G>YV61h?~ZQmx-dreRd1lH|M zp7#5_Z6zWYi`X4*vnpk!cWpU{-j9a)`w$d?(-BTWQfTBW?&p(Y5L2*?8 z8S|K|KqN&jfyq|W$SCwb<+EYd$4XAlj}zh>of9fF__UO-Ku-GUedA+-hFiS`_4H(G_%`P35h%8Y8ZbN`ZD>*C`@Wr;+@|NC&V8lXlQ4$19C|!ZF9X4h-Dgno?edDO_3YW&Zjg+6 zp2y#Oc+T;)$EyT^3ZTvi&+wX7Oe7FIJ`Uaa%QoYibmK!3LstnMERAq`I-2TOu5x^G zF)*kIfw{tNx5z&H3uq-ba$Xu53dES2FvE+FGGA_QbIZYSw-w&0etkJw#FZkK`;|

  • #H;GaL!gU}=$P%<2~ueS;pyABPV z`?=s8#Lk|4K0e+Qv@N4KssF*s|4iDUyC0(O`Bb$0>bEeC2N#s$woq%hyk8$CV<$=6 zv$u{a@4^r21Fv%C#?qlvsNaxt_L(jXyoK_Olw`v6Ug-TaTELW6RhQJ5TvZnsF$aVo zAA5>~ulK59Tr$_8%b(1GiH*(sK!G0sD{h+$c$xFZb!aBA_2R!*eyypWG6%@@fAd-* z2JQWDB0{)wr{o>Xj|zylrNQjUG65fY?hV-0u+q6A2hn#ZMdl)B;#>;(K5)vGFywrI zh~nhIUhjB*$kk}R)R*>}NLB*f0u`1?SBH*;!p7rA;c?e#o0i}#>+#j(dFyPfl3))0 z7mzn=KErWF?6y&9_Sw?K2)G#@9u`7?N_GPNRiN>5`3u!&pSrDOXw2_N^!8|RC@DeY zYK-uVU*{}Tl36hkx zL~B$Bu(j#_ zTkhV5Lt7v^dDI_>)lT;LSxxs0>Y1t!x-LVn6+tkDw&L&+e7L;;eDvXnllCRL-PKl( z;M*SZYSZNVQ<($o>yClOarZNh>-z9DJJ5Y8P;-J=hDyeeyz+T2hp4D1*d+40`g-2? zvvAl=c6JCg^#$G~`7$QiMD>3bN>)T-rSZqMi!D^OkRGVkbOLt=1SHLN(L7ho9}kp} z6d;wg6o9Wg#shRX`U}{8cP-DAE1P3J?Bz+#PQc9Z0TB_A@m|n}o7f;C%vAH%PEvKD zzw&YJi-3T+fHWt@OLXuIzHN-jB=BEQm-he05Drz}LH%D>nr1e_S?<>Ew&4ploU^ z+?-sM7~WjEN4#|432eG&o7hV!A)HQX|F_QOB>{HKMep zSMblE=&M(Bu3=%V6``S_HYH5uB_-D+8X!0(0g0CjCVcb}<8BDPAMMn`ULC*3-tyx| zm|gx3_4Il4F*w~Yw=rxN2`bKT@02dWwa#C8vj+z^jqcPU)4CLx-1mM?RxDSqHJtzmozkytbTrJ$O4bM zEq}*cQHRSn?y_!me>=KVyaV2mCV0==HgeEfyE-7+RH&+FbPJZH4=2-?dVxGZY3-^6 zd$1`k-@J@Y($xYsOmrdoOXy!BtvCc1{i<0%b7`yfQY~_ZAp|d#ULI&2V>Azg?6?1EPt;X1gf?+8(a&%6b%BiLr*;U8vSsoeQ#yS=rgM7t`8D0fDL5IIHrA&#`Cm3Fby^ajDA_ISKcBxO((^czSMXsXR#t zzs+gTYbp|P)9JPoxl=`$#KMpqs_Av=eYBlR*oU@~%CdxuJxxQi8XGXwR<#!-wQOWwivJt}TERRf1j1QY!Sh%QaYzz_!9cEkh448bK zll0UmP4H_W0K)3_(D;L>tejrklpzXb%x%EGh(RC+a~41>ZN76Ens?zmk`)}Tf`Hn8RwBw98;^gz%T>2I@N`#i4Eh7?SbyR` zl;2T6!^|MFvb7XqQ1tTB=)4S;^n#>7>uh>6#Yjs%-Sa_;Nmb-goYmfOgVo-Z6g71t zbstlnn>a6VVJrdr2l_<`$EKDtcKb>?zs3kW7K7n>{f1y5_Sb0d@rl_&d8r6GJieNx zp+bvtNXl^uG!2{4coTWvDu)$GeQ(>JiIIYm#0}-|6Clp!i$fD(Eded#PO3kAKJ$|| zc-p-kw6-)&K=hnCY#rPBU$Epo7f^Sx_*2QvrQW{1wH1-xCL-k&C8t0p=kPusd+IYg zIT`=s>fkEHiShjtRs2wRSZg2fm|I!-|Gj50%baBO$ZlSgl^!8gr8qb=;!`!tp`m(| z__cB*|3}@8=1)WqlZ-T<1=Bxx{eXt)W*0Nd?RQO^!KjL zQWo+QatkUGkyXdWBBP#J? zVd2;aCi$pd6BQn1@olV`y;r>8oILGsQvmDe8PftSY||d26phtB%RT#M&+agQ-*D z;qS%Cf%69p*x3)Hb~i*EznjXxXYyM}h64`r1}AwL;j*%4K2v+G)bjUYv9ov^`#kp6 zHo>ixze4}tZAnLuyB^oZHQ9^yi#R*}Na*!fiD6b|o<$;}2;w(j+_jMF$heSekpiu2aZt^JUH zzdJozN=h!8GBYQu8l!_6D@%NY6^fJEG8}s-GwN9G1XDMk>@O{~eTu5E zDlfh`wA%%#?2BG+r1nKMHqBFS6kFJW9%lVDHPDn1`)=~10J;c)m<-_Ka#=SNI6Qs{ zd&zGizWQw|`xj)jv9HV4)Lmid(LHr57yup$570F*&+Wg;<)$@bdXk#@#-+NwITrUUp(` zY}f36gU(_>3If6YG{x#Brzq`#uCbuTe|)%=on7T578@S1x3h89He!tQoXAm;{pSqc zFH%A7!?pi*gb^+MCcpmr;Z0IZset`5KImJrE!Hw+b-%)*C;b0v3cxq^k9OQRC5x9> z>RnmkpU4)IrXTE$PW{zf79q}2;Y^4# zHmN>%z0GE!Yp+?06``7;mL#{s% literal 0 HcmV?d00001 diff --git a/spine-ts/webgl/example/assets/spineboy.atlas b/spine-ts/webgl/example/assets/spineboy.atlas new file mode 100644 index 000000000..e9500cc4a --- /dev/null +++ b/spine-ts/webgl/example/assets/spineboy.atlas @@ -0,0 +1,195 @@ + +spineboy.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +eye_indifferent + rotate: false + xy: 550, 694 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +eye_surprised + rotate: false + xy: 834, 856 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 678, 774 + size: 58, 80 + orig: 58, 80 + offset: 0, 0 + index: -1 +front_fist_closed + rotate: true + xy: 466, 593 + size: 75, 82 + orig: 75, 82 + offset: 0, 0 + index: -1 +front_fist_open + rotate: false + xy: 550, 605 + size: 86, 87 + orig: 86, 87 + offset: 0, 0 + index: -1 +front_foot + rotate: false + xy: 550, 785 + size: 126, 69 + orig: 126, 69 + offset: 0, 0 + index: -1 +front_foot_bend1 + rotate: true + xy: 375, 492 + size: 128, 70 + orig: 128, 70 + offset: 0, 0 + index: -1 +front_foot_bend2 + rotate: true + xy: 275, 330 + size: 108, 93 + orig: 108, 93 + offset: 0, 0 + index: -1 +front_shin + rotate: false + xy: 466, 670 + size: 82, 184 + orig: 82, 184 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 214, 208 + size: 48, 112 + orig: 48, 112 + offset: 0, 0 + index: -1 +front_upper_arm + rotate: false + xy: 214, 109 + size: 54, 97 + orig: 54, 97 + offset: 0, 0 + index: -1 +goggles + rotate: false + xy: 466, 856 + size: 261, 166 + orig: 261, 166 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 2, 117 + size: 210, 203 + orig: 210, 203 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 322 + size: 271, 298 + orig: 271, 298 + offset: 0, 0 + index: -1 +mouth_grind + rotate: false + xy: 929, 896 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: false + xy: 929, 835 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +mouth_smile + rotate: false + xy: 447, 532 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +muzzle + rotate: false + xy: 2, 622 + size: 462, 400 + orig: 462, 400 + offset: 0, 0 + index: -1 +neck + rotate: false + xy: 796, 819 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +rear_bracer + rotate: false + xy: 738, 788 + size: 56, 72 + orig: 56, 72 + offset: 0, 0 + index: -1 +rear_foot + rotate: true + xy: 2, 2 + size: 113, 60 + orig: 113, 60 + offset: 0, 0 + index: -1 +rear_foot_bend1 + rotate: false + xy: 64, 49 + size: 117, 66 + orig: 117, 66 + offset: 0, 0 + index: -1 +rear_foot_bend2 + rotate: false + xy: 729, 862 + size: 103, 83 + orig: 103, 83 + offset: 0, 0 + index: -1 +rear_shin + rotate: true + xy: 729, 947 + size: 75, 178 + orig: 75, 178 + offset: 0, 0 + index: -1 +rear_thigh + rotate: true + xy: 909, 957 + size: 65, 104 + orig: 65, 104 + offset: 0, 0 + index: -1 +rear_upper_arm + rotate: true + xy: 447, 483 + size: 47, 87 + orig: 47, 87 + offset: 0, 0 + index: -1 +torso + rotate: false + xy: 275, 440 + size: 98, 180 + orig: 98, 180 + offset: 0, 0 + index: -1 diff --git a/spine-ts/webgl/example/assets/spineboy.json b/spine-ts/webgl/example/assets/spineboy.json new file mode 100644 index 000000000..88bafe6a7 --- /dev/null +++ b/spine-ts/webgl/example/assets/spineboy.json @@ -0,0 +1,2412 @@ +{ +"skeleton": { "hash": "rPoYyBLFG6F0CGZ5wsUEBKDJU9U", "spine": "3.3.07", "width": 470.71, "height": 731.57, "images": "./images/" }, +"bones": [ + { "name": "hip", "y": 247.47 }, + { "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" }, + { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" }, + { + "name": "front_bracer", + "parent": "front_upper_arm", + "length": 40.57, + "rotation": 18.29, + "x": 68.8, + "y": -0.68, + "color": "00ff04ff" + }, + { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 12.43, "x": 40.56, "y": 0.19, "color": "00ff04ff" }, + { "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" }, + { "name": "front_shin", "parent": "front_thigh", "length": 128.76, "rotation": -2.21, "x": 78.69, "y": 1.6, "color": "00ff04ff" }, + { "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" }, + { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" }, + { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" }, + { "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" }, + { "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" }, + { "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" }, + { "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" }, + { "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" }, + { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" }, + { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "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", "blend": "additive" }, + { "name": "head-bb", "bone": "head" } +], +"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 } + }, + "head-bb": { + "head": { + "type": "boundingbox", + "vertexCount": 6, + "vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ] + } + }, + "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": { + "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" } + ], + "attachment": [ + { "time": 0.1333, "name": "muzzle" }, + { "time": 0.2666, "name": null } + ] + } + }, + "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-ts/webgl/example/assets/spineboy.png b/spine-ts/webgl/example/assets/spineboy.png new file mode 100644 index 0000000000000000000000000000000000000000..c336b66f633f0d12b65e95defc018d3b44ca48f4 GIT binary patch literal 607647 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