diff --git a/bin/pixi-spine.js.map b/bin/pixi-spine.js.map index 0762e9a0..ea09cb32 100644 --- a/bin/pixi-spine.js.map +++ b/bin/pixi-spine.js.map @@ -1 +1 @@ -{"version":3,"file":"pixi-spine.js","sourceRoot":"","sources":["../compilation.ts"],"names":[],"mappings":"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","sourcesContent":["/******************************************************************************\n * Spine Runtimes Software License v2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n\texport class Animation {\n\t\tname: string;\n\t\ttimelines: Array;\n\t\tduration: number;\n\n\t\tconstructor (name: string, timelines: Array, duration: number) {\n\t\t\tif (name == null) throw new Error(\"name cannot be null.\");\n\t\t\tif (timelines == null) throw new Error(\"timelines cannot be null.\");\n\t\t\tthis.name = name;\n\t\t\tthis.timelines = timelines;\n\t\t\tthis.duration = duration;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tif (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n\n\t\t\tif (loop && this.duration != 0) {\n\t\t\t\ttime %= this.duration;\n\t\t\t\tif (lastTime > 0) lastTime %= this.duration;\n\t\t\t}\n\n\t\t\tlet timelines = this.timelines;\n\t\t\tfor (let i = 0, n = timelines.length; i < n; i++)\n\t\t\t\ttimelines[i].apply(skeleton, lastTime, time, events, alpha, setupPose, mixingOut);\n\t\t}\n\n\t\tstatic binarySearch (values: ArrayLike, target: number, step: number = 1) {\n\t\t\tlet low = 0;\n\t\t\tlet high = values.length / step - 2;\n\t\t\tif (high == 0) return step;\n\t\t\tlet current = high >>> 1;\n\t\t\twhile (true) {\n\t\t\t\tif (values[(current + 1) * step] <= target)\n\t\t\t\t\tlow = current + 1;\n\t\t\t\telse\n\t\t\t\t\thigh = current;\n\t\t\t\tif (low == high) return (low + 1) * step;\n\t\t\t\tcurrent = (low + high) >>> 1;\n\t\t\t}\n\t\t}\n\n\t\tstatic linearSearch (values: ArrayLike, target: number, step: number) {\n\t\t\tfor (let i = 0, last = values.length - step; i <= last; i += step)\n\t\t\t\tif (values[i] > target) return i;\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\texport interface Timeline {\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean): void;\n\t\tgetPropertyId (): number;\n\t}\n\n\texport enum TimelineType {\n\t\trotate, translate, scale, shear,\n\t\tattachment, color, deform,\n\t\tevent, drawOrder,\n\t\tikConstraint, transformConstraint,\n\t\tpathConstraintPosition, pathConstraintSpacing, pathConstraintMix\n\t}\n\n\texport abstract class CurveTimeline implements Timeline {\n\t\tstatic LINEAR = 0; static STEPPED = 1; static BEZIER = 2;\n\t\tstatic BEZIER_SIZE = 10 * 2 - 1;\n\n\t\tprivate curves: ArrayLike; // type, x, y, ...\n\n\t\tabstract getPropertyId(): number;\n\n\t\tconstructor (frameCount: number) {\n\t\t\tif (frameCount <= 0) throw new Error(\"frameCount must be > 0: \" + frameCount);\n\t\t\tthis.curves = Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE);\n\t\t}\n\n\t\tgetFrameCount () {\n\t\t\treturn this.curves.length / CurveTimeline.BEZIER_SIZE + 1;\n\t\t}\n\n\t\tsetLinear (frameIndex: number) {\n\t\t\tthis.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR;\n\t\t}\n\n\t\tsetStepped (frameIndex: number) {\n\t\t\tthis.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED;\n\t\t}\n\n\t\tgetCurveType (frameIndex: number): number {\n\t\t\tlet index = frameIndex * CurveTimeline.BEZIER_SIZE;\n\t\t\tif (index == this.curves.length) return CurveTimeline.LINEAR;\n\t\t\tlet type = this.curves[index];\n\t\t\tif (type == CurveTimeline.LINEAR) return CurveTimeline.LINEAR;\n\t\t\tif (type == CurveTimeline.STEPPED) return CurveTimeline.STEPPED;\n\t\t\treturn CurveTimeline.BEZIER;\n\t\t}\n\n\t\t/** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next.\n\t\t * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of\n\t\t * the difference between the keyframe's values. */\n\t\tsetCurve (frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number) {\n\t\t\tlet tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03;\n\t\t\tlet dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006;\n\t\t\tlet ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy;\n\t\t\tlet dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667;\n\n\t\t\tlet i = frameIndex * CurveTimeline.BEZIER_SIZE;\n\t\t\tlet curves = this.curves;\n\t\t\tcurves[i++] = CurveTimeline.BEZIER;\n\n\t\t\tlet x = dfx, y = dfy;\n\t\t\tfor (let n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) {\n\t\t\t\tcurves[i] = x;\n\t\t\t\tcurves[i + 1] = y;\n\t\t\t\tdfx += ddfx;\n\t\t\t\tdfy += ddfy;\n\t\t\t\tddfx += dddfx;\n\t\t\t\tddfy += dddfy;\n\t\t\t\tx += dfx;\n\t\t\t\ty += dfy;\n\t\t\t}\n\t\t}\n\n\t\tgetCurvePercent (frameIndex: number, percent: number) {\n\t\t\tpercent = MathUtils.clamp(percent, 0, 1);\n\t\t\tlet curves = this.curves;\n\t\t\tlet i = frameIndex * CurveTimeline.BEZIER_SIZE;\n\t\t\tlet type = curves[i];\n\t\t\tif (type == CurveTimeline.LINEAR) return percent;\n\t\t\tif (type == CurveTimeline.STEPPED) return 0;\n\t\t\ti++;\n\t\t\tlet x = 0;\n\t\t\tfor (let start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) {\n\t\t\t\tx = curves[i];\n\t\t\t\tif (x >= percent) {\n\t\t\t\t\tlet prevX: number, prevY: number;\n\t\t\t\t\tif (i == start) {\n\t\t\t\t\t\tprevX = 0;\n\t\t\t\t\t\tprevY = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprevX = curves[i - 2];\n\t\t\t\t\t\tprevY = curves[i - 1];\n\t\t\t\t\t}\n\t\t\t\t\treturn prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet y = curves[i - 1];\n\t\t\treturn y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1.\n\t\t}\n\n\t\tabstract apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean): void;\n\t}\n\n\texport class RotateTimeline extends CurveTimeline {\n\t\tstatic ENTRIES = 2;\n\t\tstatic PREV_TIME = -2; static PREV_ROTATION = -1;\n\t\tstatic ROTATION = 1;\n\n\t\tboneIndex: number;\n\t\tframes: ArrayLike; // time, degrees, ...\n\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t\tthis.frames = Utils.newFloatArray(frameCount << 1);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.rotate << 24) + this.boneIndex;\n\t\t}\n\n\t\t/** Sets the time and angle of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, degrees: number) {\n\t\t\tframeIndex <<= 1;\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.frames[frameIndex + RotateTimeline.ROTATION] = degrees;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\n\t\t\tlet bone = skeleton.bones[this.boneIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) bone.rotation = bone.data.rotation;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (time >= frames[frames.length - RotateTimeline.ENTRIES]) { // Time is after last frame.\n\t\t\t\tif (setupPose)\n\t\t\t\t\tbone.rotation = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] * alpha;\n\t\t\t\telse {\n\t\t\t\t\tlet r = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation;\n\t\t\t\t\tr -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; // Wrap within -180 and 180.\n\t\t\t\t\tbone.rotation += r * alpha;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\tlet frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES);\n\t\t\tlet prevRotation = frames[frame + RotateTimeline.PREV_ROTATION];\n\t\t\tlet frameTime = frames[frame];\n\t\t\tlet percent = this.getCurvePercent((frame >> 1) - 1,\n\t\t\t\t1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime));\n\n\t\t\tlet r = frames[frame + RotateTimeline.ROTATION] - prevRotation;\n\t\t\tr -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n\t\t\tr = prevRotation + r * percent;\n\t\t\tif (setupPose) {\n\t\t\t\tr -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n\t\t\t\tbone.rotation = bone.data.rotation + r * alpha;\n\t\t\t} else {\n\t\t\t\tr = bone.data.rotation + r - bone.rotation;\n\t\t\t\tr -= (16384 - ((16384.499999999996 - r / 360) |0)) * 360;\n\t\t\t\tbone.rotation += r * alpha;\n\t\t\t}\n\t\t}\n\t}\n\n\texport class TranslateTimeline extends CurveTimeline {\n\t\tstatic ENTRIES = 3;\n\t\tstatic PREV_TIME = -3; static PREV_X = -2; static PREV_Y = -1;\n\t\tstatic X = 1; static Y = 2;\n\n\t\tboneIndex: number;\n\t\tframes: ArrayLike; // time, x, y, ...\n\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.translate << 24) + this.boneIndex;\n\t\t}\n\n\t\t/** Sets the time and value of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, x: number, y: number) {\n\t\t\tframeIndex *= TranslateTimeline.ENTRIES;\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.frames[frameIndex + TranslateTimeline.X] = x;\n\t\t\tthis.frames[frameIndex + TranslateTimeline.Y] = y;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\n\t\t\tlet bone = skeleton.bones[this.boneIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tbone.x = bone.data.x;\n\t\t\t\t\tbone.y = bone.data.y;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet x = 0, y = 0;\n\t\t\tif (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { // Time is after last frame.\n\t\t\t\tx = frames[frames.length + TranslateTimeline.PREV_X];\n\t\t\t\ty = frames[frames.length + TranslateTimeline.PREV_Y];\n\t\t\t} else {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES);\n\t\t\t\tx = frames[frame + TranslateTimeline.PREV_X];\n\t\t\t\ty = frames[frame + TranslateTimeline.PREV_Y];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\tx += (frames[frame + TranslateTimeline.X] - x) * percent;\n\t\t\t\ty += (frames[frame + TranslateTimeline.Y] - y) * percent;\n\t\t\t}\n\t\t\tif (setupPose) {\n\t\t\t\tbone.x = bone.data.x + x * alpha;\n\t\t\t\tbone.y = bone.data.y + y * alpha;\n\t\t\t} else {\n\t\t\t\tbone.x += (bone.data.x + x - bone.x) * alpha;\n\t\t\t\tbone.y += (bone.data.y + y - bone.y) * alpha;\n\t\t\t}\n\t\t}\n\t}\n\n\texport class ScaleTimeline extends TranslateTimeline {\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.scale << 24) + this.boneIndex;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\n\t\t\tlet bone = skeleton.bones[this.boneIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tbone.scaleX = bone.data.scaleX;\n\t\t\t\t\tbone.scaleY = bone.data.scaleY;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet x = 0, y = 0;\n\t\t\tif (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { // Time is after last frame.\n\t\t\t\tx = frames[frames.length + ScaleTimeline.PREV_X] * bone.data.scaleX;\n\t\t\t\ty = frames[frames.length + ScaleTimeline.PREV_Y] * bone.data.scaleY;\n\t\t\t} else {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES);\n\t\t\t\tx = frames[frame + ScaleTimeline.PREV_X];\n\t\t\t\ty = frames[frame + ScaleTimeline.PREV_Y];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\tx = (x + (frames[frame + ScaleTimeline.X] - x) * percent) * bone.data.scaleX;\n\t\t\t\ty = (y + (frames[frame + ScaleTimeline.Y] - y) * percent) * bone.data.scaleY;\n\t\t\t}\n\t\t\tif (alpha == 1) {\n\t\t\t\tbone.scaleX = x;\n\t\t\t\tbone.scaleY = y;\n\t\t\t} else {\n\t\t\t\tlet bx = 0, by = 0;\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tbx = bone.data.scaleX;\n\t\t\t\t\tby = bone.data.scaleY;\n\t\t\t\t} else {\n\t\t\t\t\tbx = bone.scaleX;\n\t\t\t\t\tby = bone.scaleY;\n\t\t\t\t}\n\t\t\t\t// Mixing out uses sign of setup or current pose, else use sign of key.\n\t\t\t\tif (mixingOut) {\n\t\t\t\t\tx = Math.abs(x) * MathUtils.signum(bx);\n\t\t\t\t\ty = Math.abs(y) * MathUtils.signum(by);\n\t\t\t\t} else {\n\t\t\t\t\tbx = Math.abs(bx) * MathUtils.signum(x);\n\t\t\t\t\tby = Math.abs(by) * MathUtils.signum(y);\n\t\t\t\t}\n\t\t\t\tbone.scaleX = bx + (x - bx) * alpha;\n\t\t\t\tbone.scaleY = by + (y - by) * alpha;\n\t\t\t}\n\t\t}\n\t}\n\n\texport class ShearTimeline extends TranslateTimeline {\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.shear << 24) + this.boneIndex;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\n\t\t\tlet bone = skeleton.bones[this.boneIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tbone.shearX = bone.data.shearX;\n\t\t\t\t\tbone.shearY = bone.data.shearY;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet x = 0, y = 0;\n\t\t\tif (time >= frames[frames.length - ShearTimeline.ENTRIES]) { // Time is after last frame.\n\t\t\t\tx = frames[frames.length + ShearTimeline.PREV_X];\n\t\t\t\ty = frames[frames.length + ShearTimeline.PREV_Y];\n\t\t\t} else {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES);\n\t\t\t\tx = frames[frame + ShearTimeline.PREV_X];\n\t\t\t\ty = frames[frame + ShearTimeline.PREV_Y];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\tx = x + (frames[frame + ShearTimeline.X] - x) * percent;\n\t\t\t\ty = y + (frames[frame + ShearTimeline.Y] - y) * percent;\n\t\t\t}\n\t\t\tif (setupPose) {\n\t\t\t\tbone.shearX = bone.data.shearX + x * alpha;\n\t\t\t\tbone.shearY = bone.data.shearY + y * alpha;\n\t\t\t} else {\n\t\t\t\tbone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n\t\t\t\tbone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n\t\t\t}\n\t\t}\n\t}\n\n\texport class ColorTimeline extends CurveTimeline {\n\t\tstatic ENTRIES = 5;\n\t\tstatic PREV_TIME = -5; static PREV_R = -4; static PREV_G = -3; static PREV_B = -2; static PREV_A = -1;\n\t\tstatic R = 1; static G = 2; static B = 3; static A = 4;\n\n\t\tslotIndex: number;\n\t\tframes: ArrayLike; // time, r, g, b, a, ...\n\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.color << 24) + this.slotIndex;\n\t\t}\n\n\t\t/** Sets the time and value of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, r: number, g: number, b: number, a: number) {\n\t\t\tframeIndex *= ColorTimeline.ENTRIES;\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.frames[frameIndex + ColorTimeline.R] = r;\n\t\t\tthis.frames[frameIndex + ColorTimeline.G] = g;\n\t\t\tthis.frames[frameIndex + ColorTimeline.B] = b;\n\t\t\tthis.frames[frameIndex + ColorTimeline.A] = a;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet slot = skeleton.slots[this.slotIndex];\n\t\t\tlet frames = this.frames;\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) slot.color.setFromColor(slot.data.color);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet r = 0, g = 0, b = 0, a = 0;\n\t\t\tif (time >= frames[frames.length - ColorTimeline.ENTRIES]) { // Time is after last frame.\n\t\t\t\tlet i = frames.length;\n\t\t\t\tr = frames[i + ColorTimeline.PREV_R];\n\t\t\t\tg = frames[i + ColorTimeline.PREV_G];\n\t\t\t\tb = frames[i + ColorTimeline.PREV_B];\n\t\t\t\ta = frames[i + ColorTimeline.PREV_A];\n\t\t\t} else {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES);\n\t\t\t\tr = frames[frame + ColorTimeline.PREV_R];\n\t\t\t\tg = frames[frame + ColorTimeline.PREV_G];\n\t\t\t\tb = frames[frame + ColorTimeline.PREV_B];\n\t\t\t\ta = frames[frame + ColorTimeline.PREV_A];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\tr += (frames[frame + ColorTimeline.R] - r) * percent;\n\t\t\t\tg += (frames[frame + ColorTimeline.G] - g) * percent;\n\t\t\t\tb += (frames[frame + ColorTimeline.B] - b) * percent;\n\t\t\t\ta += (frames[frame + ColorTimeline.A] - a) * percent;\n\t\t\t}\n\t\t\tif (alpha == 1)\n\t\t\t\tslot.color.set(r, g, b, a);\n\t\t\telse {\n\t\t\t\tlet color = slot.color;\n\t\t\t\tif (setupPose) color.setFromColor(slot.data.color);\n\t\t\t\tcolor.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha);\n\t\t\t}\n\t\t}\n\t}\n\n\texport class AttachmentTimeline implements Timeline {\n\t\tslotIndex: number;\n\t\tframes: ArrayLike // time, ...\n\t\tattachmentNames: Array;\n\n\t\tconstructor (frameCount: number) {\n\t\t\tthis.frames = Utils.newFloatArray(frameCount);\n\t\t\tthis.attachmentNames = new Array(frameCount);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.attachment << 24) + this.slotIndex;\n\t\t}\n\n\t\tgetFrameCount () {\n\t\t\treturn this.frames.length;\n\t\t}\n\n\t\t/** Sets the time and value of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, attachmentName: string) {\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.attachmentNames[frameIndex] = attachmentName;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet slot = skeleton.slots[this.slotIndex];\n\t\t\tif (mixingOut && setupPose) {\n\t\t\t\tlet attachmentName = slot.data.attachmentName;\n\t\t\t\tslot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet frames = this.frames;\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tlet attachmentName = slot.data.attachmentName;\n\t\t\t\t\tslot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet frameIndex = 0;\n\t\t\tif (time >= frames[frames.length - 1]) // Time is after last frame.\n\t\t\t\tframeIndex = frames.length - 1;\n\t\t\telse\n\t\t\t\tframeIndex = Animation.binarySearch(frames, time, 1) - 1;\n\n\t\t\tlet attachmentName = this.attachmentNames[frameIndex];\n\t\t\tskeleton.slots[this.slotIndex]\n\t\t\t\t.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n\t\t}\n\t}\n\n\texport class DeformTimeline extends CurveTimeline {\n\t\tslotIndex: number;\n\t\tattachment: VertexAttachment;\n\t\tframes: ArrayLike; // time, ...\n\t\tframeVertices: Array>;\n\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t\tthis.frames = Utils.newFloatArray(frameCount);\n\t\t\tthis.frameVertices = new Array>(frameCount);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.deform << 24) + this.slotIndex;\n\t\t}\n\n\t\t/** Sets the time of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, vertices: ArrayLike) {\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.frameVertices[frameIndex] = vertices;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet slot: Slot = skeleton.slots[this.slotIndex];\n\t\t\tlet slotAttachment: Attachment = slot.getAttachment();\n\t\t\tif (!(slotAttachment instanceof VertexAttachment) || !(slotAttachment).applyDeform(this.attachment)) return;\n\n\t\t\tlet frames = this.frames;\n\t\t\tlet verticesArray: Array = slot.attachmentVertices;\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) Utils.setArraySize(verticesArray, 0);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet frameVertices = this.frameVertices;\n\t\t\tlet vertexCount = frameVertices[0].length;\n\n\t\t\tif (verticesArray.length != vertexCount) alpha = 1; // Don't mix from uninitialized slot vertices.\n\t\t\tlet vertices: Array = Utils.setArraySize(verticesArray, vertexCount);\n\n\t\t\tif (time >= frames[frames.length - 1]) { // Time is after last frame.\n\t\t\t\tlet lastVertices = frameVertices[frames.length - 1];\n\t\t\t\tif (alpha == 1) {\n\t\t\t\t\tUtils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount);\n\t\t\t\t} else if (setupPose) {\n\t\t\t\t\tlet vertexAttachment = slotAttachment as VertexAttachment;\n\t\t\t\t\tif (vertexAttachment.bones == null) {\n\t\t\t\t\t\t// Unweighted vertex positions, with alpha.\n\t\t\t\t\t\tlet setupVertices = vertexAttachment.vertices;\n\t\t\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\n\t\t\t\t\t\t\tlet setup = setupVertices[i];\n\t\t\t\t\t\t\tvertices[i] = setup + (lastVertices[i] - setup) * alpha;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Weighted deform offsets, with alpha.\n\t\t\t\t\t\tfor (let i = 0; i < vertexCount; i++)\n\t\t\t\t\t\t\tvertices[i] = lastVertices[i] * alpha;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = 0; i < vertexCount; i++)\n\t\t\t\t\t\tvertices[i] += (lastVertices[i] - vertices[i]) * alpha;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\tlet frame = Animation.binarySearch(frames, time);\n\t\t\tlet prevVertices = frameVertices[frame - 1];\n\t\t\tlet nextVertices = frameVertices[frame];\n\t\t\tlet frameTime = frames[frame];\n\t\t\tlet percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime));\n\n\t\t\tif (alpha == 1) {\n\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\n\t\t\t\t\tlet prev = prevVertices[i];\n\t\t\t\t\tvertices[i] = prev + (nextVertices[i] - prev) * percent;\n\t\t\t\t}\n\t\t\t} else if (setupPose) {\n\t\t\t\tlet vertexAttachment = slotAttachment as VertexAttachment;\n\t\t\t\tif (vertexAttachment.bones == null) {\n\t\t\t\t\t// Unweighted vertex positions, with alpha.\n\t\t\t\t\tlet setupVertices = vertexAttachment.vertices;\n\t\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\n\t\t\t\t\t\tlet prev = prevVertices[i], setup = setupVertices[i];\n\t\t\t\t\t\tvertices[i] = setup + (prev + (nextVertices[i] - prev) * percent - setup) * alpha;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Weighted deform offsets, with alpha.\n\t\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\n\t\t\t\t\t\tlet prev = prevVertices[i];\n\t\t\t\t\t\tvertices[i] = (prev + (nextVertices[i] - prev) * percent) * alpha;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Vertex positions or deform offsets, with alpha.\n\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\n\t\t\t\t\tlet prev = prevVertices[i];\n\t\t\t\t\tvertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\texport class EventTimeline implements Timeline {\n\t\tframes: ArrayLike; // time, ...\n\t\tevents: Array;\n\n\t\tconstructor (frameCount: number) {\n\t\t\tthis.frames = Utils.newFloatArray(frameCount);\n\t\t\tthis.events = new Array(frameCount);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn TimelineType.event << 24;\n\t\t}\n\n\t\tgetFrameCount () {\n\t\t\treturn this.frames.length;\n\t\t}\n\n\t\t/** Sets the time of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, event: Event) {\n\t\t\tthis.frames[frameIndex] = event.time;\n\t\t\tthis.events[frameIndex] = event;\n\t\t}\n\n\t\t/** Fires events for frames > lastTime and <= time. */\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tif (firedEvents == null) return;\n\t\t\tlet frames = this.frames;\n\t\t\tlet frameCount = this.frames.length;\n\n\t\t\tif (lastTime > time) { // Fire events after last time for looped animations.\n\t\t\t\tthis.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, setupPose, mixingOut);\n\t\t\t\tlastTime = -1;\n\t\t\t} else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame.\n\t\t\t\treturn;\n\t\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\t\tlet frame = 0;\n\t\t\tif (lastTime < frames[0])\n\t\t\t\tframe = 0;\n\t\t\telse {\n\t\t\t\tframe = Animation.binarySearch(frames, lastTime);\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\twhile (frame > 0) { // Fire multiple events with the same frame.\n\t\t\t\t\tif (frames[frame - 1] != frameTime) break;\n\t\t\t\t\tframe--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (; frame < frameCount && time >= frames[frame]; frame++)\n\t\t\t\tfiredEvents.push(this.events[frame]);\n\t\t}\n\t}\n\n\texport class DrawOrderTimeline implements Timeline {\n\t\tframes: ArrayLike; // time, ...\n\t\tdrawOrders: Array>;\n\n\t\tconstructor (frameCount: number) {\n\t\t\tthis.frames = Utils.newFloatArray(frameCount);\n\t\t\tthis.drawOrders = new Array>(frameCount);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn TimelineType.drawOrder << 24;\n\t\t}\n\n\t\tgetFrameCount () {\n\t\t\treturn this.frames.length;\n\t\t}\n\n\t\t/** Sets the time of the specified keyframe.\n\t\t * @param drawOrder May be null to use bind pose draw order. */\n\t\tsetFrame (frameIndex: number, time: number, drawOrder: Array) {\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.drawOrders[frameIndex] = drawOrder;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet drawOrder: Array = skeleton.drawOrder;\n\t\t\tlet slots: Array = skeleton.slots;\n\t\t\tif (mixingOut && setupPose) {\n\t\t\t\tUtils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet frames = this.frames;\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet frame = 0;\n\t\t\tif (time >= frames[frames.length - 1]) // Time is after last frame.\n\t\t\t\tframe = frames.length - 1;\n\t\t\telse\n\t\t\t\tframe = Animation.binarySearch(frames, time) - 1;\n\n\t\t\tlet drawOrderToSetupIndex = this.drawOrders[frame];\n\t\t\tif (drawOrderToSetupIndex == null)\n\t\t\t\tUtils.arrayCopy(slots, 0, drawOrder, 0, slots.length);\n\t\t\telse {\n\t\t\t\tfor (let i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\n\t\t\t\t\tdrawOrder[i] = slots[drawOrderToSetupIndex[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\texport class IkConstraintTimeline extends CurveTimeline {\n\t\tstatic ENTRIES = 3;\n\t\tstatic PREV_TIME = -3; static PREV_MIX = -2; static PREV_BEND_DIRECTION = -1;\n\t\tstatic MIX = 1; static BEND_DIRECTION = 2;\n\n\t\tikConstraintIndex: number;\n\t\tframes: ArrayLike; // time, mix, bendDirection, ...\n\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.ikConstraint << 24) + this.ikConstraintIndex;\n\t\t}\n\n\t\t/** Sets the time, mix and bend direction of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, mix: number, bendDirection: number) {\n\t\t\tframeIndex *= IkConstraintTimeline.ENTRIES;\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.frames[frameIndex + IkConstraintTimeline.MIX] = mix;\n\t\t\tthis.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\t\t\tlet constraint: IkConstraint = skeleton.ikConstraints[this.ikConstraintIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tconstraint.mix = constraint.data.mix;\n\t\t\t\t\tconstraint.bendDirection = constraint.data.bendDirection;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { // Time is after last frame.\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tconstraint.mix = constraint.data.mix + (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.data.mix) * alpha;\n\t\t\t\t\tconstraint.bendDirection = mixingOut ? constraint.data.bendDirection\n\t\t\t\t\t\t: frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION];\n\t\t\t\t} else {\n\t\t\t\t\tconstraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha;\n\t\t\t\t\tif (!mixingOut) constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION];\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\tlet frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES);\n\t\t\tlet mix = frames[frame + IkConstraintTimeline.PREV_MIX];\n\t\t\tlet frameTime = frames[frame];\n\t\t\tlet percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1,\n\t\t\t\t1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime));\n\n\t\t\tif (setupPose) {\n\t\t\t\tconstraint.mix = constraint.data.mix + (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.data.mix) * alpha;\n\t\t\t\tconstraint.bendDirection = mixingOut ? constraint.data.bendDirection : frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION];\n\t\t\t} else {\n\t\t\t\tconstraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha;\n\t\t\t\tif (!mixingOut) constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION];\n\t\t\t}\n\t\t}\n\t}\n\n\texport class TransformConstraintTimeline extends CurveTimeline {\n\t\tstatic ENTRIES = 5;\n\t\tstatic PREV_TIME = -5; static PREV_ROTATE = -4; static PREV_TRANSLATE = -3; static PREV_SCALE = -2; static PREV_SHEAR = -1;\n\t\tstatic ROTATE = 1; static TRANSLATE = 2; static SCALE = 3; static SHEAR = 4;\n\n\t\ttransformConstraintIndex: number;\n\t\tframes: ArrayLike; // time, rotate mix, translate mix, scale mix, shear mix, ...\n\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.transformConstraint << 24) + this.transformConstraintIndex;\n\t\t}\n\n\t\t/** Sets the time and mixes of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number) {\n\t\t\tframeIndex *= TransformConstraintTimeline.ENTRIES;\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix;\n\t\t\tthis.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix;\n\t\t\tthis.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix;\n\t\t\tthis.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\n\t\t\tlet constraint: TransformConstraint = skeleton.transformConstraints[this.transformConstraintIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tlet data = constraint.data;\n\t\t\t\t\tconstraint.rotateMix = data.rotateMix;\n\t\t\t\t\tconstraint.translateMix = data.rotateMix;\n\t\t\t\t\tconstraint.scaleMix = data.scaleMix;\n\t\t\t\t\tconstraint.shearMix = data.shearMix;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet rotate = 0, translate = 0, scale = 0, shear = 0;\n\t\t\tif (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { // Time is after last frame.\n\t\t\t\tlet i = frames.length;\n\t\t\t\trotate = frames[i + TransformConstraintTimeline.PREV_ROTATE];\n\t\t\t\ttranslate = frames[i + TransformConstraintTimeline.PREV_TRANSLATE];\n\t\t\t\tscale = frames[i + TransformConstraintTimeline.PREV_SCALE];\n\t\t\t\tshear = frames[i + TransformConstraintTimeline.PREV_SHEAR];\n\t\t\t} else {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES);\n\t\t\t\trotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE];\n\t\t\t\ttranslate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE];\n\t\t\t\tscale = frames[frame + TransformConstraintTimeline.PREV_SCALE];\n\t\t\t\tshear = frames[frame + TransformConstraintTimeline.PREV_SHEAR];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\trotate += (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent;\n\t\t\t\ttranslate += (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent;\n\t\t\t\tscale += (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent;\n\t\t\t\tshear += (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent;\n\t\t\t}\n\t\t\tif (setupPose) {\n\t\t\t\tlet data = constraint.data;\n\t\t\t\tconstraint.rotateMix = data.rotateMix + (rotate - data.rotateMix) * alpha;\n\t\t\t\tconstraint.translateMix = data.translateMix + (translate - data.translateMix) * alpha;\n\t\t\t\tconstraint.scaleMix = data.scaleMix + (scale - data.scaleMix) * alpha;\n\t\t\t\tconstraint.shearMix = data.shearMix + (shear - data.shearMix) * alpha;\n\t\t\t} else {\n\t\t\t\tconstraint.rotateMix += (rotate - constraint.rotateMix) * alpha;\n\t\t\t\tconstraint.translateMix += (translate - constraint.translateMix) * alpha;\n\t\t\t\tconstraint.scaleMix += (scale - constraint.scaleMix) * alpha;\n\t\t\t\tconstraint.shearMix += (shear - constraint.shearMix) * alpha;\n\t\t\t}\n\t\t}\n\t}\n\n\texport class PathConstraintPositionTimeline extends CurveTimeline {\n\t\tstatic ENTRIES = 2;\n\t\tstatic PREV_TIME = -2; static PREV_VALUE = -1;\n\t\tstatic VALUE = 1;\n\n\t\tpathConstraintIndex: number;\n\n\t\tframes: ArrayLike; // time, position, ...\n\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.pathConstraintPosition << 24) + this.pathConstraintIndex;\n\t\t}\n\n\t\t/** Sets the time and value of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, value: number) {\n\t\t\tframeIndex *= PathConstraintPositionTimeline.ENTRIES;\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\t\t\tlet constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) constraint.position = constraint.data.position;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet position = 0;\n\t\t\tif (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) // Time is after last frame.\n\t\t\t\tposition = frames[frames.length + PathConstraintPositionTimeline.PREV_VALUE];\n\t\t\telse {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES);\n\t\t\t\tposition = frames[frame + PathConstraintPositionTimeline.PREV_VALUE];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\tposition += (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent;\n\t\t\t}\n\t\t\tif (setupPose)\n\t\t\t\tconstraint.position = constraint.data.position + (position - constraint.data.position) * alpha;\n\t\t\telse\n\t\t\t\tconstraint.position += (position - constraint.position) * alpha;\n\t\t}\n\t}\n\n\texport class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline {\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.pathConstraintSpacing << 24) + this.pathConstraintIndex;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\t\t\tlet constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) constraint.spacing = constraint.data.spacing;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet spacing = 0;\n\t\t\tif (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) // Time is after last frame.\n\t\t\t\tspacing = frames[frames.length + PathConstraintSpacingTimeline.PREV_VALUE];\n\t\t\telse {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES);\n\t\t\t\tspacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\tspacing += (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent;\n\t\t\t}\n\n\t\t\tif (setupPose)\n\t\t\t\tconstraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha;\n\t\t\telse\n\t\t\t\tconstraint.spacing += (spacing - constraint.spacing) * alpha;\n\t\t}\n\t}\n\n\texport class PathConstraintMixTimeline extends CurveTimeline {\n\t\tstatic ENTRIES = 3;\n\t\tstatic PREV_TIME = -3; static PREV_ROTATE = -2; static PREV_TRANSLATE = -1;\n\t\tstatic ROTATE = 1; static TRANSLATE = 2;\n\n\t\tpathConstraintIndex: number;\n\n\t\tframes: ArrayLike; // time, rotate mix, translate mix, ...\n\n\t\tconstructor (frameCount: number) {\n\t\t\tsuper(frameCount);\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES);\n\t\t}\n\n\t\tgetPropertyId () {\n\t\t\treturn (TimelineType.pathConstraintMix << 24) + this.pathConstraintIndex;\n\t\t}\n\n\t\t/** Sets the time and mixes of the specified keyframe. */\n\t\tsetFrame (frameIndex: number, time: number, rotateMix: number, translateMix: number) {\n\t\t\tframeIndex *= PathConstraintMixTimeline.ENTRIES;\n\t\t\tthis.frames[frameIndex] = time;\n\t\t\tthis.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix;\n\t\t\tthis.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix;\n\t\t}\n\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\n\t\t\tlet frames = this.frames;\n\t\t\tlet constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\n\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) {\n\t\t\t\t\tconstraint.rotateMix = constraint.data.rotateMix;\n\t\t\t\t\tconstraint.translateMix = constraint.data.translateMix;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet rotate = 0, translate = 0;\n\t\t\tif (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { // Time is after last frame.\n\t\t\t\trotate = frames[frames.length + PathConstraintMixTimeline.PREV_ROTATE];\n\t\t\t\ttranslate = frames[frames.length + PathConstraintMixTimeline.PREV_TRANSLATE];\n\t\t\t} else {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES);\n\t\t\t\trotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE];\n\t\t\t\ttranslate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\trotate += (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent;\n\t\t\t\ttranslate += (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent;\n\t\t\t}\n\n\t\t\tif (setupPose) {\n\t\t\t\tconstraint.rotateMix = constraint.data.rotateMix + (rotate - constraint.data.rotateMix) * alpha;\n\t\t\t\tconstraint.translateMix = constraint.data.translateMix + (translate - constraint.data.translateMix) * alpha;\n\t\t\t} else {\n\t\t\t\tconstraint.rotateMix += (rotate - constraint.rotateMix) * alpha;\n\t\t\t\tconstraint.translateMix += (translate - constraint.translateMix) * alpha;\n\t\t\t}\n\t\t}\n\t}\n}\n/******************************************************************************\n * Spine Runtimes Software License v2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n\texport class AnimationState {\n\t\tstatic emptyAnimation = new Animation(\"\", [], 0);\n\n\t\tdata: AnimationStateData;\n\t\ttracks = new Array();\n\t\tevents = new Array();\n\t\tlisteners = new Array();\n\t\tqueue = new EventQueue(this);\n\t\tpropertyIDs = new IntSet();\n\t\tanimationsChanged = false;\n\t\ttimeScale = 1;\n\n\t\ttrackEntryPool = new Pool(() => new TrackEntry());\n\n\t\tconstructor (data: AnimationStateData) {\n\t\t\tthis.data = data;\n\t\t}\n\n\t\tupdate (delta: number) {\n\t\t\tdelta *= this.timeScale;\n\t\t\tlet tracks = this.tracks;\n\t\t\tfor (let i = 0, n = tracks.length; i < n; i++) {\n\t\t\t\tlet current = tracks[i];\n\t\t\t\tif (current == null) continue;\n\n\t\t\t\tcurrent.animationLast = current.nextAnimationLast;\n\t\t\t\tcurrent.trackLast = current.nextTrackLast;\n\n\t\t\t\tlet currentDelta = delta * current.timeScale;\n\n\t\t\t\tif (current.delay > 0) {\n\t\t\t\t\tcurrent.delay -= currentDelta;\n\t\t\t\t\tif (current.delay > 0) continue;\n\t\t\t\t\tcurrentDelta = -current.delay;\n\t\t\t\t\tcurrent.delay = 0;\n\t\t\t\t}\n\n\t\t\t\tlet next = current.next;\n\t\t\t\tif (next != null) {\n\t\t\t\t\t// When the next entry's delay is passed, change to the next entry, preserving leftover time.\n\t\t\t\t\tlet nextTime = current.trackLast - next.delay;\n\t\t\t\t\tif (nextTime >= 0) {\n\t\t\t\t\t\tnext.delay = 0;\n\t\t\t\t\t\tnext.trackTime = nextTime + delta * next.timeScale;\n\t\t\t\t\t\tcurrent.trackTime += currentDelta;\n\t\t\t\t\t\tthis.setCurrent(i, next, true);\n\t\t\t\t\t\twhile (next.mixingFrom != null) {\n\t\t\t\t\t\t\tnext.mixTime += currentDelta;\n\t\t\t\t\t\t\tnext = next.mixingFrom;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom.\n\t\t\t\t\tif (current.trackLast >= current.trackEnd && current.mixingFrom == null) {\n\t\t\t\t\t\ttracks[i] = null;\n\t\t\t\t\t\tthis.queue.end(current);\n\t\t\t\t\t\tthis.disposeNext(current);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n this.updateMixingFrom(current, delta);\n\n\t\t\t\tcurrent.trackTime += currentDelta;\n\t\t\t}\n\n\t\t\tthis.queue.drain();\n\t\t}\n\n updateMixingFrom (entry: TrackEntry, delta: number) {\n let from = entry.mixingFrom;\n if (from == null) return;\n\n this.updateMixingFrom(from, delta);\n\n if (entry.mixTime >= entry.mixDuration && from.mixingFrom != null && entry.mixTime > 0) {\n entry.mixingFrom = null;\n this.queue.end(from);\n return;\n }\n\n from.animationLast = from.nextAnimationLast;\n from.trackLast = from.nextTrackLast;\n from.trackTime += delta * from.timeScale;\n entry.mixTime += delta * from.timeScale;\n }\n\n\t\tapply (skeleton: Skeleton) {\n\t\t\tif (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n\t\t\tif (this.animationsChanged) this._animationsChanged();\n\n\t\t\tlet events = this.events;\n\t\t\tlet tracks = this.tracks;\n\n\t\t\tfor (let i = 0, n = tracks.length; i < n; i++) {\n\t\t\t\tlet current = tracks[i];\n\t\t\t\tif (current == null || current.delay > 0) continue;\n\n\t\t\t\t// Apply mixing from entries first.\n\t\t\t\tlet mix = current.alpha;\n if (current.mixingFrom != null)\n mix *= this.applyMixingFrom(current, skeleton);\n else if (current.trackTime >= current.trackEnd)\n mix = 0;\n\n\t\t\t\t// Apply current entry.\n\t\t\t\tlet animationLast = current.animationLast, animationTime = current.getAnimationTime();\n\t\t\t\tlet timelineCount = current.animation.timelines.length;\n\t\t\t\tlet timelines = current.animation.timelines;\n\t\t\t\tif (mix == 1) {\n\t\t\t\t\tfor (let ii = 0; ii < timelineCount; ii++)\n\t\t\t\t\t\ttimelines[ii].apply(skeleton, animationLast, animationTime, events, 1, true, false);\n\t\t\t\t} else {\n\t\t\t\t\tlet firstFrame = current.timelinesRotation.length == 0;\n\t\t\t\t\tif (firstFrame) Utils.setArraySize(current.timelinesRotation, timelineCount << 1, null);\n\t\t\t\t\tlet timelinesRotation = current.timelinesRotation;\n\n\t\t\t\t\tlet timelinesFirst = current.timelinesFirst;\n\t\t\t\t\tfor (let ii = 0; ii < timelineCount; ii++) {\n\t\t\t\t\t\tlet timeline = timelines[ii];\n\t\t\t\t\t\tif (timeline instanceof RotateTimeline) {\n\t\t\t\t\t\t\tthis.applyRotateTimeline(timeline, skeleton, animationTime, mix, timelinesFirst[ii], timelinesRotation, ii << 1,\n\t\t\t\t\t\t\t\tfirstFrame);\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\ttimeline.apply(skeleton, animationLast, animationTime, events, mix, timelinesFirst[ii], false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.queueEvents(current, animationTime);\n events.length = 0;\n\t\t\t\tcurrent.nextAnimationLast = animationTime;\n\t\t\t\tcurrent.nextTrackLast = current.trackTime;\n\t\t\t}\n\n\t\t\tthis.queue.drain();\n\t\t}\n\n\t\tapplyMixingFrom (entry: TrackEntry, skeleton: Skeleton) {\n\t\t\tlet from = entry.mixingFrom;\n\t\t\tif (from.mixingFrom != null) this.applyMixingFrom(from, skeleton);\n\n\t\t\tlet mix = 0;\n\t\t\tif (entry.mixDuration == 0) // Single frame mix to undo mixingFrom changes.\n\t\t\t\tmix = 1;\n\t\t\telse {\n\t\t\t\tmix = entry.mixTime / entry.mixDuration;\n\t\t\t\tif (mix > 1) mix = 1;\n\t\t\t}\n\n\t\t\tlet events = mix < from.eventThreshold ? this.events : null;\n\t\t\tlet attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold;\n\t\t\tlet animationLast = from.animationLast, animationTime = from.getAnimationTime();\n\t\t\tlet timelineCount = from.animation.timelines.length;\n\t\t\tlet timelines = from.animation.timelines;\n\t\t\tlet timelinesFirst = from.timelinesFirst;\n\t\t\tlet alpha = from.alpha * entry.mixAlpha * (1 - mix);\n\n\t\t\tlet firstFrame = from.timelinesRotation.length == 0;\n\t\t\tif (firstFrame) Utils.setArraySize(from.timelinesRotation, timelineCount << 1, null);\n\t\t\tlet timelinesRotation = from.timelinesRotation;\n\n\t\t\tfor (let i = 0; i < timelineCount; i++) {\n\t\t\t\tlet timeline = timelines[i];\n\t\t\t\tlet setupPose = timelinesFirst[i];\n\t\t\t\tif (timeline instanceof RotateTimeline)\n\t\t\t\t\tthis.applyRotateTimeline(timeline, skeleton, animationTime, alpha, setupPose, timelinesRotation, i << 1, firstFrame);\n\t\t\t\telse {\n\t\t\t\t\tif (!setupPose) {\n\t\t\t\t\t\tif (!attachments && timeline instanceof AttachmentTimeline) continue;\n\t\t\t\t\t\tif (!drawOrder && timeline instanceof DrawOrderTimeline) continue;\n\t\t\t\t\t}\n\t\t\t\t\ttimeline.apply(skeleton, animationLast, animationTime, events, alpha, setupPose, true);\n\t\t\t\t}\n\t\t\t}\n\n if (entry.mixDuration > 0) this.queueEvents(from, animationTime);\n this.events.length = 0;\n\t\t\tfrom.nextAnimationLast = animationTime;\n\t\t\tfrom.nextTrackLast = from.trackTime;\n\n\t\t\treturn mix;\n\t\t}\n\n\t\tapplyRotateTimeline (timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, setupPose: boolean,\n\t\t\ttimelinesRotation: Array, i: number, firstFrame: boolean) {\n\n if (firstFrame) timelinesRotation[i] = 0;\n\n\t\t\tif (alpha == 1) {\n\t\t\t\ttimeline.apply(skeleton, 0, time, null, 1, setupPose, false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet rotateTimeline = timeline as RotateTimeline;\n\t\t\tlet frames = rotateTimeline.frames;\n\t\t\tlet bone = skeleton.bones[rotateTimeline.boneIndex];\n\t\t\tif (time < frames[0]) {\n\t\t\t\tif (setupPose) bone.rotation = bone.data.rotation;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet r2 = 0;\n\t\t\tif (time >= frames[frames.length - RotateTimeline.ENTRIES]) // Time is after last frame.\n\t\t\t\tr2 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION];\n\t\t\telse {\n\t\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES);\n\t\t\t\tlet prevRotation = frames[frame + RotateTimeline.PREV_ROTATION];\n\t\t\t\tlet frameTime = frames[frame];\n\t\t\t\tlet percent = rotateTimeline.getCurvePercent((frame >> 1) - 1,\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime));\n\n\t\t\t\tr2 = frames[frame + RotateTimeline.ROTATION] - prevRotation;\n\t\t\t\tr2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360;\n\t\t\t\tr2 = prevRotation + r2 * percent + bone.data.rotation;\n\t\t\t\tr2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360;\n\t\t\t}\n\n\t\t\t// Mix between rotations using the direction of the shortest route on the first frame while detecting crosses.\n\t\t\tlet r1 = setupPose ? bone.data.rotation : bone.rotation;\n\t\t\tlet total = 0, diff = r2 - r1;\n\t\t\tif (diff == 0) {\n total = timelinesRotation[i];\n\t\t\t} else {\n\t\t\t\tdiff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360;\n\t\t\t\tlet lastTotal = 0, lastDiff = 0;\n\t\t\t\tif (firstFrame) {\n\t\t\t\t\tlastTotal = 0;\n\t\t\t\t\tlastDiff = diff;\n\t\t\t\t} else {\n\t\t\t\t\tlastTotal = timelinesRotation[i]; // Angle and direction of mix, including loops.\n\t\t\t\t\tlastDiff = timelinesRotation[i + 1]; // Difference between bones.\n\t\t\t\t}\n\t\t\t\tlet current = diff > 0, dir = lastTotal >= 0;\n\t\t\t\t// Detect cross at 0 (not 180).\n\t\t\t\tif (MathUtils.signum(lastDiff) != MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) {\n\t\t\t\t\t// A cross after a 360 rotation is a loop.\n\t\t\t\t\tif (Math.abs(lastTotal) > 180) lastTotal += 360 * MathUtils.signum(lastTotal);\n\t\t\t\t\tdir = current;\n\t\t\t\t}\n\t\t\t\ttotal = diff + lastTotal - lastTotal % 360; // Store loops as part of lastTotal.\n\t\t\t\tif (dir != current) total += 360 * MathUtils.signum(lastTotal);\n\t\t\t\ttimelinesRotation[i] = total;\n\t\t\t}\n\t\t\ttimelinesRotation[i + 1] = diff;\n\t\t\tr1 += total * alpha;\n\t\t\tbone.rotation = r1 - (16384 - ((16384.499999999996 - r1 / 360) | 0)) * 360;\n\t\t}\n\n\t\tqueueEvents (entry: TrackEntry, animationTime: number) {\n\t\t\tlet animationStart = entry.animationStart, animationEnd = entry.animationEnd;\n\t\t\tlet duration = animationEnd - animationStart;\n\t\t\tlet trackLastWrapped = entry.trackLast % duration;\n\n\t\t\t// Queue events before complete.\n\t\t\tlet events = this.events;\n\t\t\tlet i = 0, n = events.length;\n\t\t\tfor (; i < n; i++) {\n\t\t\t\tlet event = events[i];\n\t\t\t\tif (event.time < trackLastWrapped) break;\n\t\t\t\tif (event.time > animationEnd) continue; // Discard events outside animation start/end.\n\t\t\t\tthis.queue.event(entry, event);\n\t\t\t}\n\n\t\t\t// Queue complete if completed a loop iteration or the animation.\n\t\t\tif (entry.loop ? (trackLastWrapped > entry.trackTime % duration)\n\t\t\t\t: (animationTime >= animationEnd && entry.animationLast < animationEnd)) {\n\t\t\t\tthis.queue.complete(entry);\n\t\t\t}\n\n\t\t\t// Queue events after complete.\n\t\t\tfor (; i < n; i++) {\n\t\t\t\tlet event = events[i];\n\t\t\t\tif (event.time < animationStart) continue; // Discard events outside animation start/end.\n\t\t\t\tthis.queue.event(entry, events[i]);\n\t\t\t}\n\t\t}\n\n clearTracks () {\n let oldDrainDisabled = this.queue.drainDisabled;\n this.queue.drainDisabled = true;\n for (let i = 0, n = this.tracks.length; i < n; i++)\n this.clearTrack(i);\n this.tracks.length = 0;\n this.queue.drainDisabled = oldDrainDisabled;\n this.queue.drain();\n }\n\n\t\tclearTrack (trackIndex: number) {\n\t\t\tif (trackIndex >= this.tracks.length) return;\n\t\t\tlet current = this.tracks[trackIndex];\n\t\t\tif (current == null) return;\n\n\t\t\tthis.queue.end(current);\n\n\t\t\tthis.disposeNext(current);\n\n\t\t\tlet entry = current;\n\t\t\twhile (true) {\n\t\t\t\tlet from = entry.mixingFrom;\n\t\t\t\tif (from == null) break;\n\t\t\t\tthis.queue.end(from);\n\t\t\t\tentry.mixingFrom = null;\n\t\t\t\tentry = from;\n\t\t\t}\n\n\t\t\tthis.tracks[current.trackIndex] = null;\n\n\t\t\tthis.queue.drain();\n\t\t}\n\n\t\tsetCurrent (index: number, current: TrackEntry, interrupt: boolean) {\n\t\t\tlet from = this.expandToIndex(index);\n\t\t\tthis.tracks[index] = current;\n\n\t\t\tif (from != null) {\n if (interrupt) this.queue.interrupt(from);\n\t\t\t\tcurrent.mixingFrom = from;\n\t\t\t\tcurrent.mixTime = 0;\n\n from.timelinesRotation.length = 0;\n\n\t\t\t\t// If not completely mixed in, set mixAlpha so mixing out happens from current mix to zero.\n if (from.mixingFrom != null && from.mixDuration > 0) current.mixAlpha *= Math.min(from.mixTime / from.mixDuration, 1);\n\t\t\t}\n\n\t\t\tthis.queue.start(current);\n\t\t}\n\n\t\tsetAnimation (trackIndex: number, animationName: string, loop: boolean) {\n\t\t\tlet animation = this.data.skeletonData.findAnimation(animationName);\n\t\t\tif (animation == null) throw new Error(\"Animation not found: \" + animationName);\n\t\t\treturn this.setAnimationWith(trackIndex, animation, loop);\n\t\t}\n\n\t\tsetAnimationWith (trackIndex: number, animation: Animation, loop: boolean) {\n\t\t\tif (animation == null) throw new Error(\"animation cannot be null.\");\n let interrupt = true;\n\t\t\tlet current = this.expandToIndex(trackIndex);\n\t\t\tif (current != null) {\n\t\t\t\tif (current.nextTrackLast == -1) {\n\t\t\t\t\t// Don't mix from an entry that was never applied.\n\t\t\t\t\tthis.tracks[trackIndex] = current.mixingFrom;\n\t\t\t\t\tthis.queue.interrupt(current);\n\t\t\t\t\tthis.queue.end(current);\n\t\t\t\t\tthis.disposeNext(current);\n\t\t\t\t\tcurrent = current.mixingFrom;\n interrupt = false;\n\t\t\t\t} else\n\t\t\t\t\tthis.disposeNext(current);\n\t\t\t}\n\t\t\tlet entry = this.trackEntry(trackIndex, animation, loop, current);\n\t\t\tthis.setCurrent(trackIndex, entry, interrupt);\n\t\t\tthis.queue.drain();\n\t\t\treturn entry;\n\t\t}\n\n\t\taddAnimation (trackIndex: number, animationName: string, loop: boolean, delay: number) {\n\t\t\tlet animation = this.data.skeletonData.findAnimation(animationName);\n\t\t\tif (animation == null) throw new Error(\"Animation not found: \" + animationName);\n\t\t\treturn this.addAnimationWith(trackIndex, animation, loop, delay);\n\t\t}\n\n\t\taddAnimationWith (trackIndex: number, animation: Animation, loop: boolean, delay: number) {\n\t\t\tif (animation == null) throw new Error(\"animation cannot be null.\");\n\n\t\t\tlet last = this.expandToIndex(trackIndex);\n\t\t\tif (last != null) {\n\t\t\t\twhile (last.next != null)\n\t\t\t\t\tlast = last.next;\n\t\t\t}\n\n\t\t\tlet entry = this.trackEntry(trackIndex, animation, loop, last);\n\n\t\t\tif (last == null) {\n\t\t\t\tthis.setCurrent(trackIndex, entry, true);\n\t\t\t\tthis.queue.drain();\n\t\t\t} else {\n\t\t\t\tlast.next = entry;\n\t\t\t\tif (delay <= 0) {\n\t\t\t\t\tlet duration = last.animationEnd - last.animationStart;\n\t\t\t\t\tif (duration != 0)\n\t\t\t\t\t\tdelay += duration * (1 + ((last.trackTime / duration) | 0)) - this.data.getMix(last.animation, animation);\n\t\t\t\t\telse\n\t\t\t\t\t\tdelay = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tentry.delay = delay;\n\t\t\treturn entry;\n\t\t}\n\n\t\tsetEmptyAnimation (trackIndex: number, mixDuration: number) {\n\t\t\tlet entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation, false);\n\t\t\tentry.mixDuration = mixDuration;\n\t\t\tentry.trackEnd = mixDuration;\n\t\t\treturn entry;\n\t\t}\n\n\t\taddEmptyAnimation (trackIndex: number, mixDuration: number, delay: number) {\n\t\t\tif (delay <= 0) delay -= mixDuration;\n\t\t\tlet entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation, false, delay);\n\t\t\tentry.mixDuration = mixDuration;\n\t\t\tentry.trackEnd = mixDuration;\n\t\t\treturn entry;\n\t\t}\n\n setEmptyAnimations (mixDuration: number) {\n let oldDrainDisabled = this.queue.drainDisabled;\n this.queue.drainDisabled = true;\n for (let i = 0, n = this.tracks.length; i < n; i++) {\n let current = this.tracks[i];\n if (current != null) this.setEmptyAnimation(current.trackIndex, mixDuration);\n }\n this.queue.drainDisabled = oldDrainDisabled;\n this.queue.drain();\n }\n\n\t\texpandToIndex (index: number) {\n\t\t\tif (index < this.tracks.length) return this.tracks[index];\n\t\t\tUtils.ensureArrayCapacity(this.tracks, index - this.tracks.length + 1, null);\n\t\t\tthis.tracks.length = index + 1;\n\t\t\treturn null;\n\t\t}\n\n\t\ttrackEntry (trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry) {\n\t\t\tlet entry = this.trackEntryPool.obtain();\n\t\t\tentry.trackIndex = trackIndex;\n\t\t\tentry.animation = animation;\n\t\t\tentry.loop = loop;\n\n\t\t\tentry.eventThreshold = 0;\n\t\t\tentry.attachmentThreshold = 0;\n\t\t\tentry.drawOrderThreshold = 0;\n\n\t\t\tentry.animationStart = 0;\n\t\t\tentry.animationEnd = animation.duration;\n\t\t\tentry.animationLast = -1;\n\t\t\tentry.nextAnimationLast = -1;\n\n\t\t\tentry.delay = 0;\n\t\t\tentry.trackTime = 0;\n\t\t\tentry.trackLast = -1;\n\t\t\tentry.nextTrackLast = -1;\n entry.trackEnd = Number.MAX_VALUE;\n\t\t\tentry.timeScale = 1;\n\n\t\t\tentry.alpha = 1;\n\t\t\tentry.mixAlpha = 1;\n\t\t\tentry.mixTime = 0;\n\t\t\tentry.mixDuration = last == null ? 0 : this.data.getMix(last.animation, animation);\n\t\t\treturn entry;\n\t\t}\n\n\t\tdisposeNext (entry: TrackEntry) {\n\t\t\tlet next = entry.next;\n\t\t\twhile (next != null) {\n\t\t\t\tthis.queue.dispose(next);\n\t\t\t\tnext = next.next;\n\t\t\t}\n\t\t\tentry.next = null;\n\t\t}\n\n\t\t_animationsChanged () {\n\t\t\tthis.animationsChanged = false;\n\n\t\t\tlet propertyIDs = this.propertyIDs;\n\n\t\t\t// Compute timelinesFirst from lowest to highest track entries.\n\t\t\tlet i = 0, n = this.tracks.length;\n\t\t\tpropertyIDs.clear();\n\t\t\tfor (; i < n; i++) { // Find first non-null entry.\n\t\t\t\tlet entry = this.tracks[i];\n\t\t\t\tif (entry == null) continue;\n\t\t\t\tthis.setTimelinesFirst(entry);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfor (; i < n; i++) { // Rest of entries.\n\t\t\t\tlet entry = this.tracks[i];\n\t\t\t\tif (entry != null) this.checkTimelinesFirst(entry);\n\t\t\t}\n\t\t}\n\n\t\tsetTimelinesFirst (entry: TrackEntry) {\n\t\t\tif (entry.mixingFrom != null) {\n\t\t\t\tthis.setTimelinesFirst(entry.mixingFrom);\n\t\t\t\tthis.checkTimelinesUsage(entry, entry.timelinesFirst);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet propertyIDs = this.propertyIDs;\n\t\t\tlet timelines = entry.animation.timelines;\n\t\t\tlet n = timelines.length;\n\t\t\tlet usage = Utils.setArraySize(entry.timelinesFirst, n, false);\n\t\t\tfor (let i = 0; i < n; i++) {\n\t\t\t\tpropertyIDs.add(timelines[i].getPropertyId());\n\t\t\t\tusage[i] = true;\n\t\t\t}\n\t\t}\n\n\t\tcheckTimelinesFirst (entry: TrackEntry) {\n\t\t\tif (entry.mixingFrom != null) this.checkTimelinesFirst(entry.mixingFrom);\n\t\t\tthis.checkTimelinesUsage(entry, entry.timelinesFirst);\n\t\t}\n\n\t\tcheckTimelinesUsage (entry: TrackEntry, usageArray: Array) {\n\t\t\tlet propertyIDs = this.propertyIDs;\n\t\t\tlet timelines = entry.animation.timelines;\n\t\t\tlet n = timelines.length;\n\t\t\tlet usage = Utils.setArraySize(usageArray, n);\n\t\t\tfor (let i = 0; i < n; i++)\n\t\t\t\tusage[i] = propertyIDs.add(timelines[i].getPropertyId());\n\t\t}\n\n\t\tgetCurrent (trackIndex: number) {\n\t\t\tif (trackIndex >= this.tracks.length) return null;\n\t\t\treturn this.tracks[trackIndex];\n\t\t}\n\n\t\taddListener (listener: AnimationStateListener2) {\n\t\t\tif (listener == null) throw new Error(\"listener cannot be null.\");\n\t\t\tthis.listeners.push(listener);\n\t\t}\n\n\t\t/** Removes the listener added with {@link #addListener(AnimationStateListener)}. */\n\t\tremoveListener (listener: AnimationStateListener2) {\n\t\t\tlet index = this.listeners.indexOf(listener);\n\t\t\tif (index >= 0) this.listeners.splice(index, 1);\n\t\t}\n\n\t\tclearListeners () {\n\t\t\tthis.listeners.length = 0;\n\t\t}\n\n\t\tclearListenerNotifications () {\n\t\t\tthis.queue.clear();\n\t\t}\n\n //deprecated stuff\n onComplete: (trackIndex: number, loopCount: number) => any;\n onEvent: (trackIndex: number, event: Event) => any;\n onStart: (trackIndex: number) => any;\n onEnd: (trackIndex: number) => any;\n\n private static deprecatedWarning1: boolean = false;\n\n setAnimationByName(trackIndex: number, animationName: string, loop: boolean) {\n if (!AnimationState.deprecatedWarning1) {\n AnimationState.deprecatedWarning1 = true;\n console.warn(\"Deprecation Warning: AnimationState.setAnimationByName is deprecated, please use setAnimation from now on.\");\n }\n this.setAnimation(trackIndex, animationName, loop);\n }\n\n private static deprecatedWarning2: boolean = false;\n\n addAnimationByName(trackIndex: number, animationName: string, loop: boolean, delay: number) {\n if (!AnimationState.deprecatedWarning2) {\n AnimationState.deprecatedWarning2 = true;\n console.warn(\"Deprecation Warning: AnimationState.addAnimationByName is deprecated, please use addAnimation from now on.\");\n }\n this.addAnimation(trackIndex, animationName, loop, delay);\n }\n\n private static deprecatedWarning3: boolean = false;\n\n hasAnimation(animationName: string): boolean {\n let animation = this.data.skeletonData.findAnimation(animationName);\n return animation !== null;\n }\n\n hasAnimationByName(animationName: string): boolean {\n if (!AnimationState.deprecatedWarning3) {\n AnimationState.deprecatedWarning3 = true;\n console.warn(\"Deprecation Warning: AnimationState.hasAnimationByName is deprecated, please use hasAnimation from now on.\");\n }\n return this.hasAnimation(animationName);\n }\n\t}\n\n\texport class TrackEntry {\n\t\tanimation: Animation;\n\t\tnext: TrackEntry; mixingFrom: TrackEntry;\n\t\tlistener: AnimationStateListener2;\n\t\ttrackIndex: number;\n\t\tloop: boolean;\n\t\teventThreshold: number; attachmentThreshold: number; drawOrderThreshold: number;\n\t\tanimationStart: number; animationEnd: number; animationLast: number; nextAnimationLast: number;\n\t\tdelay: number; trackTime: number; trackLast: number; nextTrackLast: number; trackEnd: number; timeScale: number;\n\t\talpha: number; mixTime: number; mixDuration: number; mixAlpha: number;\n\t\ttimelinesFirst = new Array();\n\t\ttimelinesRotation = new Array();\n\n\t\treset () {\n\t\t\tthis.next = null;\n\t\t\tthis.mixingFrom = null;\n\t\t\tthis.animation = null;\n\t\t\tthis.listener = null;\n\t\t\tthis.timelinesFirst.length = 0;\n\t\t\tthis.timelinesRotation.length = 0;\n\t\t}\n\n\t\tgetAnimationTime () {\n\t\t\tif (this.loop) {\n\t\t\t\tlet duration = this.animationEnd - this.animationStart;\n\t\t\t\tif (duration == 0) return this.animationStart;\n\t\t\t\treturn (this.trackTime % duration) + this.animationStart;\n\t\t\t}\n\t\t\treturn Math.min(this.trackTime + this.animationStart, this.animationEnd);\n\t\t}\n\n\t\tsetAnimationLast(animationLast: number) {\n\t\t\tthis.animationLast = animationLast;\n\t\t\tthis.nextAnimationLast = animationLast;\n\t\t}\n\n\t\tisComplete () {\n\t\t\treturn this.trackTime >= this.animationEnd - this.animationStart;\n\t\t}\n\n\t\tresetRotationDirections () {\n\t\t\tthis.timelinesRotation.length = 0;\n\t\t}\n\n //deprecated stuff\n onComplete: (trackIndex: number, loopCount: number) => any;\n onEvent: (trackIndex: number, event: Event) => any;\n onStart: (trackIndex: number) => any;\n onEnd: (trackIndex: number) => any;\n\n private static deprecatedWarning1: Boolean = false;\n private static deprecatedWarning2: Boolean = false;\n\n get time() {\n if (!TrackEntry.deprecatedWarning1) {\n TrackEntry.deprecatedWarning1 = true;\n console.warn(\"Deprecation Warning: TrackEntry.time is deprecated, please use trackTime from now on.\");\n }\n return this.trackTime;\n }\n\n set time(value: number) {\n if (!TrackEntry.deprecatedWarning1) {\n TrackEntry.deprecatedWarning1 = true;\n console.warn(\"Deprecation Warning: TrackEntry.time is deprecated, please use trackTime from now on.\");\n }\n this.trackTime = value;\n }\n\n get endTime() {\n if (!TrackEntry.deprecatedWarning2) {\n TrackEntry.deprecatedWarning2 = true;\n console.warn(\"Deprecation Warning: TrackEntry.endTime is deprecated, please use trackEnd from now on.\");\n }\n return this.trackTime;\n }\n\n set endTime(value: number) {\n if (!TrackEntry.deprecatedWarning2) {\n TrackEntry.deprecatedWarning2 = true;\n console.warn(\"Deprecation Warning: TrackEntry.endTime is deprecated, please use trackEnd from now on.\");\n }\n this.trackTime = value;\n }\n\n loopsCount() {\n return Math.floor(this.trackTime / this.trackEnd);\n }\n\t}\n\n\texport class EventQueue {\n\t\tobjects: Array = [];\n\t\tdrainDisabled = false;\n\t\tanimState: AnimationState;\n\n\t\tconstructor(animState: AnimationState) {\n\t\t\tthis.animState = animState;\n\t\t}\n\n\t\tstart (entry: TrackEntry) {\n\t\t\tthis.objects.push(EventType.start);\n\t\t\tthis.objects.push(entry);\n\t\t\tthis.animState.animationsChanged = true;\n\t\t}\n\n\t\tinterrupt (entry: TrackEntry) {\n\t\t\tthis.objects.push(EventType.interrupt);\n\t\t\tthis.objects.push(entry);\n\t\t}\n\n\t\tend (entry: TrackEntry) {\n\t\t\tthis.objects.push(EventType.end);\n\t\t\tthis.objects.push(entry);\n\t\t\tthis.animState.animationsChanged = true;\n\t\t}\n\n\t\tdispose (entry: TrackEntry) {\n\t\t\tthis.objects.push(EventType.dispose);\n\t\t\tthis.objects.push(entry);\n\t\t}\n\n\t\tcomplete (entry: TrackEntry) {\n\t\t\tthis.objects.push(EventType.complete);\n\t\t\tthis.objects.push(entry);\n\t\t}\n\n\t\tevent (entry: TrackEntry, event: Event) {\n\t\t\tthis.objects.push(EventType.event);\n\t\t\tthis.objects.push(entry);\n\t\t\tthis.objects.push(event);\n\t\t}\n\n private static deprecatedWarning1: Boolean = false;\n\n\t\tdeprecateStuff() {\n if (!EventQueue.deprecatedWarning1) {\n EventQueue.deprecatedWarning1 = true;\n console.warn(\"Deprecation Warning: onComplete, onStart, onEnd, onEvent art deprecated, please use listeners from now on. 'state.addListener({ complete: function(track, event) { } })'\");\n }\n return true;\n }\n\n\t\tdrain () {\n\t\t\tif (this.drainDisabled) return;\n\t\t\tthis.drainDisabled = true;\n\n\t\t\tlet objects = this.objects;\n\t\t\tlet listeners = this.animState.listeners;\n\n\t\t\tfor (let i = 0; i < objects.length; i += 2) {\n\t\t\t\tlet type = objects[i] as EventType;\n\t\t\t\tlet entry = objects[i + 1] as TrackEntry;\n\t\t\t\tswitch (type) {\n\t\t\t\tcase EventType.start:\n\t\t\t\t\tif (entry.listener != null && entry.listener.start) entry.listener.start(entry);\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\n\t\t\t\t\t\tif (listeners[ii].start) listeners[ii].start(entry);\n //deprecation\n entry.onStart && this.deprecateStuff() && entry.onStart(entry.trackIndex);\n this.animState.onStart && this.deprecateStuff() && this.deprecateStuff && this.animState.onStart(entry.trackIndex);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EventType.interrupt:\n\t\t\t\t\tif (entry.listener != null && entry.listener.interrupt) entry.listener.interrupt(entry);\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\n\t\t\t\t\t\tif (listeners[ii].interrupt) listeners[ii].interrupt(entry);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EventType.end:\n\t\t\t\t\tif (entry.listener != null && entry.listener.end) entry.listener.end(entry);\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\n\t\t\t\t\t\tif (listeners[ii].end) listeners[ii].end(entry);\n //deprecation\n entry.onEnd && this.deprecateStuff() && entry.onEnd(entry.trackIndex);\n this.animState.onEnd && this.deprecateStuff() && this.animState.onEnd(entry.trackIndex);\n\t\t\t\t\t// Fall through.\n\t\t\t\tcase EventType.dispose:\n\t\t\t\t\tif (entry.listener != null && entry.listener.dispose) entry.listener.dispose(entry);\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\n\t\t\t\t\t\tif (listeners[ii].dispose) listeners[ii].dispose(entry);\n\t\t\t\t\tthis.animState.trackEntryPool.free(entry);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EventType.complete:\n\t\t\t\t\tif (entry.listener != null && entry.listener.complete) entry.listener.complete(entry);\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\n\t\t\t\t\t\tif (listeners[ii].complete) listeners[ii].complete(entry);\n //deprecation\n\n let count = MathUtils.toInt(entry.loopsCount()) ;\n entry.onComplete && this.deprecateStuff() && entry.onComplete(entry.trackIndex, count);\n this.animState.onComplete && this.deprecateStuff() && this.animState.onComplete(entry.trackIndex, count);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EventType.event:\n\t\t\t\t\tlet event = objects[i++ + 2] as Event;\n\t\t\t\t\tif (entry.listener != null && entry.listener.event) entry.listener.event(entry, event);\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\n\t\t\t\t\t\tif (listeners[ii].event) listeners[ii].event(entry, event);\n //deprecation\n entry.onEvent && this.deprecateStuff() && entry.onEvent(entry.trackIndex, event);\n this.animState.onEvent && this.deprecateStuff() && this.animState.onEvent(entry.trackIndex, event);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.clear();\n\n\t\t\tthis.drainDisabled = false;\n\t\t}\n\n\t\tclear () {\n\t\t\tthis.objects.length = 0;\n\t\t}\n\n\n\t}\n\n\texport enum EventType {\n\t\tstart, interrupt, end, dispose, complete, event\n\t}\n\n\texport interface AnimationStateListener2 {\n\t\t/** Invoked when this entry has been set as the current entry. */\n\t\tstart? (entry: TrackEntry): void;\n\n\t\t/** Invoked when another entry has replaced this entry as the current entry. This entry may continue being applied for\n\t\t * mixing. */\n\t\tinterrupt? (entry: TrackEntry): void;\n\n\t\t/** Invoked when this entry is no longer the current entry and will never be applied again. */\n\t\tend? (entry: TrackEntry): void;\n\n\t\t/** Invoked when this entry will be disposed. This may occur without the entry ever being set as the current entry.\n\t\t * References to the entry should not be kept after dispose is called, as it may be destroyed or reused. */\n\t\tdispose? (entry: TrackEntry): void;\n\n\t\t/** Invoked every time this entry's animation completes a loop. */\n\t\tcomplete? (entry: TrackEntry): void;\n\n\t\t/** Invoked when this entry's animation triggers an event. */\n\t\tevent? (entry: TrackEntry, event: Event): void;\n\t}\n\n\texport abstract class AnimationStateAdapter2 implements AnimationStateListener2 {\n\t\tstart (entry: TrackEntry) {\n\t\t}\n\n\t\tinterrupt (entry: TrackEntry) {\n\t\t}\n\n\t\tend (entry: TrackEntry) {\n\t\t}\n\n\t\tdispose (entry: TrackEntry) {\n\t\t}\n\n\t\tcomplete (entry: TrackEntry) {\n\t\t}\n\n\t\tevent (entry: TrackEntry, event: Event) {\n\t\t}\n\t}\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class AnimationStateData {\n skeletonData: SkeletonData;\n animationToMixTime: Map = {};\n defaultMix = 0;\n\n constructor(skeletonData: SkeletonData) {\n if (skeletonData == null) throw new Error(\"skeletonData cannot be null.\");\n this.skeletonData = skeletonData;\n }\n\n setMix(fromName: string, toName: string, duration: number) {\n let from = this.skeletonData.findAnimation(fromName);\n if (from == null) throw new Error(\"Animation not found: \" + fromName);\n let to = this.skeletonData.findAnimation(toName);\n if (to == null) throw new Error(\"Animation not found: \" + toName);\n this.setMixWith(from, to, duration);\n }\n\n private static deprecatedWarning1: boolean = false;\n\n setMixByName(fromName: string, toName: string, duration: number) {\n if (!AnimationStateData.deprecatedWarning1) {\n AnimationStateData.deprecatedWarning1 = true;\n console.warn(\"Deprecation Warning: AnimationStateData.setMixByName is deprecated, please use setMix from now on.\");\n }\n this.setMix(fromName, toName, duration);\n }\n\n setMixWith(from: Animation, to: Animation, duration: number) {\n if (from == null) throw new Error(\"from cannot be null.\");\n if (to == null) throw new Error(\"to cannot be null.\");\n let key = from.name + to.name;\n this.animationToMixTime[key] = duration;\n }\n\n getMix(from: Animation, to: Animation) {\n let key = from.name + to.name;\n let value = this.animationToMixTime[key];\n return value === undefined ? this.defaultMix : value;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class AtlasAttachmentLoader implements AttachmentLoader {\n atlas: TextureAtlas;\n\n constructor(atlas: TextureAtlas) {\n this.atlas = atlas;\n }\n\n /** @return May be null to not load an attachment. */\n newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment {\n let region = this.atlas.findRegion(path);\n if (region == null) throw new Error(\"Region not found in atlas: \" + path + \" (region attachment: \" + name + \")\");\n let attachment = new RegionAttachment(name);\n attachment.region = region;\n return attachment;\n }\n\n /** @return May be null to not load an attachment. */\n newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment {\n let region = this.atlas.findRegion(path);\n if (region == null) throw new Error(\"Region not found in atlas: \" + path + \" (mesh attachment: \" + name + \")\");\n let attachment = new MeshAttachment(name);\n attachment.region = region;\n return attachment;\n }\n\n /** @return May be null to not load an attachment. */\n newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment {\n return new BoundingBoxAttachment(name);\n }\n\n /** @return May be null to not load an attachment */\n newPathAttachment(skin: Skin, name: string): PathAttachment {\n return new PathAttachment(name);\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export abstract class Attachment {\n name: string;\n\n constructor(name: string) {\n if (name == null) throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n }\n\n export abstract class VertexAttachment extends Attachment {\n bones: Array;\n vertices: ArrayLike;\n worldVerticesLength = 0;\n\n constructor(name: string) {\n super(name);\n }\n\n computeWorldVertices(slot: Slot, worldVertices: ArrayLike) {\n this.computeWorldVerticesWith(slot, 0, this.worldVerticesLength, worldVertices, 0);\n }\n\n /** Transforms local vertices to world coordinates.\n * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y.\n * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start.\n * @param worldVertices The output world vertices. Must have a length >= offset + count.\n * @param offset The worldVertices index to begin writing values. */\n computeWorldVerticesWith(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number) {\n count += offset;\n let skeleton = slot.bone.skeleton;\n let deformArray = slot.attachmentVertices;\n let vertices = this.vertices;\n let bones = this.bones;\n if (bones == null) {\n if (deformArray.length > 0) vertices = deformArray;\n let bone = slot.bone;\n let m = bone.matrix;\n let x = m.tx;\n let y = m.ty;\n let a = m.a, b = m.c, c = m.b, d = m.d;\n for (let v = start, w = offset; w < count; v += 2, w += 2) {\n let vx = vertices[v], vy = vertices[v + 1];\n worldVertices[w] = vx * a + vy * b + x;\n worldVertices[w + 1] = vx * c + vy * d + y;\n }\n return;\n }\n let v = 0, skip = 0;\n for (let i = 0; i < start; i += 2) {\n let n = bones[v];\n v += n + 1;\n skip += n;\n }\n let skeletonBones = skeleton.bones;\n if (deformArray.length == 0) {\n for (let w = offset, b = skip * 3; w < count; w += 2) {\n let wx = 0, wy = 0;\n let n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3) {\n let bone = skeletonBones[bones[v]];\n let m = bone.matrix;\n let vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2];\n wx += (vx * m.a + vy * m.c + m.tx) * weight;\n wy += (vx * m.b + vy * m.d + m.ty) * weight;\n }\n worldVertices[w] = wx;\n worldVertices[w + 1] = wy;\n }\n } else {\n let deform = deformArray;\n for (let w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) {\n let wx = 0, wy = 0;\n let n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3, f += 2) {\n let bone = skeletonBones[bones[v]];\n let m = bone.matrix;\n let vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2];\n wx += (vx * m.a + vy * m.c + m.tx) * weight;\n wy += (vx * m.b + vy * m.d + m.ty) * weight;\n }\n worldVertices[w] = wx;\n worldVertices[w + 1] = wy;\n }\n }\n }\n\n /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */\n applyDeform(sourceAttachment: VertexAttachment) {\n return this == sourceAttachment;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export interface AttachmentLoader {\n /** @return May be null to not load an attachment. */\n newRegionAttachment (skin: Skin, name: string, path: string): RegionAttachment;\n\n /** @return May be null to not load an attachment. */\n newMeshAttachment (skin: Skin, name: string, path: string): MeshAttachment;\n\n /** @return May be null to not load an attachment. */\n newBoundingBoxAttachment (skin: Skin, name: string): BoundingBoxAttachment;\n\n /** @return May be null to not load an attachment */\n newPathAttachment(skin: Skin, name: string): PathAttachment;\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export enum AttachmentType {\n Region, BoundingBox, Mesh, LinkedMesh, Path\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class BoundingBoxAttachment extends VertexAttachment {\n color = new Color(1, 1, 1, 1);\n\n constructor(name: string) {\n super(name);\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class MeshAttachment extends VertexAttachment {\n region: TextureRegion;\n path: string;\n regionUVs: ArrayLike;\n triangles: Array;\n color = new Color(1, 1, 1, 1);\n hullLength: number;\n private parentMesh: MeshAttachment;\n inheritDeform = false;\n tempColor = new Color(0, 0, 0, 0);\n\n constructor(name: string) {\n super(name);\n }\n\n updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike {\n return [];\n //nothing\n }\n\n updateUVs(region: TextureRegion, uvs: ArrayLike): ArrayLike {\n let regionUVs = this.regionUVs;\n let n = regionUVs.length;\n if (!uvs || uvs.length != n) {\n uvs = Utils.newFloatArray(n);\n }\n\n if (region == null) {\n return;\n }\n\n let texture = region.texture;\n let r = (texture as any)._uvs;\n let w1 = region.width, h1 = region.height, w2 = region.originalWidth, h2 = region.originalHeight;\n let x = region.offsetX, y = region.pixiOffsetY;\n\n for (let i = 0; i < n; i += 2) {\n let u = this.regionUVs[i], v = this.regionUVs[i + 1];\n u = (u * w2 - x) / w1;\n v = (v * h2 - y) / h1;\n uvs[i] = (r.x0 * (1 - u) + r.x1 * u) * (1 - v) + (r.x3 * (1 - u) + r.x2 * u) * v;\n uvs[i + 1] = (r.y0 * (1 - u) + r.y1 * u) * (1 - v) + (r.y3 * (1 - u) + r.y2 * u) * v;\n }\n\n return uvs;\n }\n\n applyDeform(sourceAttachment: VertexAttachment): boolean {\n return this == sourceAttachment || (this.inheritDeform && this.parentMesh == sourceAttachment);\n }\n\n getParentMesh() {\n return this.parentMesh;\n }\n\n /** @param parentMesh May be null. */\n setParentMesh(parentMesh: MeshAttachment) {\n this.parentMesh = parentMesh;\n if (parentMesh != null) {\n this.bones = parentMesh.bones;\n this.vertices = parentMesh.vertices;\n this.regionUVs = parentMesh.regionUVs;\n this.triangles = parentMesh.triangles;\n this.hullLength = parentMesh.hullLength;\n this.worldVerticesLength = parentMesh.worldVerticesLength;\n }\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class PathAttachment extends VertexAttachment {\n lengths: Array;\n closed = false;\n constantSpeed = false;\n color = new Color(1, 1, 1, 1);\n\n constructor(name: string) {\n super(name);\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class RegionAttachment extends Attachment {\n x = 0;\n y = 0;\n scaleX = 1;\n scaleY = 1;\n rotation = 0;\n width = 0;\n height = 0;\n color = new Color(1, 1, 1, 1);\n\n path: string;\n region: TextureRegion;\n\n constructor(name: string) {\n super(name);\n }\n\n updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike {\n return [];\n //nothing\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export enum BlendMode {\n Normal,\n Additive,\n Multiply,\n Screen\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class Bone implements Updatable {\n static yDown: boolean = false;\n //be careful! Spine b,c is c,b in pixi matrix\n matrix = new PIXI.Matrix();\n\n get worldX(): number {\n return this.matrix.tx;\n }\n\n get worldY(): number {\n return this.matrix.ty;\n }\n\n data: BoneData;\n skeleton: Skeleton;\n parent: Bone;\n children = new Array();\n x = 0;\n y = 0;\n rotation = 0;\n scaleX = 0;\n scaleY = 0;\n shearX = 0;\n shearY = 0;\n ax = 0;\n ay = 0;\n arotation = 0;\n ascaleX = 0;\n ascaleY = 0;\n ashearX = 0;\n ashearY = 0;\n appliedValid = false;\n\n sorted = false;\n\n /** @param parent May be null. */\n constructor(data: BoneData, skeleton: Skeleton, parent: Bone) {\n if (data == null) throw new Error(\"data cannot be null.\");\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.skeleton = skeleton;\n this.parent = parent;\n this.setToSetupPose();\n }\n\n /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */\n update() {\n this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY);\n }\n\n /** Computes the world transform using the parent bone and this bone's local transform. */\n updateWorldTransform() {\n this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY);\n }\n\n /** Computes the world transform using the parent bone and the specified local transform. */\n updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number) {\n this.ax = x;\n this.ay = y;\n this.arotation = rotation;\n this.ascaleX = scaleX;\n this.ascaleY = scaleY;\n this.ashearX = shearX;\n this.ashearY = shearY;\n this.appliedValid = true;\n\n let parent = this.parent;\n let m = this.matrix;\n if (parent == null) { // Root bone.\n let rotationY = rotation + 90 + shearY;\n let la = MathUtils.cosDeg(rotation + shearX) * scaleX;\n let lb = MathUtils.cosDeg(rotationY) * scaleY;\n let lc = MathUtils.sinDeg(rotation + shearX) * scaleX;\n let ld = MathUtils.sinDeg(rotationY) * scaleY;\n let skeleton = this.skeleton;\n if (skeleton.flipX) {\n x = -x;\n la = -la;\n lb = -lb;\n }\n if (skeleton.flipY !== Bone.yDown) {\n y = -y;\n lc = -lc;\n ld = -ld;\n }\n m.a = la;\n m.c = lb;\n m.b = lc;\n m.d = ld;\n m.tx = x + skeleton.x;\n m.ty = y + skeleton.y;\n return;\n }\n\n let pa = parent.matrix.a, pb = parent.matrix.c, pc = parent.matrix.b, pd = parent.matrix.d;\n m.tx = pa * x + pb * y + parent.matrix.tx;\n m.ty = pc * x + pd * y + parent.matrix.ty;\n switch (this.data.transformMode) {\n case TransformMode.Normal: {\n let rotationY = rotation + 90 + shearY;\n let la = MathUtils.cosDeg(rotation + shearX) * scaleX;\n let lb = MathUtils.cosDeg(rotationY) * scaleY;\n let lc = MathUtils.sinDeg(rotation + shearX) * scaleX;\n let ld = MathUtils.sinDeg(rotationY) * scaleY;\n m.a = pa * la + pb * lc;\n m.c = pa * lb + pb * ld;\n m.b = pc * la + pd * lc;\n m.d = pc * lb + pd * ld;\n return;\n }\n case TransformMode.OnlyTranslation: {\n let rotationY = rotation + 90 + shearY;\n m.a = MathUtils.cosDeg(rotation + shearX) * scaleX;\n m.c = MathUtils.cosDeg(rotationY) * scaleY;\n m.b = MathUtils.sinDeg(rotation + shearX) * scaleX;\n m.d = MathUtils.sinDeg(rotationY) * scaleY;\n break;\n }\n case TransformMode.NoRotationOrReflection: {\n let s = pa * pa + pc * pc;\n let prx = 0;\n if (s > 0.0001) {\n s = Math.abs(pa * pd - pb * pc) / s;\n pb = pc * s;\n pd = pa * s;\n prx = Math.atan2(pc, pa) * MathUtils.radDeg;\n } else {\n pa = 0;\n pc = 0;\n prx = 90 - Math.atan2(pd, pb) * MathUtils.radDeg;\n }\n let rx = rotation + shearX - prx;\n let ry = rotation + shearY - prx + 90;\n let la = MathUtils.cosDeg(rx) * scaleX;\n let lb = MathUtils.cosDeg(ry) * scaleY;\n let lc = MathUtils.sinDeg(rx) * scaleX;\n let ld = MathUtils.sinDeg(ry) * scaleY;\n m.a = pa * la - pb * lc;\n m.c = pa * lb - pb * ld;\n m.b = pc * la + pd * lc;\n m.d = pc * lb + pd * ld;\n break;\n }\n case TransformMode.NoScale:\n case TransformMode.NoScaleOrReflection: {\n let cos = MathUtils.cosDeg(rotation);\n let sin = MathUtils.sinDeg(rotation);\n let za = pa * cos + pb * sin;\n let zc = pc * cos + pd * sin;\n let s = Math.sqrt(za * za + zc * zc);\n if (s > 0.00001) s = 1 / s;\n za *= s;\n zc *= s;\n s = Math.sqrt(za * za + zc * zc);\n let r = Math.PI / 2 + Math.atan2(zc, za);\n let zb = Math.cos(r) * s;\n let zd = Math.sin(r) * s;\n let la = MathUtils.cosDeg(shearX) * scaleX;\n let lb = MathUtils.cosDeg(90 + shearY) * scaleY;\n let lc = MathUtils.sinDeg(shearX) * scaleX;\n let ld = MathUtils.sinDeg(90 + shearY) * scaleY;\n m.a = za * la + zb * lc;\n m.c = za * lb + zb * ld;\n m.b = zc * la + zd * lc;\n m.d = zc * lb + zd * ld;\n if (this.data.transformMode != TransformMode.NoScaleOrReflection ? pa * pd - pb * pc < 0 : ((this.skeleton.flipX != this.skeleton.flipY) != Bone.yDown)) {\n m.c = -m.c;\n m.d = -m.d;\n }\n return;\n }\n }\n if (this.skeleton.flipX) {\n m.a = -m.a;\n m.c = -m.c;\n }\n if (this.skeleton.flipY != Bone.yDown) {\n m.b = -m.b;\n m.d = -m.d;\n }\n }\n\n setToSetupPose() {\n let data = this.data;\n this.x = data.x;\n this.y = data.y;\n this.rotation = data.rotation;\n this.scaleX = data.scaleX;\n this.scaleY = data.scaleY;\n this.shearX = data.shearX;\n this.shearY = data.shearY;\n }\n\n getWorldRotationX() {\n return Math.atan2(this.matrix.b, this.matrix.a) * MathUtils.radDeg;\n }\n\n getWorldRotationY() {\n return Math.atan2(this.matrix.d, this.matrix.c) * MathUtils.radDeg;\n }\n\n getWorldScaleX() {\n let m = this.matrix;\n return Math.sqrt(m.a * m.a + m.c * m.c);\n }\n\n getWorldScaleY() {\n let m = this.matrix;\n return Math.sqrt(m.b * m.b + m.d * m.d);\n }\n\n worldToLocalRotationX() {\n let parent = this.parent;\n if (parent == null) return this.arotation;\n let pm = parent.matrix, m = this.matrix;\n return Math.atan2(pm.a * m.b - pm.b * m.a, pm.d * m.a - pm.c * m.b) * MathUtils.radDeg;\n }\n\n worldToLocalRotationY() {\n let parent = this.parent;\n if (parent == null) return this.arotation;\n let pm = parent.matrix, m = this.matrix;\n return Math.atan2(pm.a * m.d - pm.b * m.c, pm.d * m.c - pm.c * m.d) * MathUtils.radDeg;\n }\n\n rotateWorld(degrees: number) {\n let m = this.matrix;\n let a = this.matrix.a, b = m.c, c = m.b, d = m.d;\n let cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees);\n m.a = cos * a - sin * c;\n m.c = cos * b - sin * d;\n m.b = sin * a + cos * c;\n m.d = sin * b + cos * d;\n this.appliedValid = false;\n }\n\n /** Computes the individual applied transform values from the world transform. This can be useful to perform processing using\n * the applied transform after the world transform has been modified directly (eg, by a constraint).\n *

\n * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. */\n updateAppliedTransform() {\n this.appliedValid = true;\n let parent = this.parent;\n let m = this.matrix;\n if (parent == null) {\n this.ax = m.tx;\n this.ay = m.ty;\n this.arotation = Math.atan2(m.b, m.a) * MathUtils.radDeg;\n this.ascaleX = Math.sqrt(m.a * m.a + m.b * m.b);\n this.ascaleY = Math.sqrt(m.c * m.c + m.d * m.d);\n this.ashearX = 0;\n this.ashearY = Math.atan2(m.a * m.c + m.b * m.d, m.a * m.d - m.b * m.c) * MathUtils.radDeg;\n return;\n }\n let pm = parent.matrix;\n let pid = 1 / (pm.a * pm.d - pm.b * pm.c);\n let dx = m.tx - pm.tx, dy = m.ty - pm.ty;\n this.ax = (dx * pm.d * pid - dy * pm.c * pid);\n this.ay = (dy * pm.a * pid - dx * pm.b * pid);\n let ia = pid * pm.d;\n let id = pid * pm.a;\n let ib = pid * pm.c;\n let ic = pid * pm.b;\n let ra = ia * m.a - ib * m.b;\n let rb = ia * m.c - ib * m.d;\n let rc = id * m.b - ic * m.a;\n let rd = id * m.d - ic * m.c;\n this.ashearX = 0;\n this.ascaleX = Math.sqrt(ra * ra + rc * rc);\n if (this.ascaleX > 0.0001) {\n let det = ra * rd - rb * rc;\n this.ascaleY = det / this.ascaleX;\n this.ashearY = Math.atan2(ra * rb + rc * rd, det) * MathUtils.radDeg;\n this.arotation = Math.atan2(rc, ra) * MathUtils.radDeg;\n } else {\n this.ascaleX = 0;\n this.ascaleY = Math.sqrt(rb * rb + rd * rd);\n this.ashearY = 0;\n this.arotation = 90 - Math.atan2(rd, rb) * MathUtils.radDeg;\n }\n }\n\n worldToLocal(world: Vector2) {\n let m = this.matrix;\n let a = m.a, b = m.c, c = m.b, d = m.d;\n let invDet = 1 / (a * d - b * c);\n let x = world.x - m.tx, y = world.y - m.ty;\n world.x = (x * d * invDet - y * b * invDet);\n world.y = (y * a * invDet - x * c * invDet);\n return world;\n }\n\n localToWorld(local: Vector2) {\n let m = this.matrix;\n let x = local.x, y = local.y;\n local.x = x * m.a + y * m.c + m.tx;\n local.y = x * m.b + y * m.d + m.ty;\n return local;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class BoneData {\n index: number;\n name: string;\n parent: BoneData;\n length: number;\n x = 0;\n y = 0;\n rotation = 0;\n scaleX = 1;\n scaleY = 1;\n shearX = 0;\n shearY = 0;\n transformMode = TransformMode.Normal;\n\n constructor(index: number, name: string, parent: BoneData) {\n if (index < 0) throw new Error(\"index must be >= 0.\");\n if (name == null) throw new Error(\"name cannot be null.\");\n this.index = index;\n this.name = name;\n this.parent = parent;\n }\n }\n\n export enum TransformMode {\n Normal, OnlyTranslation, NoRotationOrReflection, NoScale, NoScaleOrReflection\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License v2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export interface Constraint extends Updatable {\n getOrder(): number;\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class Event {\n data: EventData;\n intValue: number;\n floatValue: number;\n stringValue: string;\n time: number;\n\n constructor(time: number, data: EventData) {\n if (data == null) throw new Error(\"data cannot be null.\");\n this.time = time;\n this.data = data;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class EventData {\n name: string;\n intValue: number;\n floatValue: number;\n stringValue: string;\n\n constructor (name: string) {\n this.name = name;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class IkConstraint implements Constraint {\n data: IkConstraintData;\n bones: Array;\n target: Bone;\n mix = 1;\n bendDirection = 0;\n\n level = 0;\n\n constructor(data: IkConstraintData, skeleton: Skeleton) {\n if (data == null) throw new Error(\"data cannot be null.\");\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.mix = data.mix;\n this.bendDirection = data.bendDirection;\n\n this.bones = new Array();\n for (let i = 0; i < data.bones.length; i++)\n this.bones.push(skeleton.findBone(data.bones[i].name));\n this.target = skeleton.findBone(data.target.name);\n }\n\n getOrder() {\n return this.data.order;\n }\n\n apply() {\n this.update();\n }\n\n update() {\n let target = this.target;\n let bones = this.bones;\n switch (bones.length) {\n case 1:\n this.apply1(bones[0], target.worldX, target.worldY, this.mix);\n break;\n case 2:\n this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix);\n break;\n }\n }\n\n /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world\n * coordinate system. */\n apply1(bone: Bone, targetX: number, targetY: number, alpha: number) {\n if (!bone.appliedValid) bone.updateAppliedTransform();\n let pp = bone.parent.matrix;\n let id = 1 / (pp.a * pp.d - pp.b * pp.c);\n let x = targetX - pp.tx, y = targetY - pp.ty;\n let tx = (x * pp.d - y * pp.c) * id - bone.ax, ty = (y * pp.a - x * pp.b) * id - bone.ay;\n let rotationIK = Math.atan2(ty, tx) * MathUtils.radDeg - bone.ashearX - bone.arotation;\n if (bone.ascaleX < 0) rotationIK += 180;\n if (rotationIK > 180)\n rotationIK -= 360;\n else if (rotationIK < -180) rotationIK += 360;\n bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, bone.ascaleX, bone.ascaleY, bone.ashearX,\n bone.ashearY);\n }\n\n /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The\n * target is specified in the world coordinate system.\n * @param child A direct descendant of the parent bone. */\n apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number) {\n if (alpha == 0) {\n child.updateWorldTransform();\n return;\n }\n if (!parent.appliedValid) parent.updateAppliedTransform();\n if (!child.appliedValid) child.updateAppliedTransform();\n let px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, csx = child.ascaleX;\n\n let os1 = 0, os2 = 0, s2 = 0;\n if (psx < 0) {\n psx = -psx;\n os1 = 180;\n s2 = -1;\n } else {\n os1 = 0;\n s2 = 1;\n }\n if (psy < 0) {\n psy = -psy;\n s2 = -s2;\n }\n if (csx < 0) {\n csx = -csx;\n os2 = 180;\n } else\n os2 = 0;\n let pm = parent.matrix;\n let cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = pm.a, b = pm.c, c = pm.b, d = pm.d;\n let u = Math.abs(psx - psy) <= 0.0001;\n if (!u) {\n cy = 0;\n cwx = a * cx + pm.tx;\n cwy = c * cx + pm.ty;\n } else {\n cy = child.ay;\n cwx = a * cx + b * cy + pm.tx;\n cwy = c * cx + d * cy + pm.ty;\n }\n let pp = parent.parent;\n let ppm = parent.parent.matrix;\n a = ppm.a;\n b = ppm.c;\n c = ppm.b;\n d = ppm.d;\n let id = 1 / (a * d - b * c), x = targetX - ppm.tx, y = targetY - ppm.ty;\n let tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py;\n x = cwx - ppm.tx;\n y = cwy - ppm.ty;\n let dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py;\n let l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0;\n outer:\n if (u) {\n l2 *= psx;\n let cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2);\n if (cos < -1)\n cos = -1;\n else if (cos > 1) cos = 1;\n a2 = Math.acos(cos) * bendDir;\n a = l1 + l2 * cos;\n b = l2 * Math.sin(a2);\n a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b);\n } else {\n a = psx * l2;\n b = psy * l2;\n let aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx);\n c = bb * l1 * l1 + aa * dd - aa * bb;\n let c1 = -2 * bb * l1, c2 = bb - aa;\n d = c1 * c1 - 4 * c2 * c;\n if (d >= 0) {\n let q = Math.sqrt(d);\n if (c1 < 0) q = -q;\n q = -(c1 + q) / 2;\n let r0 = q / c2, r1 = c / q;\n let r = Math.abs(r0) < Math.abs(r1) ? r0 : r1;\n if (r * r <= dd) {\n y = Math.sqrt(dd - r * r) * bendDir;\n a1 = ta - Math.atan2(y, r);\n a2 = Math.atan2(y / psy, (r - l1) / psx);\n break outer;\n }\n }\n let minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0;\n let maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0;\n x = l1 + a;\n d = x * x;\n if (d > maxDist) {\n maxAngle = 0;\n maxDist = d;\n maxX = x;\n }\n x = l1 - a;\n d = x * x;\n if (d < minDist) {\n minAngle = MathUtils.PI;\n minDist = d;\n minX = x;\n }\n let angle = Math.acos(-a * l1 / (aa - bb));\n x = a * Math.cos(angle) + l1;\n y = b * Math.sin(angle);\n d = x * x + y * y;\n if (d < minDist) {\n minAngle = angle;\n minDist = d;\n minX = x;\n minY = y;\n }\n if (d > maxDist) {\n maxAngle = angle;\n maxDist = d;\n maxX = x;\n maxY = y;\n }\n if (dd <= (minDist + maxDist) / 2) {\n a1 = ta - Math.atan2(minY * bendDir, minX);\n a2 = minAngle * bendDir;\n } else {\n a1 = ta - Math.atan2(maxY * bendDir, maxX);\n a2 = maxAngle * bendDir;\n }\n }\n let os = Math.atan2(cy, cx) * s2;\n let rotation = parent.arotation;\n a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation;\n if (a1 > 180)\n a1 -= 360;\n else if (a1 < -180) a1 += 360;\n parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.ascaleX, parent.ascaleY, 0, 0);\n rotation = child.arotation;\n a2 = ((a2 + os) * MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation;\n if (a2 > 180)\n a2 -= 360;\n else if (a2 < -180) a2 += 360;\n child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class IkConstraintData {\n name: string;\n order = 0;\n bones = new Array();\n target: BoneData;\n bendDirection = 1;\n mix = 1;\n\n constructor(name: string) {\n this.name = name;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class PathConstraint implements Constraint {\n static NONE = -1;\n static BEFORE = -2;\n static AFTER = -3;\n\n data: PathConstraintData;\n bones: Array;\n target: Slot;\n position = 0;\n spacing = 0;\n rotateMix = 0;\n translateMix = 0;\n\n spaces = new Array();\n positions = new Array();\n world = new Array();\n curves = new Array();\n lengths = new Array();\n segments = new Array();\n\n constructor(data: PathConstraintData, skeleton: Skeleton) {\n if (data == null) throw new Error(\"data cannot be null.\");\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.bones = new Array();\n for (let i = 0, n = data.bones.length; i < n; i++)\n this.bones.push(skeleton.findBone(data.bones[i].name));\n this.target = skeleton.findSlot(data.target.name);\n this.position = data.position;\n this.spacing = data.spacing;\n this.rotateMix = data.rotateMix;\n this.translateMix = data.translateMix;\n }\n\n apply() {\n this.update();\n }\n\n update() {\n let attachment = this.target.getAttachment();\n if (!(attachment instanceof PathAttachment)) return;\n\n let rotateMix = this.rotateMix, translateMix = this.translateMix;\n let translate = translateMix > 0, rotate = rotateMix > 0;\n if (!translate && !rotate) return;\n\n let data = this.data;\n let spacingMode = data.spacingMode;\n let lengthSpacing = spacingMode == SpacingMode.Length;\n let rotateMode = data.rotateMode;\n let tangents = rotateMode == RotateMode.Tangent, scale = rotateMode == RotateMode.ChainScale;\n let boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;\n let bones = this.bones;\n let spaces = Utils.setArraySize(this.spaces, spacesCount), lengths: Array = null;\n let spacing = this.spacing;\n if (scale || lengthSpacing) {\n if (scale) lengths = Utils.setArraySize(this.lengths, boneCount);\n for (let i = 0, n = spacesCount - 1; i < n;) {\n let bone = bones[i];\n let m = bone.matrix;\n let length = bone.data.length, x = length * m.a, y = length * m.b;\n length = Math.sqrt(x * x + y * y);\n if (scale) lengths[i] = length;\n spaces[++i] = lengthSpacing ? Math.max(0, length + spacing) : spacing;\n }\n } else {\n for (let i = 1; i < spacesCount; i++)\n spaces[i] = spacing;\n }\n\n let positions = this.computeWorldPositions(attachment, spacesCount, tangents,\n data.positionMode == PositionMode.Percent, spacingMode == SpacingMode.Percent);\n let boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;\n let tip = false;\n if (offsetRotation == 0)\n tip = rotateMode == RotateMode.Chain;\n else {\n tip = false;\n let pm = this.target.bone.matrix;\n offsetRotation *= pm.a * pm.d - pm.b * pm.c > 0 ? MathUtils.degRad : -MathUtils.degRad;\n }\n for (let i = 0, p = 3; i < boneCount; i++, p += 3) {\n let bone = bones[i];\n let m = bone.matrix;\n m.tx += (boneX - m.tx) * translateMix;\n m.ty += (boneY - m.ty) * translateMix;\n let x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;\n if (scale) {\n let length = lengths[i];\n if (length != 0) {\n let s = (Math.sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1;\n m.a *= s;\n m.b *= s;\n }\n }\n boneX = x;\n boneY = y;\n if (rotate) {\n let a = m.a, b = m.c, c = m.b, d = m.d, r = 0, cos = 0, sin = 0;\n if (tangents)\n r = positions[p - 1];\n else if (spaces[i + 1] == 0)\n r = positions[p + 2];\n else\n r = Math.atan2(dy, dx);\n r -= Math.atan2(c, a);\n if (tip) {\n cos = Math.cos(r);\n sin = Math.sin(r);\n let length = bone.data.length;\n boneX += (length * (cos * a - sin * c) - dx) * rotateMix;\n boneY += (length * (sin * a + cos * c) - dy) * rotateMix;\n } else {\n r += offsetRotation;\n }\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI)\n r += MathUtils.PI2;\n r *= rotateMix;\n cos = Math.cos(r);\n sin = Math.sin(r);\n m.a = cos * a - sin * c;\n m.c = cos * b - sin * d;\n m.b = sin * a + cos * c;\n m.d = sin * b + cos * d;\n }\n bone.appliedValid = false;\n }\n }\n\n computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean,\n percentSpacing: boolean) {\n let target = this.target;\n let position = this.position;\n let spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world: Array = null;\n let closed = path.closed;\n let verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE;\n\n if (!path.constantSpeed) {\n let lengths = path.lengths;\n curveCount -= closed ? 1 : 2;\n let pathLength = lengths[curveCount];\n if (percentPosition) position *= pathLength;\n if (percentSpacing) {\n for (let i = 0; i < spacesCount; i++)\n spaces[i] *= pathLength;\n }\n world = Utils.setArraySize(this.world, 8);\n for (let i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) {\n let space = spaces[i];\n position += space;\n let p = position;\n\n if (closed) {\n p %= pathLength;\n if (p < 0) p += pathLength;\n curve = 0;\n } else if (p < 0) {\n if (prevCurve != PathConstraint.BEFORE) {\n prevCurve = PathConstraint.BEFORE;\n path.computeWorldVerticesWith(target, 2, 4, world, 0);\n }\n this.addBeforePosition(p, world, 0, out, o);\n continue;\n } else if (p > pathLength) {\n if (prevCurve != PathConstraint.AFTER) {\n prevCurve = PathConstraint.AFTER;\n path.computeWorldVerticesWith(target, verticesLength - 6, 4, world, 0);\n }\n this.addAfterPosition(p - pathLength, world, 0, out, o);\n continue;\n }\n\n // Determine curve containing position.\n for (; ; curve++) {\n let length = lengths[curve];\n if (p > length) continue;\n if (curve == 0)\n p /= length;\n else {\n let prev = lengths[curve - 1];\n p = (p - prev) / (length - prev);\n }\n break;\n }\n if (curve != prevCurve) {\n prevCurve = curve;\n if (closed && curve == curveCount) {\n path.computeWorldVerticesWith(target, verticesLength - 4, 4, world, 0);\n path.computeWorldVerticesWith(target, 0, 4, world, 4);\n } else\n path.computeWorldVerticesWith(target, curve * 6 + 2, 8, world, 0);\n }\n this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o,\n tangents || (i > 0 && space == 0));\n }\n return out;\n }\n\n // World vertices.\n if (closed) {\n verticesLength += 2;\n world = Utils.setArraySize(this.world, verticesLength);\n path.computeWorldVerticesWith(target, 2, verticesLength - 4, world, 0);\n path.computeWorldVerticesWith(target, 0, 2, world, verticesLength - 4);\n world[verticesLength - 2] = world[0];\n world[verticesLength - 1] = world[1];\n } else {\n curveCount--;\n verticesLength -= 4;\n world = Utils.setArraySize(this.world, verticesLength);\n path.computeWorldVerticesWith(target, 2, verticesLength, world, 0);\n }\n\n // Curve lengths.\n let curves = Utils.setArraySize(this.curves, curveCount);\n let pathLength = 0;\n let x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0;\n let tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0;\n for (let i = 0, w = 2; i < curveCount; i++, w += 6) {\n cx1 = world[w];\n cy1 = world[w + 1];\n cx2 = world[w + 2];\n cy2 = world[w + 3];\n x2 = world[w + 4];\n y2 = world[w + 5];\n tmpx = (x1 - cx1 * 2 + cx2) * 0.1875;\n tmpy = (y1 - cy1 * 2 + cy2) * 0.1875;\n dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375;\n dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375;\n ddfx = tmpx * 2 + dddfx;\n ddfy = tmpy * 2 + dddfy;\n dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667;\n dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667;\n pathLength += Math.sqrt(dfx * dfx + dfy * dfy);\n dfx += ddfx;\n dfy += ddfy;\n ddfx += dddfx;\n ddfy += dddfy;\n pathLength += Math.sqrt(dfx * dfx + dfy * dfy);\n dfx += ddfx;\n dfy += ddfy;\n pathLength += Math.sqrt(dfx * dfx + dfy * dfy);\n dfx += ddfx + dddfx;\n dfy += ddfy + dddfy;\n pathLength += Math.sqrt(dfx * dfx + dfy * dfy);\n curves[i] = pathLength;\n x1 = x2;\n y1 = y2;\n }\n if (percentPosition) position *= pathLength;\n if (percentSpacing) {\n for (let i = 0; i < spacesCount; i++)\n spaces[i] *= pathLength;\n }\n\n let segments = this.segments;\n let curveLength = 0;\n for (let i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) {\n let space = spaces[i];\n position += space;\n let p = position;\n\n if (closed) {\n p %= pathLength;\n if (p < 0) p += pathLength;\n curve = 0;\n } else if (p < 0) {\n this.addBeforePosition(p, world, 0, out, o);\n continue;\n } else if (p > pathLength) {\n this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o);\n continue;\n }\n\n // Determine curve containing position.\n for (; ; curve++) {\n let length = curves[curve];\n if (p > length) continue;\n if (curve == 0)\n p /= length;\n else {\n let prev = curves[curve - 1];\n p = (p - prev) / (length - prev);\n }\n break;\n }\n\n // Curve segment lengths.\n if (curve != prevCurve) {\n prevCurve = curve;\n let ii = curve * 6;\n x1 = world[ii];\n y1 = world[ii + 1];\n cx1 = world[ii + 2];\n cy1 = world[ii + 3];\n cx2 = world[ii + 4];\n cy2 = world[ii + 5];\n x2 = world[ii + 6];\n y2 = world[ii + 7];\n tmpx = (x1 - cx1 * 2 + cx2) * 0.03;\n tmpy = (y1 - cy1 * 2 + cy2) * 0.03;\n dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006;\n dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006;\n ddfx = tmpx * 2 + dddfx;\n ddfy = tmpy * 2 + dddfy;\n dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667;\n dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667;\n curveLength = Math.sqrt(dfx * dfx + dfy * dfy);\n segments[0] = curveLength;\n for (ii = 1; ii < 8; ii++) {\n dfx += ddfx;\n dfy += ddfy;\n ddfx += dddfx;\n ddfy += dddfy;\n curveLength += Math.sqrt(dfx * dfx + dfy * dfy);\n segments[ii] = curveLength;\n }\n dfx += ddfx;\n dfy += ddfy;\n curveLength += Math.sqrt(dfx * dfx + dfy * dfy);\n segments[8] = curveLength;\n dfx += ddfx + dddfx;\n dfy += ddfy + dddfy;\n curveLength += Math.sqrt(dfx * dfx + dfy * dfy);\n segments[9] = curveLength;\n segment = 0;\n }\n\n // Weight by segment length.\n p *= curveLength;\n for (; ; segment++) {\n let length = segments[segment];\n if (p > length) continue;\n if (segment == 0)\n p /= length;\n else {\n let prev = segments[segment - 1];\n p = segment + (p - prev) / (length - prev);\n }\n break;\n }\n this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0));\n }\n return out;\n }\n\n addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number) {\n let x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx);\n out[o] = x1 + p * Math.cos(r);\n out[o + 1] = y1 + p * Math.sin(r);\n out[o + 2] = r;\n }\n\n addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number) {\n let x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx);\n out[o] = x1 + p * Math.cos(r);\n out[o + 1] = y1 + p * Math.sin(r);\n out[o + 2] = r;\n }\n\n addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number,\n out: Array, o: number, tangents: boolean) {\n if (p == 0 || isNaN(p)) p = 0.0001;\n let tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u;\n let ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p;\n let x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt;\n out[o] = x;\n out[o + 1] = y;\n if (tangents) out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt));\n }\n\n getOrder() {\n return this.data.order;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class PathConstraintData {\n name: string;\n order = 0;\n bones = new Array();\n target: SlotData;\n positionMode: PositionMode;\n spacingMode: SpacingMode;\n rotateMode: RotateMode;\n offsetRotation: number;\n position: number;\n spacing: number;\n rotateMix: number;\n translateMix: number;\n\n constructor(name: string) {\n this.name = name;\n }\n }\n\n export enum PositionMode {\n Fixed, Percent\n }\n\n export enum SpacingMode {\n Length, Fixed, Percent\n }\n\n export enum RotateMode {\n Tangent, Chain, ChainScale\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class Skeleton {\n data: SkeletonData;\n bones: Array;\n slots: Array;\n drawOrder: Array;\n ikConstraints: Array;\n transformConstraints: Array;\n pathConstraints: Array;\n _updateCache = new Array();\n updateCacheReset = new Array();\n skin: Skin;\n color: Color;\n time = 0;\n flipX = false;\n flipY = false;\n x = 0;\n y = 0;\n\n constructor(data: SkeletonData) {\n if (data == null) throw new Error(\"data cannot be null.\");\n this.data = data;\n\n this.bones = new Array();\n for (let i = 0; i < data.bones.length; i++) {\n let boneData = data.bones[i];\n let bone: Bone;\n if (boneData.parent == null)\n bone = new Bone(boneData, this, null);\n else {\n let parent = this.bones[boneData.parent.index];\n bone = new Bone(boneData, this, parent);\n parent.children.push(bone);\n }\n this.bones.push(bone);\n }\n\n this.slots = new Array();\n this.drawOrder = new Array();\n for (let i = 0; i < data.slots.length; i++) {\n let slotData = data.slots[i];\n let bone = this.bones[slotData.boneData.index];\n let slot = new Slot(slotData, bone);\n this.slots.push(slot);\n this.drawOrder.push(slot);\n }\n\n this.ikConstraints = new Array();\n for (let i = 0; i < data.ikConstraints.length; i++) {\n let ikConstraintData = data.ikConstraints[i];\n this.ikConstraints.push(new IkConstraint(ikConstraintData, this));\n }\n\n this.transformConstraints = new Array();\n for (let i = 0; i < data.transformConstraints.length; i++) {\n let transformConstraintData = data.transformConstraints[i];\n this.transformConstraints.push(new TransformConstraint(transformConstraintData, this));\n }\n\n this.pathConstraints = new Array();\n for (let i = 0; i < data.pathConstraints.length; i++) {\n let pathConstraintData = data.pathConstraints[i];\n this.pathConstraints.push(new PathConstraint(pathConstraintData, this));\n }\n\n this.color = new Color(1, 1, 1, 1);\n this.updateCache();\n }\n\n updateCache() {\n let updateCache = this._updateCache;\n updateCache.length = 0;\n this.updateCacheReset.length = 0;\n\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++)\n bones[i].sorted = false;\n\n let ikConstraints = this.ikConstraints;\n let transformConstraints = this.transformConstraints;\n let pathConstraints = this.pathConstraints;\n let ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length;\n let constraintCount = ikCount + transformCount + pathCount;\n\n outer:\n for (let i = 0; i < constraintCount; i++) {\n for (let ii = 0; ii < ikCount; ii++) {\n let constraint = ikConstraints[ii];\n if (constraint.data.order == i) {\n this.sortIkConstraint(constraint);\n continue outer;\n }\n }\n for (let ii = 0; ii < transformCount; ii++) {\n let constraint = transformConstraints[ii];\n if (constraint.data.order == i) {\n this.sortTransformConstraint(constraint);\n continue outer;\n }\n }\n for (let ii = 0; ii < pathCount; ii++) {\n let constraint = pathConstraints[ii];\n if (constraint.data.order == i) {\n this.sortPathConstraint(constraint);\n continue outer;\n }\n }\n }\n\n for (let i = 0, n = bones.length; i < n; i++)\n this.sortBone(bones[i]);\n }\n\n sortIkConstraint(constraint: IkConstraint) {\n let target = constraint.target;\n this.sortBone(target);\n\n let constrained = constraint.bones;\n let parent = constrained[0];\n this.sortBone(parent);\n\n if (constrained.length > 1) {\n let child = constrained[constrained.length - 1];\n if (!(this._updateCache.indexOf(child) > -1)) this.updateCacheReset.push(child);\n }\n\n this._updateCache.push(constraint);\n\n this.sortReset(parent.children);\n constrained[constrained.length - 1].sorted = true;\n }\n\n sortPathConstraint(constraint: PathConstraint) {\n let slot = constraint.target;\n let slotIndex = slot.data.index;\n let slotBone = slot.bone;\n if (this.skin != null) this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone);\n if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin)\n this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone);\n for (let ii = 0, nn = this.data.skins.length; ii < nn; ii++)\n this.sortPathConstraintAttachment(this.data.skins[ii], slotIndex, slotBone);\n\n let attachment = slot.getAttachment();\n if (attachment instanceof PathAttachment) this.sortPathConstraintAttachmentWith(attachment, slotBone);\n\n let constrained = constraint.bones;\n let boneCount = constrained.length;\n for (let ii = 0; ii < boneCount; ii++)\n this.sortBone(constrained[ii]);\n\n this._updateCache.push(constraint);\n\n for (let ii = 0; ii < boneCount; ii++)\n this.sortReset(constrained[ii].children);\n for (let ii = 0; ii < boneCount; ii++)\n constrained[ii].sorted = true;\n }\n\n sortTransformConstraint(constraint: TransformConstraint) {\n this.sortBone(constraint.target);\n\n let constrained = constraint.bones;\n let boneCount = constrained.length;\n for (let ii = 0; ii < boneCount; ii++)\n this.sortBone(constrained[ii]);\n\n this._updateCache.push(constraint);\n\n for (let ii = 0; ii < boneCount; ii++)\n this.sortReset(constrained[ii].children);\n for (let ii = 0; ii < boneCount; ii++)\n constrained[ii].sorted = true;\n }\n\n sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone) {\n let attachments = skin.attachments[slotIndex];\n if (!attachments) return;\n for (let key in attachments) {\n this.sortPathConstraintAttachmentWith(attachments[key], slotBone);\n }\n }\n\n sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone) {\n if (!(attachment instanceof PathAttachment)) return;\n let pathBones = (attachment).bones;\n if (pathBones == null)\n this.sortBone(slotBone);\n else {\n let bones = this.bones;\n let i = 0;\n while (i < pathBones.length) {\n let boneCount = pathBones[i++];\n for (let n = i + boneCount; i < n; i++) {\n let boneIndex = pathBones[i];\n this.sortBone(bones[boneIndex]);\n }\n }\n }\n }\n\n sortBone(bone: Bone) {\n if (bone.sorted) return;\n let parent = bone.parent;\n if (parent != null) this.sortBone(parent);\n bone.sorted = true;\n this._updateCache.push(bone);\n }\n\n sortReset(bones: Array) {\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n if (bone.sorted) this.sortReset(bone.children);\n bone.sorted = false;\n }\n }\n\n /** Updates the world transform for each bone and applies constraints. */\n updateWorldTransform() {\n let updateCacheReset = this.updateCacheReset;\n for (let i = 0, n = updateCacheReset.length; i < n; i++) {\n let bone = updateCacheReset[i] as Bone;\n bone.ax = bone.x;\n bone.ay = bone.y;\n bone.arotation = bone.rotation;\n bone.ascaleX = bone.scaleX;\n bone.ascaleY = bone.scaleY;\n bone.ashearX = bone.shearX;\n bone.ashearY = bone.shearY;\n bone.appliedValid = true;\n }\n let updateCache = this._updateCache;\n for (let i = 0, n = updateCache.length; i < n; i++)\n updateCache[i].update();\n }\n\n /** Sets the bones, constraints, and slots to their setup pose values. */\n setToSetupPose() {\n this.setBonesToSetupPose();\n this.setSlotsToSetupPose();\n }\n\n /** Sets the bones and constraints to their setup pose values. */\n setBonesToSetupPose() {\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++)\n bones[i].setToSetupPose();\n\n let ikConstraints = this.ikConstraints;\n for (let i = 0, n = ikConstraints.length; i < n; i++) {\n let constraint = ikConstraints[i];\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.mix = constraint.data.mix;\n }\n\n let transformConstraints = this.transformConstraints;\n for (let i = 0, n = transformConstraints.length; i < n; i++) {\n let constraint = transformConstraints[i];\n let data = constraint.data;\n constraint.rotateMix = data.rotateMix;\n constraint.translateMix = data.translateMix;\n constraint.scaleMix = data.scaleMix;\n constraint.shearMix = data.shearMix;\n }\n\n let pathConstraints = this.pathConstraints;\n for (let i = 0, n = pathConstraints.length; i < n; i++) {\n let constraint = pathConstraints[i];\n let data = constraint.data;\n constraint.position = data.position;\n constraint.spacing = data.spacing;\n constraint.rotateMix = data.rotateMix;\n constraint.translateMix = data.translateMix;\n }\n }\n\n setSlotsToSetupPose() {\n let slots = this.slots;\n Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length);\n for (let i = 0, n = slots.length; i < n; i++)\n slots[i].setToSetupPose();\n }\n\n /** @return May return null. */\n getRootBone() {\n if (this.bones.length == 0) return null;\n return this.bones[0];\n }\n\n /** @return May be null. */\n findBone(boneName: string) {\n if (boneName == null) throw new Error(\"boneName cannot be null.\");\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n if (bone.data.name == boneName) return bone;\n }\n return null;\n }\n\n /** @return -1 if the bone was not found. */\n findBoneIndex(boneName: string) {\n if (boneName == null) throw new Error(\"boneName cannot be null.\");\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++)\n if (bones[i].data.name == boneName) return i;\n return -1;\n }\n\n /** @return May be null. */\n findSlot(slotName: string) {\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++) {\n let slot = slots[i];\n if (slot.data.name == slotName) return slot;\n }\n return null;\n }\n\n /** @return -1 if the bone was not found. */\n findSlotIndex(slotName: string) {\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++)\n if (slots[i].data.name == slotName) return i;\n return -1;\n }\n\n /** Sets a skin by name.\n * @see #setSkin(Skin) */\n setSkinByName(skinName: string) {\n let skin = this.data.findSkin(skinName);\n if (skin == null) throw new Error(\"Skin not found: \" + skinName);\n this.setSkin(skin);\n }\n\n /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}.\n * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no\n * old skin, each slot's setup mode attachment is attached from the new skin.\n * @param newSkin May be null. */\n setSkin(newSkin: Skin) {\n if (newSkin != null) {\n if (this.skin != null)\n newSkin.attachAll(this, this.skin);\n else {\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++) {\n let slot = slots[i];\n let name = slot.data.attachmentName;\n if (name != null) {\n let attachment: Attachment = newSkin.getAttachment(i, name);\n if (attachment != null) slot.setAttachment(attachment);\n }\n }\n }\n }\n this.skin = newSkin;\n }\n\n /** @return May be null. */\n getAttachmentByName(slotName: string, attachmentName: string): Attachment {\n return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName);\n }\n\n /** @return May be null. */\n getAttachment(slotIndex: number, attachmentName: string): Attachment {\n if (attachmentName == null) throw new Error(\"attachmentName cannot be null.\");\n if (this.skin != null) {\n let attachment: Attachment = this.skin.getAttachment(slotIndex, attachmentName);\n if (attachment != null) return attachment;\n }\n if (this.data.defaultSkin != null) return this.data.defaultSkin.getAttachment(slotIndex, attachmentName);\n return null;\n }\n\n /** @param attachmentName May be null. */\n setAttachment(slotName: string, attachmentName: string) {\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++) {\n let slot = slots[i];\n if (slot.data.name == slotName) {\n let attachment: Attachment = null;\n if (attachmentName != null) {\n attachment = this.getAttachment(i, attachmentName);\n if (attachment == null)\n throw new Error(\"Attachment not found: \" + attachmentName + \", for slot: \" + slotName);\n }\n slot.setAttachment(attachment);\n return;\n }\n }\n throw new Error(\"Slot not found: \" + slotName);\n }\n\n /** @return May be null. */\n findIkConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let ikConstraints = this.ikConstraints;\n for (let i = 0, n = ikConstraints.length; i < n; i++) {\n let ikConstraint = ikConstraints[i];\n if (ikConstraint.data.name == constraintName) return ikConstraint;\n }\n return null;\n }\n\n /** @return May be null. */\n findTransformConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let transformConstraints = this.transformConstraints;\n for (let i = 0, n = transformConstraints.length; i < n; i++) {\n let constraint = transformConstraints[i];\n if (constraint.data.name == constraintName) return constraint;\n }\n return null;\n }\n\n /** @return May be null. */\n findPathConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let pathConstraints = this.pathConstraints;\n for (let i = 0, n = pathConstraints.length; i < n; i++) {\n let constraint = pathConstraints[i];\n if (constraint.data.name == constraintName) return constraint;\n }\n return null;\n }\n\n /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose.\n * @param offset The distance from the skeleton origin to the bottom left corner of the AABB.\n * @param size The width and height of the AABB. */\n getBounds(offset: Vector2, size: Vector2) {\n if (offset == null) throw new Error(\"offset cannot be null.\");\n if (size == null) throw new Error(\"size cannot be null.\");\n let drawOrder = this.drawOrder;\n let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n for (let i = 0, n = drawOrder.length; i < n; i++) {\n let slot = drawOrder[i];\n let vertices: ArrayLike = null;\n let attachment = slot.getAttachment();\n if (attachment instanceof RegionAttachment)\n vertices = (attachment).updateWorldVertices(slot, false);\n else if (attachment instanceof MeshAttachment)\n vertices = (attachment).updateWorldVertices(slot, true);\n if (vertices != null) {\n for (let ii = 0, nn = vertices.length; ii < nn; ii += 8) {\n let x = vertices[ii], y = vertices[ii + 1];\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n }\n }\n offset.set(minX, minY);\n size.set(maxX - minX, maxY - minY);\n }\n\n update(delta: number) {\n this.time += delta;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class SkeletonBounds {\n minX = 0;\n minY = 0;\n maxX = 0;\n maxY = 0;\n boundingBoxes = new Array();\n polygons = new Array>();\n private polygonPool = new Pool>(() => {\n return Utils.newFloatArray(16);\n });\n\n update(skeleton: Skeleton, updateAabb: boolean) {\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n let boundingBoxes = this.boundingBoxes;\n let polygons = this.polygons;\n let polygonPool = this.polygonPool;\n let slots = skeleton.slots;\n let slotCount = slots.length;\n\n boundingBoxes.length = 0;\n polygonPool.freeAll(polygons);\n polygons.length = 0;\n\n for (let i = 0; i < slotCount; i++) {\n let slot = slots[i];\n let attachment = slot.getAttachment();\n if (attachment instanceof BoundingBoxAttachment) {\n let boundingBox = attachment as BoundingBoxAttachment;\n boundingBoxes.push(boundingBox);\n\n let polygon = polygonPool.obtain();\n if (polygon.length != boundingBox.worldVerticesLength) {\n polygon = Utils.newFloatArray(boundingBox.worldVerticesLength);\n }\n polygons.push(polygon);\n boundingBox.computeWorldVertices(slot, polygon);\n }\n }\n\n if (updateAabb) this.aabbCompute();\n }\n\n aabbCompute() {\n let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n let polygons = this.polygons;\n for (let i = 0, n = polygons.length; i < n; i++) {\n let polygon = polygons[i];\n let vertices = polygon;\n for (let ii = 0, nn = polygon.length; ii < nn; ii += 2) {\n let x = vertices[ii];\n let y = vertices[ii + 1];\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n }\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n\n /** Returns true if the axis aligned bounding box contains the point. */\n aabbContainsPoint(x: number, y: number) {\n return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\n }\n\n /** Returns true if the axis aligned bounding box intersects the line segment. */\n aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY))\n return false;\n let m = (y2 - y1) / (x2 - x1);\n let y = m * (minX - x1) + y1;\n if (y > minY && y < maxY) return true;\n y = m * (maxX - x1) + y1;\n if (y > minY && y < maxY) return true;\n let x = (minY - y1) / m + x1;\n if (x > minX && x < maxX) return true;\n x = (maxY - y1) / m + x1;\n if (x > minX && x < maxX) return true;\n return false;\n }\n\n /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */\n aabbIntersectsSkeleton(bounds: SkeletonBounds) {\n return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;\n }\n\n /** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more\n * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */\n containsPoint(x: number, y: number): BoundingBoxAttachment {\n let polygons = this.polygons;\n for (let i = 0, n = polygons.length; i < n; i++)\n if (this.containsPointPolygon(polygons[i], x, y)) return this.boundingBoxes[i];\n return null;\n }\n\n /** Returns true if the polygon contains the point. */\n containsPointPolygon(polygon: ArrayLike, x: number, y: number) {\n let vertices = polygon;\n let nn = polygon.length;\n\n let prevIndex = nn - 2;\n let inside = false;\n for (let ii = 0; ii < nn; ii += 2) {\n let vertexY = vertices[ii + 1];\n let prevY = vertices[prevIndex + 1];\n if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) {\n let vertexX = vertices[ii];\n if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) inside = !inside;\n }\n prevIndex = ii;\n }\n return inside;\n }\n\n /** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it\n * is usually more efficient to only call this method if {@link #aabbIntersectsSegment(float, float, float, float)} returns\n * true. */\n intersectsSegment(x1: number, y1: number, x2: number, y2: number) {\n let polygons = this.polygons;\n for (let i = 0, n = polygons.length; i < n; i++)\n if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) return this.boundingBoxes[i];\n return null;\n }\n\n /** Returns true if the polygon contains any part of the line segment. */\n intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number) {\n let vertices = polygon;\n let nn = polygon.length;\n\n let width12 = x1 - x2, height12 = y1 - y2;\n let det1 = x1 * y2 - y1 * x2;\n let x3 = vertices[nn - 2], y3 = vertices[nn - 1];\n for (let ii = 0; ii < nn; ii += 2) {\n let x4 = vertices[ii], y4 = vertices[ii + 1];\n let det2 = x3 * y4 - y3 * x4;\n let width34 = x3 - x4, height34 = y3 - y4;\n let det3 = width12 * height34 - height12 * width34;\n let x = (det1 * width34 - width12 * det2) / det3;\n if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) {\n let y = (det1 * height34 - height12 * det2) / det3;\n if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) return true;\n }\n x3 = x4;\n y3 = y4;\n }\n return false;\n }\n\n /** Returns the polygon for the specified bounding box, or null. */\n getPolygon(boundingBox: BoundingBoxAttachment) {\n if (boundingBox == null) throw new Error(\"boundingBox cannot be null.\");\n let index = this.boundingBoxes.indexOf(boundingBox);\n return index == -1 ? null : this.polygons[index];\n }\n\n getWidth() {\n return this.maxX - this.minX;\n }\n\n getHeight() {\n return this.maxY - this.minY;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class SkeletonData {\n name: string;\n bones = new Array(); // Ordered parents first.\n slots = new Array(); // Setup pose draw order.\n skins = new Array();\n defaultSkin: Skin;\n events = new Array();\n animations = new Array();\n ikConstraints = new Array();\n transformConstraints = new Array();\n pathConstraints = new Array();\n width: number;\n height: number;\n version: string;\n hash: string;\n\n // Nonessential\n fps = 0;\n imagesPath: string;\n\n findBone(boneName: string) {\n if (boneName == null) throw new Error(\"boneName cannot be null.\");\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n if (bone.name == boneName) return bone;\n }\n return null;\n }\n\n findBoneIndex(boneName: string) {\n if (boneName == null) throw new Error(\"boneName cannot be null.\");\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++)\n if (bones[i].name == boneName) return i;\n return -1;\n }\n\n findSlot(slotName: string) {\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++) {\n let slot = slots[i];\n if (slot.name == slotName) return slot;\n }\n return null;\n }\n\n findSlotIndex(slotName: string) {\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++)\n if (slots[i].name == slotName) return i;\n return -1;\n }\n\n findSkin(skinName: string) {\n if (skinName == null) throw new Error(\"skinName cannot be null.\");\n let skins = this.skins;\n for (let i = 0, n = skins.length; i < n; i++) {\n let skin = skins[i];\n if (skin.name == skinName) return skin;\n }\n return null;\n }\n\n findEvent(eventDataName: string) {\n if (eventDataName == null) throw new Error(\"eventDataName cannot be null.\");\n let events = this.events;\n for (let i = 0, n = events.length; i < n; i++) {\n let event = events[i];\n if (event.name == eventDataName) return event;\n }\n return null;\n }\n\n findAnimation(animationName: string) {\n if (animationName == null) throw new Error(\"animationName cannot be null.\");\n let animations = this.animations;\n for (let i = 0, n = animations.length; i < n; i++) {\n let animation = animations[i];\n if (animation.name == animationName) return animation;\n }\n return null;\n }\n\n findIkConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let ikConstraints = this.ikConstraints;\n for (let i = 0, n = ikConstraints.length; i < n; i++) {\n let constraint = ikConstraints[i];\n if (constraint.name == constraintName) return constraint;\n }\n return null;\n }\n\n findTransformConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let transformConstraints = this.transformConstraints;\n for (let i = 0, n = transformConstraints.length; i < n; i++) {\n let constraint = transformConstraints[i];\n if (constraint.name == constraintName) return constraint;\n }\n return null;\n }\n\n findPathConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let pathConstraints = this.pathConstraints;\n for (let i = 0, n = pathConstraints.length; i < n; i++) {\n let constraint = pathConstraints[i];\n if (constraint.name == constraintName) return constraint;\n }\n return null;\n }\n\n findPathConstraintIndex(pathConstraintName: string) {\n if (pathConstraintName == null) throw new Error(\"pathConstraintName cannot be null.\");\n let pathConstraints = this.pathConstraints;\n for (let i = 0, n = pathConstraints.length; i < n; i++)\n if (pathConstraints[i].name == pathConstraintName) return i;\n return -1;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class SkeletonJson {\n attachmentLoader: AttachmentLoader;\n scale = 1;\n private linkedMeshes = new Array();\n\n constructor(attachmentLoader: AttachmentLoader) {\n this.attachmentLoader = attachmentLoader;\n }\n\n readSkeletonData(json: string | any): SkeletonData {\n let scale = this.scale;\n let skeletonData = new SkeletonData();\n let root = typeof(json) === \"string\" ? JSON.parse(json) : json;\n\n // Skeleton\n let skeletonMap = root.skeleton;\n if (skeletonMap != null) {\n skeletonData.hash = skeletonMap.hash;\n skeletonData.version = skeletonMap.spine;\n skeletonData.width = skeletonMap.width;\n skeletonData.height = skeletonMap.height;\n skeletonData.fps = skeletonMap.fps;\n skeletonData.imagesPath = skeletonMap.images;\n }\n\n // Bones\n if (root.bones) {\n for (let i = 0; i < root.bones.length; i++) {\n let boneMap = root.bones[i];\n\n let parent: BoneData = null;\n let parentName: string = this.getValue(boneMap, \"parent\", null);\n if (parentName != null) {\n parent = skeletonData.findBone(parentName);\n if (parent == null) throw new Error(\"Parent bone not found: \" + parentName);\n }\n let data = new BoneData(skeletonData.bones.length, boneMap.name, parent);\n data.length = this.getValue(boneMap, \"length\", 0) * scale;\n data.x = this.getValue(boneMap, \"x\", 0) * scale;\n data.y = this.getValue(boneMap, \"y\", 0) * scale;\n data.rotation = this.getValue(boneMap, \"rotation\", 0);\n data.scaleX = this.getValue(boneMap, \"scaleX\", 1);\n data.scaleY = this.getValue(boneMap, \"scaleY\", 1);\n data.shearX = this.getValue(boneMap, \"shearX\", 0);\n data.shearY = this.getValue(boneMap, \"shearY\", 0);\n\n //this is legacy\n if (boneMap.hasOwnProperty(\"inheritScale\") || boneMap.hasOwnProperty(\"inheritRotation\")) {\n //before 3.5\n data.transformMode = SkeletonJson.transformModeLegacy(\n this.getValue(boneMap, \"inheritRotation\", true),\n this.getValue(boneMap, \"inheritScale\", true));\n } else {\n //after 3.5\n data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, \"transform\", \"normal\"));\n }\n\n skeletonData.bones.push(data);\n }\n }\n\n // Slots.\n if (root.slots) {\n for (let i = 0; i < root.slots.length; i++) {\n let slotMap = root.slots[i];\n let slotName: string = slotMap.name;\n let boneName: string = slotMap.bone;\n let boneData = skeletonData.findBone(boneName);\n if (boneData == null) throw new Error(\"Slot bone not found: \" + boneName);\n let data = new SlotData(skeletonData.slots.length, slotName, boneData);\n\n let color: string = this.getValue(slotMap, \"color\", null);\n if (color != null) data.color.setFromString(color);\n\n data.attachmentName = this.getValue(slotMap, \"attachment\", null);\n data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, \"blend\", \"normal\"));\n skeletonData.slots.push(data);\n }\n }\n\n // IK constraints\n if (root.ik) {\n for (let i = 0; i < root.ik.length; i++) {\n let constraintMap = root.ik[i];\n let data = new IkConstraintData(constraintMap.name);\n data.order = this.getValue(constraintMap, \"order\", 0);\n\n for (let j = 0; j < constraintMap.bones.length; j++) {\n let boneName = constraintMap.bones[j];\n let bone = skeletonData.findBone(boneName);\n if (bone == null) throw new Error(\"IK bone not found: \" + boneName);\n data.bones.push(bone);\n }\n\n let targetName: string = constraintMap.target;\n data.target = skeletonData.findBone(targetName);\n if (data.target == null) throw new Error(\"IK target bone not found: \" + targetName);\n\n data.bendDirection = this.getValue(constraintMap, \"bendPositive\", true) ? 1 : -1;\n data.mix = this.getValue(constraintMap, \"mix\", 1);\n\n skeletonData.ikConstraints.push(data);\n }\n }\n\n // Transform constraints.\n if (root.transform) {\n for (let i = 0; i < root.transform.length; i++) {\n let constraintMap = root.transform[i];\n let data = new TransformConstraintData(constraintMap.name);\n data.order = this.getValue(constraintMap, \"order\", 0);\n\n for (let j = 0; j < constraintMap.bones.length; j++) {\n let boneName = constraintMap.bones[j];\n let bone = skeletonData.findBone(boneName);\n if (bone == null) throw new Error(\"Transform constraint bone not found: \" + boneName);\n data.bones.push(bone);\n }\n\n let targetName: string = constraintMap.target;\n data.target = skeletonData.findBone(targetName);\n if (data.target == null) throw new Error(\"Transform constraint target bone not found: \" + targetName);\n\n data.offsetRotation = this.getValue(constraintMap, \"rotation\", 0);\n data.offsetX = this.getValue(constraintMap, \"x\", 0) * scale;\n data.offsetY = this.getValue(constraintMap, \"y\", 0) * scale;\n data.offsetScaleX = this.getValue(constraintMap, \"scaleX\", 0);\n data.offsetScaleY = this.getValue(constraintMap, \"scaleY\", 0);\n data.offsetShearY = this.getValue(constraintMap, \"shearY\", 0);\n\n data.rotateMix = this.getValue(constraintMap, \"rotateMix\", 1);\n data.translateMix = this.getValue(constraintMap, \"translateMix\", 1);\n data.scaleMix = this.getValue(constraintMap, \"scaleMix\", 1);\n data.shearMix = this.getValue(constraintMap, \"shearMix\", 1);\n\n skeletonData.transformConstraints.push(data);\n }\n }\n\n // Path constraints.\n if (root.path) {\n for (let i = 0; i < root.path.length; i++) {\n let constraintMap = root.path[i];\n let data = new PathConstraintData(constraintMap.name);\n data.order = this.getValue(constraintMap, \"order\", 0);\n\n for (let j = 0; j < constraintMap.bones.length; j++) {\n let boneName = constraintMap.bones[j];\n let bone = skeletonData.findBone(boneName);\n if (bone == null) throw new Error(\"Transform constraint bone not found: \" + boneName);\n data.bones.push(bone);\n }\n\n let targetName: string = constraintMap.target;\n data.target = skeletonData.findSlot(targetName);\n if (data.target == null) throw new Error(\"Path target slot not found: \" + targetName);\n\n data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, \"positionMode\", \"percent\"));\n data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, \"spacingMode\", \"length\"));\n data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, \"rotateMode\", \"tangent\"));\n data.offsetRotation = this.getValue(constraintMap, \"rotation\", 0);\n data.position = this.getValue(constraintMap, \"position\", 0);\n if (data.positionMode == PositionMode.Fixed) data.position *= scale;\n data.spacing = this.getValue(constraintMap, \"spacing\", 0);\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) data.spacing *= scale;\n data.rotateMix = this.getValue(constraintMap, \"rotateMix\", 1);\n data.translateMix = this.getValue(constraintMap, \"translateMix\", 1);\n\n skeletonData.pathConstraints.push(data);\n }\n }\n\n // Skins.\n if (root.skins) {\n for (let skinName in root.skins) {\n let skinMap = root.skins[skinName]\n let skin = new Skin(skinName);\n for (let slotName in skinMap) {\n let slotIndex = skeletonData.findSlotIndex(slotName);\n if (slotIndex == -1) throw new Error(\"Slot not found: \" + slotName);\n let slotMap = skinMap[slotName];\n for (let entryName in slotMap) {\n let attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName);\n if (attachment != null) skin.addAttachment(slotIndex, entryName, attachment);\n }\n }\n skeletonData.skins.push(skin);\n if (skin.name == \"default\") skeletonData.defaultSkin = skin;\n }\n }\n\n // Linked meshes.\n for (let i = 0, n = this.linkedMeshes.length; i < n; i++) {\n let linkedMesh = this.linkedMeshes[i];\n let skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\n if (skin == null) throw new Error(\"Skin not found: \" + linkedMesh.skin);\n let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\n if (parent == null) throw new Error(\"Parent mesh not found: \" + linkedMesh.parent);\n linkedMesh.mesh.setParentMesh( parent);\n // linkedMesh.mesh.updateUVs();\n }\n this.linkedMeshes.length = 0;\n\n // Events.\n if (root.events) {\n for (let eventName in root.events) {\n let eventMap = root.events[eventName];\n let data = new EventData(eventName);\n data.intValue = this.getValue(eventMap, \"int\", 0);\n data.floatValue = this.getValue(eventMap, \"float\", 0);\n data.stringValue = this.getValue(eventMap, \"string\", \"\");\n skeletonData.events.push(data);\n }\n }\n\n // Animations.\n if (root.animations) {\n for (let animationName in root.animations) {\n let animationMap = root.animations[animationName];\n this.readAnimation(animationMap, animationName, skeletonData);\n }\n }\n\n return skeletonData;\n }\n\n readAttachment(map: any, skin: Skin, slotIndex: number, name: string): Attachment {\n let scale = this.scale;\n name = this.getValue(map, \"name\", name);\n\n let type = this.getValue(map, \"type\", \"region\");\n\n switch (type) {\n case \"region\": {\n let path = this.getValue(map, \"path\", name);\n let region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n if (region == null) return null;\n region.path = path;\n region.x = this.getValue(map, \"x\", 0) * scale;\n region.y = this.getValue(map, \"y\", 0) * scale;\n region.scaleX = this.getValue(map, \"scaleX\", 1);\n region.scaleY = this.getValue(map, \"scaleY\", 1);\n region.rotation = this.getValue(map, \"rotation\", 0);\n region.width = map.width * scale;\n region.height = map.height * scale;\n\n let color: string = this.getValue(map, \"color\", null);\n if (color != null) region.color.setFromString(color);\n\n return region;\n }\n case \"boundingbox\": {\n let box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (box == null) return null;\n this.readVertices(map, box, map.vertexCount << 1);\n let color: string = this.getValue(map, \"color\", null);\n if (color != null) box.color.setFromString(color);\n return box;\n }\n //weightedmesh is deprecated but who cares\n case \"weightedmesh\":\n case \"skinnedmesh\":\n case \"mesh\":\n case \"linkedmesh\": {\n let path = this.getValue(map, \"path\", name);\n let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (mesh == null) return null;\n mesh.path = path;\n\n let color = this.getValue(map, \"color\", null);\n if (color != null) mesh.color.setFromString(color);\n\n let parent: string = this.getValue(map, \"parent\", null);\n if (parent != null) {\n mesh.inheritDeform = this.getValue(map, \"deform\", true);\n this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, \"skin\", null), slotIndex, parent));\n return mesh;\n }\n\n let uvs: Array = map.uvs;\n this.readVertices(map, mesh, uvs.length);\n mesh.triangles = map.triangles;\n mesh.regionUVs = uvs;\n // mesh.updateUVs();\n\n mesh.hullLength = this.getValue(map, \"hull\", 0) * 2;\n return mesh;\n }\n case \"path\": {\n let path = this.attachmentLoader.newPathAttachment(skin, name);\n if (path == null) return null;\n path.closed = this.getValue(map, \"closed\", false);\n path.constantSpeed = this.getValue(map, \"constantSpeed\", true);\n\n let vertexCount = map.vertexCount;\n this.readVertices(map, path, vertexCount << 1);\n\n let lengths: Array = Utils.newArray(vertexCount / 3, 0);\n for (let i = 0; i < map.lengths.length; i++)\n lengths[i++] = map.lengths[i] * scale;\n path.lengths = lengths;\n\n let color: string = this.getValue(map, \"color\", null);\n if (color != null) path.color.setFromString(color);\n return path;\n }\n }\n return null;\n }\n\n readVertices(map: any, attachment: VertexAttachment, verticesLength: number) {\n let scale = this.scale;\n attachment.worldVerticesLength = verticesLength;\n let vertices: Array = map.vertices;\n if (verticesLength == vertices.length) {\n if (scale != 1) {\n for (let i = 0, n = vertices.length; i < n; i++)\n vertices[i] *= scale;\n }\n attachment.vertices = Utils.toFloatArray(vertices);\n return;\n }\n let weights = new Array();\n let bones = new Array();\n for (let i = 0, n = vertices.length; i < n;) {\n let boneCount = vertices[i++];\n bones.push(boneCount);\n for (let nn = i + boneCount * 4; i < nn; i += 4) {\n bones.push(vertices[i]);\n weights.push(vertices[i + 1] * scale);\n weights.push(vertices[i + 2] * scale);\n weights.push(vertices[i + 3]);\n }\n }\n attachment.bones = bones;\n attachment.vertices = Utils.toFloatArray(weights);\n }\n\n readAnimation(map: any, name: string, skeletonData: SkeletonData) {\n let scale = this.scale;\n let timelines = new Array();\n let duration = 0;\n\n // Slot timelines.\n if (map.slots) {\n for (let slotName in map.slots) {\n let slotMap = map.slots[slotName];\n let slotIndex = skeletonData.findSlotIndex(slotName);\n if (slotIndex == -1) throw new Error(\"Slot not found: \" + slotName);\n for (let timelineName in slotMap) {\n let timelineMap = slotMap[timelineName];\n if (timelineName == \"color\") {\n let timeline = new ColorTimeline(timelineMap.length);\n timeline.slotIndex = slotIndex;\n\n let frameIndex = 0;\n for (let i = 0; i < timelineMap.length; i++) {\n let valueMap = timelineMap[i];\n let color = new Color();\n color.setFromString(valueMap.color);\n timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a);\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * ColorTimeline.ENTRIES]);\n\n } else if (timelineName = \"attachment\") {\n let timeline = new AttachmentTimeline(timelineMap.length);\n timeline.slotIndex = slotIndex;\n\n let frameIndex = 0;\n for (let i = 0; i < timelineMap.length; i++) {\n let valueMap = timelineMap[i];\n timeline.setFrame(frameIndex++, valueMap.time, valueMap.name);\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n } else\n throw new Error(\"Invalid timeline type for a slot: \" + timelineName + \" (\" + slotName + \")\");\n }\n }\n }\n\n // Bone timelines.\n if (map.bones) {\n for (let boneName in map.bones) {\n let boneMap = map.bones[boneName];\n let boneIndex = skeletonData.findBoneIndex(boneName);\n if (boneIndex == -1) throw new Error(\"Bone not found: \" + boneName);\n for (let timelineName in boneMap) {\n let timelineMap = boneMap[timelineName];\n if (timelineName === \"rotate\") {\n let timeline = new RotateTimeline(timelineMap.length);\n timeline.boneIndex = boneIndex;\n\n let frameIndex = 0;\n for (let i = 0; i < timelineMap.length; i++) {\n let valueMap = timelineMap[i];\n timeline.setFrame(frameIndex, valueMap.time, valueMap.angle);\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * RotateTimeline.ENTRIES]);\n\n } else if (timelineName === \"translate\" || timelineName === \"scale\" || timelineName === \"shear\") {\n let timeline: TranslateTimeline = null;\n let timelineScale = 1;\n if (timelineName === \"scale\")\n timeline = new ScaleTimeline(timelineMap.length);\n else if (timelineName === \"shear\")\n timeline = new ShearTimeline(timelineMap.length);\n else {\n timeline = new TranslateTimeline(timelineMap.length);\n timelineScale = scale;\n }\n timeline.boneIndex = boneIndex;\n\n let frameIndex = 0;\n for (let i = 0; i < timelineMap.length; i++) {\n let valueMap = timelineMap[i];\n let x = this.getValue(valueMap, \"x\", 0), y = this.getValue(valueMap, \"y\", 0);\n timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale);\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * TranslateTimeline.ENTRIES]);\n\n } else\n throw new Error(\"Invalid timeline type for a bone: \" + timelineName + \" (\" + boneName + \")\");\n }\n }\n }\n\n // IK constraint timelines.\n if (map.ik) {\n for (let constraintName in map.ik) {\n let constraintMap = map.ik[constraintName];\n let constraint = skeletonData.findIkConstraint(constraintName);\n let timeline = new IkConstraintTimeline(constraintMap.length);\n timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint);\n let frameIndex = 0;\n for (let i = 0; i < constraintMap.length; i++) {\n let valueMap = constraintMap[i];\n timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, \"mix\", 1),\n this.getValue(valueMap, \"bendPositive\", true) ? 1 : -1);\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * IkConstraintTimeline.ENTRIES]);\n }\n }\n\n // Transform constraint timelines.\n if (map.transform) {\n for (let constraintName in map.transform) {\n let constraintMap = map.transform[constraintName];\n let constraint = skeletonData.findTransformConstraint(constraintName);\n let timeline = new TransformConstraintTimeline(constraintMap.length);\n timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint);\n let frameIndex = 0;\n for (let i = 0; i < constraintMap.length; i++) {\n let valueMap = constraintMap[i];\n timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, \"rotateMix\", 1),\n this.getValue(valueMap, \"translateMix\", 1), this.getValue(valueMap, \"scaleMix\", 1), this.getValue(valueMap, \"shearMix\", 1));\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration,\n timeline.frames[(timeline.getFrameCount() - 1) * TransformConstraintTimeline.ENTRIES]);\n }\n }\n\n // Path constraint timelines.\n if (map.paths) {\n for (let constraintName in map.paths) {\n let constraintMap = map.paths[constraintName];\n let index = skeletonData.findPathConstraintIndex(constraintName);\n if (index == -1) throw new Error(\"Path constraint not found: \" + constraintName);\n let data = skeletonData.pathConstraints[index];\n for (let timelineName in constraintMap) {\n let timelineMap = constraintMap[timelineName];\n if (timelineName === \"position\" || timelineName === \"spacing\") {\n let timeline: PathConstraintPositionTimeline = null;\n let timelineScale = 1;\n if (timelineName === \"spacing\") {\n timeline = new PathConstraintSpacingTimeline(timelineMap.length);\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) timelineScale = scale;\n } else {\n timeline = new PathConstraintPositionTimeline(timelineMap.length);\n if (data.positionMode == PositionMode.Fixed) timelineScale = scale;\n }\n timeline.pathConstraintIndex = index;\n let frameIndex = 0;\n for (let i = 0; i < timelineMap.length; i++) {\n let valueMap = timelineMap[i];\n timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale);\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration,\n timeline.frames[(timeline.getFrameCount() - 1) * PathConstraintPositionTimeline.ENTRIES]);\n } else if (timelineName === \"mix\") {\n let timeline = new PathConstraintMixTimeline(timelineMap.length);\n timeline.pathConstraintIndex = index;\n let frameIndex = 0;\n for (let i = 0; i < timelineMap.length; i++) {\n let valueMap = timelineMap[i];\n timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, \"rotateMix\", 1),\n this.getValue(valueMap, \"translateMix\", 1));\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration,\n timeline.frames[(timeline.getFrameCount() - 1) * PathConstraintMixTimeline.ENTRIES]);\n }\n }\n }\n }\n\n // Deform timelines.\n if (map.deform) {\n for (let deformName in map.deform) {\n let deformMap = map.deform[deformName];\n let skin = skeletonData.findSkin(deformName);\n if (skin == null) throw new Error(\"Skin not found: \" + deformName);\n for (let slotName in deformMap) {\n let slotMap = deformMap[slotName];\n let slotIndex = skeletonData.findSlotIndex(slotName);\n if (slotIndex == -1) throw new Error(\"Slot not found: \" + slotMap.name);\n for (let timelineName in slotMap) {\n let timelineMap = slotMap[timelineName];\n let attachment = skin.getAttachment(slotIndex, timelineName);\n if (attachment == null) throw new Error(\"Deform attachment not found: \" + timelineMap.name);\n let weighted = attachment.bones != null;\n let vertices = attachment.vertices;\n let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n\n let timeline = new DeformTimeline(timelineMap.length);\n timeline.slotIndex = slotIndex;\n timeline.attachment = attachment;\n\n let frameIndex = 0;\n for (let j = 0; j < timelineMap.length; j++) {\n let valueMap = timelineMap[j];\n let deform: ArrayLike;\n let verticesValue: Array = this.getValue(valueMap, \"vertices\", null);\n if (verticesValue == null)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n let start = this.getValue(valueMap, \"offset\", 0);\n Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length);\n if (scale != 1) {\n for (let i = start, n = i + verticesValue.length; i < n; i++)\n deform[i] *= scale;\n }\n if (!weighted) {\n for (let i = 0; i < deformLength; i++)\n deform[i] += vertices[i];\n }\n }\n\n timeline.setFrame(frameIndex, valueMap.time, deform);\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n }\n }\n }\n }\n\n // Draw order timeline.\n let drawOrderNode = map.drawOrder;\n if (drawOrderNode == null) drawOrderNode = map.draworder;\n if (drawOrderNode != null) {\n let timeline = new DrawOrderTimeline(drawOrderNode.length);\n let slotCount = skeletonData.slots.length;\n let frameIndex = 0;\n for (let j = 0; j < drawOrderNode.length; j++) {\n let drawOrderMap = drawOrderNode[j];\n let drawOrder: Array = null;\n let offsets = this.getValue(drawOrderMap, \"offsets\", null);\n if (offsets != null) {\n drawOrder = Utils.newArray(slotCount, -1);\n let unchanged = Utils.newArray(slotCount - offsets.length, 0);\n let originalIndex = 0, unchangedIndex = 0;\n for (let i = 0; i < offsets.length; i++) {\n let offsetMap = offsets[i];\n let slotIndex = skeletonData.findSlotIndex(offsetMap.slot);\n if (slotIndex == -1) throw new Error(\"Slot not found: \" + offsetMap.slot);\n // Collect unchanged items.\n while (originalIndex != slotIndex)\n unchanged[unchangedIndex++] = originalIndex++;\n // Set changed items.\n drawOrder[originalIndex + offsetMap.offset] = originalIndex++;\n }\n // Collect remaining unchanged items.\n while (originalIndex < slotCount)\n unchanged[unchangedIndex++] = originalIndex++;\n // Fill in unchanged items.\n for (let i = slotCount - 1; i >= 0; i--)\n if (drawOrder[i] == -1) drawOrder[i] = unchanged[--unchangedIndex];\n }\n timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder);\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n }\n\n // Event timeline.\n if (map.events) {\n let timeline = new EventTimeline(map.events.length);\n let frameIndex = 0;\n for (let i = 0; i < map.events.length; i++) {\n let eventMap = map.events[i];\n let eventData = skeletonData.findEvent(eventMap.name);\n if (eventData == null) throw new Error(\"Event not found: \" + eventMap.name);\n let event = new Event(eventMap.time, eventData);\n event.intValue = this.getValue(eventMap, \"int\", eventData.intValue);\n event.floatValue = this.getValue(eventMap, \"float\", eventData.floatValue);\n event.stringValue = this.getValue(eventMap, \"string\", eventData.stringValue);\n timeline.setFrame(frameIndex++, event);\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n }\n\n if (isNaN(duration)) {\n throw new Error(\"Error while parsing animation, duration is NaN\");\n }\n\n skeletonData.animations.push(new Animation(name, timelines, duration));\n }\n\n readCurve(map: any, timeline: CurveTimeline, frameIndex: number) {\n if (!map.curve) return;\n if (map.curve === \"stepped\")\n timeline.setStepped(frameIndex);\n else if (Object.prototype.toString.call(map.curve) === '[object Array]') {\n let curve: Array = map.curve;\n timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]);\n }\n }\n\n getValue(map: any, prop: string, defaultValue: any) {\n return map[prop] !== undefined ? map[prop] : defaultValue;\n }\n\n static blendModeFromString(str: string): number {\n if (str === 'multiply') return PIXI.BLEND_MODES.MULTIPLY;\n if (str === 'additive') return PIXI.BLEND_MODES.ADD;\n if (str === 'screen') return PIXI.BLEND_MODES.SCREEN;\n if (str === 'normal') return PIXI.BLEND_MODES.NORMAL;\n throw new Error(`Unknown blend mode: ${str}`);\n }\n\n static positionModeFromString(str: string) {\n str = str.toLowerCase();\n if (str == \"fixed\") return PositionMode.Fixed;\n if (str == \"percent\") return PositionMode.Percent;\n throw new Error(`Unknown position mode: ${str}`);\n }\n\n static spacingModeFromString(str: string) {\n str = str.toLowerCase();\n if (str == \"length\") return SpacingMode.Length;\n if (str == \"fixed\") return SpacingMode.Fixed;\n if (str == \"percent\") return SpacingMode.Percent;\n throw new Error(`Unknown position mode: ${str}`);\n }\n\n static rotateModeFromString(str: string) {\n str = str.toLowerCase();\n if (str == \"tangent\") return RotateMode.Tangent;\n if (str == \"chain\") return RotateMode.Chain;\n if (str == \"chainscale\") return RotateMode.ChainScale;\n throw new Error(`Unknown rotate mode: ${str}`);\n }\n\n static transformModeFromString(str: string) {\n str = str.toLowerCase();\n if (str == \"normal\") return TransformMode.Normal;\n if (str == \"onlytranslation\") return TransformMode.OnlyTranslation;\n if (str == \"norotationorreflection\") return TransformMode.NoRotationOrReflection;\n if (str == \"noscale\") return TransformMode.NoScale;\n if (str == \"noscaleorreflection\") return TransformMode.NoScaleOrReflection;\n throw new Error(`Unknown transform mode: ${str}`);\n }\n\n static transformModeLegacy(inheritRotation: boolean, inheritScale: boolean) {\n console.log(\"Deprecation Warning: re-export your model with spine 3.5, or downgrade to pixi-spine 1.1 branch. There were many breaking changes, place breakpoint here if you want to know which model is broken\");\n if (inheritRotation && inheritScale) {\n return TransformMode.Normal;\n } else if (inheritRotation) {\n return TransformMode.NoScaleOrReflection;\n } else if (inheritScale) {\n return TransformMode.NoRotationOrReflection;\n } else {\n return TransformMode.OnlyTranslation;\n }\n }\n }\n\n class LinkedMesh {\n parent: string;\n skin: string;\n slotIndex: number;\n mesh: MeshAttachment;\n\n constructor(mesh: MeshAttachment, skin: string, slotIndex: number, parent: string) {\n this.mesh = mesh;\n this.skin = skin;\n this.slotIndex = slotIndex;\n this.parent = parent;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class Skin {\n name: string;\n attachments = new Array>();\n\n constructor(name: string) {\n if (name == null) throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n\n addAttachment(slotIndex: number, name: string, attachment: Attachment) {\n if (attachment == null) throw new Error(\"attachment cannot be null.\");\n let attachments = this.attachments;\n if (slotIndex >= attachments.length) attachments.length = slotIndex + 1;\n if (!attachments[slotIndex]) attachments[slotIndex] = {};\n attachments[slotIndex][name] = attachment;\n }\n\n /** @return May be null. */\n getAttachment(slotIndex: number, name: string): Attachment {\n let dictionary = this.attachments[slotIndex];\n return dictionary ? dictionary[name] : null;\n }\n\n /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */\n attachAll(skeleton: Skeleton, oldSkin: Skin) {\n let slotIndex = 0;\n for (let i = 0; i < skeleton.slots.length; i++) {\n let slot = skeleton.slots[i];\n let slotAttachment = slot.getAttachment();\n if (slotAttachment && slotIndex < oldSkin.attachments.length) {\n let dictionary = oldSkin.attachments[slotIndex];\n for (let key in dictionary) {\n let skinAttachment: Attachment = dictionary[key];\n if (slotAttachment == skinAttachment) {\n let attachment = this.getAttachment(slotIndex, name);\n if (attachment != null) slot.setAttachment(attachment);\n break;\n }\n }\n }\n slotIndex++;\n }\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class Slot {\n //this is for PIXI\n currentMesh: any;\n currentSprite: any;\n meshes: any;\n currentMeshName: string;\n sprites: any;\n currentSpriteName: string;\n blendMode: number;\n //assign hack region a bit later\n tempRegion: TextureRegion;\n tempAttachment: Attachment;\n\n //canon\n data: SlotData;\n bone: Bone;\n color: Color;\n attachment: Attachment;\n private attachmentTime: number;\n attachmentVertices = new Array();\n\n constructor(data: SlotData, bone: Bone) {\n if (data == null) throw new Error(\"data cannot be null.\");\n if (bone == null) throw new Error(\"bone cannot be null.\");\n this.data = data;\n this.bone = bone;\n this.color = new Color();\n this.blendMode = data.blendMode;\n this.setToSetupPose();\n }\n\n /** @return May be null. */\n getAttachment(): Attachment {\n return this.attachment;\n }\n\n /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}.\n * @param attachment May be null. */\n setAttachment(attachment: Attachment) {\n if (this.attachment == attachment) return;\n this.attachment = attachment;\n this.attachmentTime = this.bone.skeleton.time;\n this.attachmentVertices.length = 0;\n }\n\n setAttachmentTime(time: number) {\n this.attachmentTime = this.bone.skeleton.time - time;\n }\n\n /** Returns the time since the attachment was set. */\n getAttachmentTime(): number {\n return this.bone.skeleton.time - this.attachmentTime;\n }\n\n setToSetupPose() {\n this.color.setFromColor(this.data.color);\n if (this.data.attachmentName == null)\n this.attachment = null;\n else {\n this.attachment = null;\n this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName));\n }\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class SlotData {\n index: number;\n name: string;\n boneData: BoneData;\n color = new Color(1, 1, 1, 1);\n attachmentName: string;\n blendMode: number;\n\n constructor(index: number, name: string, boneData: BoneData) {\n if (index < 0) throw new Error(\"index must be >= 0.\");\n if (name == null) throw new Error(\"name cannot be null.\");\n if (boneData == null) throw new Error(\"boneData cannot be null.\");\n this.index = index;\n this.name = name;\n this.boneData = boneData;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export abstract class Texture {\n protected _image: HTMLImageElement;\n\n constructor (image: HTMLImageElement) {\n this._image = image;\n }\n\n getImage (): HTMLImageElement {\n return this._image;\n }\n\n abstract setFilters (minFilter: TextureFilter, magFilter: TextureFilter): void;\n abstract setWraps (uWrap: TextureWrap, vWrap: TextureWrap): void;\n abstract dispose (): void;\n\n\n public static filterFromString (text: string): TextureFilter {\n switch (text.toLowerCase()) {\n case \"nearest\": return TextureFilter.Nearest;\n case \"linear\": return TextureFilter.Linear;\n case \"mipmap\": return TextureFilter.MipMap;\n case \"mipmapnearestnearest\": return TextureFilter.MipMapNearestNearest;\n case \"mipmaplinearnearest\": return TextureFilter.MipMapLinearNearest;\n case \"mipmapnearestlinear\": return TextureFilter.MipMapNearestLinear;\n case \"mipmaplinearlinear\": return TextureFilter.MipMapLinearLinear;\n default: throw new Error(`Unknown texture filter ${text}`);\n }\n }\n\n public static wrapFromString (text: string): TextureWrap {\n switch (text.toLowerCase()) {\n case \"mirroredtepeat\": return TextureWrap.MirroredRepeat;\n case \"clamptoedge\": return TextureWrap.ClampToEdge;\n case \"repeat\": return TextureWrap.Repeat;\n default: throw new Error(`Unknown texture wrap ${text}`);\n }\n }\n }\n\n export enum TextureFilter {\n Nearest = 9728, // WebGLRenderingContext.NEAREST\n Linear = 9729, // WebGLRenderingContext.LINEAR\n MipMap = 9987, // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR\n MipMapNearestNearest = 9984, // WebGLRenderingContext.NEAREST_MIPMAP_NEAREST\n MipMapLinearNearest = 9985, // WebGLRenderingContext.LINEAR_MIPMAP_NEAREST\n MipMapNearestLinear = 9986, // WebGLRenderingContext.NEAREST_MIPMAP_LINEAR\n MipMapLinearLinear = 9987 // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR\n }\n\n export enum TextureWrap {\n MirroredRepeat = 33648, // WebGLRenderingContext.MIRRORED_REPEAT\n ClampToEdge = 33071, // WebGLRenderingContext.CLAMP_TO_EDGE\n Repeat = 10497 // WebGLRenderingContext.REPEAT\n }\n\n export class TextureRegion {\n texture: PIXI.Texture;\n\n //thats for overrides\n size: PIXI.Rectangle = null;\n\n get width(): number {\n const tex = this.texture;\n if (PIXI.VERSION[0] == '3') {\n return (tex as any).crop.width;\n }\n if (tex.trim) {\n return tex.trim.width;\n }\n return tex.orig.width;\n }\n\n get height(): number {\n const tex = this.texture;\n if (PIXI.VERSION[0] == '3') {\n return (tex as any).crop.height;\n }\n if (tex.trim) {\n return tex.trim.height;\n }\n return tex.orig.height;\n }\n\n get u(): number {\n return (this.texture as any)._uvs.x0;\n }\n\n get v(): number {\n return (this.texture as any)._uvs.y0;\n }\n\n get u2(): number {\n return (this.texture as any)._uvs.x2;\n }\n\n get v2(): number {\n return (this.texture as any)._uvs.y2;\n }\n\n get offsetX(): number {\n const tex = this.texture;\n return tex.trim ? tex.trim.x : 0;\n }\n\n get offsetY(): number {\n console.warn(\"Deprecation Warning: @Hackerham: I guess, if you are using PIXI-SPINE ATLAS region.offsetY, you want a texture, right? Use region.texture from now on.\");\n return this.spineOffsetY;\n }\n\n get pixiOffsetY(): number {\n const tex = this.texture;\n return tex.trim ? tex.trim.y : 0;\n }\n\n get spineOffsetY(): number {\n var tex = this.texture;\n return this.originalHeight - this.height - (tex.trim ? tex.trim.y : 0);\n }\n\n get originalWidth(): number {\n var tex = this.texture;\n if (PIXI.VERSION[0] == '3') {\n if (tex.trim) {\n return tex.trim.width;\n }\n return (tex as any).crop.width;\n }\n return tex.orig.width;\n }\n\n get originalHeight(): number {\n const tex = this.texture;\n if (PIXI.VERSION[0] == '3') {\n if (tex.trim) {\n return tex.trim.height;\n }\n return (tex as any).crop.height;\n }\n return tex.orig.height;\n }\n\n get x(): number {\n return this.texture.frame.x;\n }\n\n get y(): number {\n return this.texture.frame.y;\n }\n\n get rotate(): boolean {\n return this.texture.rotate !== 0;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class TextureAtlas implements Disposable {\n pages = new Array();\n regions = new Array();\n\n constructor(atlasText?: string, textureLoader?: (path: string, loaderFunction: (tex: PIXI.BaseTexture) => any) => any, callback?: (obj: TextureAtlas) => any) {\n if (atlasText) {\n this.addSpineAtlas(atlasText, textureLoader, callback);\n }\n }\n\n addTexture(name: string, texture: PIXI.Texture) {\n let pages = this.pages;\n let page: TextureAtlasPage = null;\n for (var i = 0; i < pages.length; i++) {\n if (pages[i].baseTexture === texture.baseTexture) {\n page = pages[i];\n break;\n }\n }\n if (page === null) {\n page = new TextureAtlasPage();\n page.name = 'texturePage';\n var baseTexture = texture.baseTexture;\n page.width = baseTexture.realWidth;\n page.height = baseTexture.realHeight;\n page.baseTexture = baseTexture;\n //those fields are not relevant in Pixi\n page.minFilter = page.magFilter = TextureFilter.Nearest;\n page.uWrap = TextureWrap.ClampToEdge;\n page.vWrap = TextureWrap.ClampToEdge;\n pages.push(page);\n }\n var region = new TextureAtlasRegion();\n region.name = name;\n region.page = page;\n region.texture = texture;\n region.index = -1;\n this.regions.push(region);\n return region;\n }\n\n addTextureHash(textures: Map, stripExtension: boolean) {\n for (var key in textures) {\n if (textures.hasOwnProperty(key)) {\n this.addTexture(stripExtension && key.indexOf('.') !== -1 ? key.substr(0, key.lastIndexOf('.')) : key, textures[key]);\n }\n }\n }\n\n public addSpineAtlas(atlasText: string, textureLoader: (path: string, loaderFunction: (tex: PIXI.BaseTexture) => any) => any, callback: (obj: TextureAtlas) => any) {\n return this.load(atlasText, textureLoader, callback);\n }\n\n private load(atlasText: string, textureLoader: (path: string, loaderFunction: (tex: PIXI.BaseTexture) => any) => any, callback: (obj: TextureAtlas) => any) {\n if (textureLoader == null)\n throw new Error(\"textureLoader cannot be null.\");\n\n let reader = new TextureAtlasReader(atlasText);\n let tuple = new Array(4);\n let page: TextureAtlasPage = null;\n\n let iterateParser = () => {\n while (true) {\n let line = reader.readLine();\n if (line == null) {\n return callback && callback(this);\n }\n line = line.trim();\n if (line.length == 0)\n page = null;\n else if (!page) {\n page = new TextureAtlasPage();\n page.name = line;\n\n if (reader.readTuple(tuple) == 2) { // size is only optional for an atlas packed with an old TexturePacker.\n page.width = parseInt(tuple[0]);\n page.height = parseInt(tuple[1]);\n reader.readTuple(tuple);\n }\n // page.format = Format[tuple[0]]; we don't need format in WebGL\n\n reader.readTuple(tuple);\n page.minFilter = Texture.filterFromString(tuple[0]);\n page.magFilter = Texture.filterFromString(tuple[1]);\n\n let direction = reader.readValue();\n page.uWrap = TextureWrap.ClampToEdge;\n page.vWrap = TextureWrap.ClampToEdge;\n if (direction == \"x\")\n page.uWrap = TextureWrap.Repeat;\n else if (direction == \"y\")\n page.vWrap = TextureWrap.Repeat;\n else if (direction == \"xy\")\n page.uWrap = page.vWrap = TextureWrap.Repeat;\n\n textureLoader(line, (texture: PIXI.BaseTexture) => {\n page.baseTexture = texture;\n if (!texture.hasLoaded) {\n texture.width = page.width;\n texture.height = page.height;\n }\n this.pages.push(page);\n page.setFilters();\n\n if (!page.width || !page.height) {\n page.width = texture.realWidth;\n page.height = texture.realHeight;\n if (!page.width || !page.height) {\n console.log(\"ERROR spine atlas page \" + page.name + \": meshes wont work if you dont specify size in atlas (http://www.html5gamedevs.com/topic/18888-pixi-spines-and-meshes/?p=107121)\");\n }\n }\n iterateParser();\n });\n this.pages.push(page);\n break;\n } else {\n let region: TextureAtlasRegion = new TextureAtlasRegion();\n region.name = line;\n region.page = page;\n\n let rotate: number = reader.readValue() == \"true\" ? 6 : 0;\n\n reader.readTuple(tuple);\n let x = parseInt(tuple[0]);\n let y = parseInt(tuple[1]);\n\n reader.readTuple(tuple);\n let width = parseInt(tuple[0]);\n let height = parseInt(tuple[1]);\n\n let resolution = page.baseTexture.resolution;\n x /= resolution;\n y /= resolution;\n width /= resolution;\n height /= resolution;\n\n let frame = new PIXI.Rectangle(x, y, rotate ? height : width, rotate ? width : height);\n\n if (reader.readTuple(tuple) == 4) { // split is optional\n // region.splits = new Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3]));\n\n if (reader.readTuple(tuple) == 4) { // pad is optional, but only present with splits\n //region.pads = Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3]));\n\n reader.readTuple(tuple);\n }\n }\n\n let originalWidth = parseInt(tuple[0]) / resolution;\n let originalHeight = parseInt(tuple[1]) / resolution;\n reader.readTuple(tuple);\n let offsetX = parseInt(tuple[0]) / resolution;\n let offsetY = parseInt(tuple[1]) / resolution;\n\n let orig = new PIXI.Rectangle(0, 0, originalWidth, originalHeight);\n let trim = new PIXI.Rectangle(offsetX, originalHeight - height - offsetY, width, height);\n\n //TODO: pixiv3 uses different frame/crop/trim\n\n if (PIXI.VERSION[0] == '4') {\n // pixi v4.0.0\n region.texture = new PIXI.Texture(region.page.baseTexture, frame, orig, trim, rotate);\n } else {\n // pixi v3.0.11\n var frame2 = new PIXI.Rectangle(x, y, width, height);\n var crop = frame2.clone();\n trim.width = originalWidth;\n trim.height = originalHeight;\n region.texture = new PIXI.Texture(region.page.baseTexture, frame2, crop, trim, rotate);\n }\n\n region.index = parseInt(reader.readValue());\n (region.texture as any)._updateUvs();\n\n this.regions.push(region);\n }\n }\n }\n\n iterateParser();\n }\n\n findRegion(name: string): TextureAtlasRegion {\n for (let i = 0; i < this.regions.length; i++) {\n if (this.regions[i].name == name) {\n return this.regions[i];\n }\n }\n return null;\n }\n\n dispose() {\n for (let i = 0; i < this.pages.length; i++) {\n this.pages[i].baseTexture.dispose();\n }\n }\n }\n\n class TextureAtlasReader {\n lines: Array;\n index: number = 0;\n\n constructor(text: string) {\n this.lines = text.split(/\\r\\n|\\r|\\n/);\n }\n\n readLine(): string {\n if (this.index >= this.lines.length)\n return null;\n return this.lines[this.index++];\n }\n\n readValue(): string {\n let line = this.readLine();\n let colon = line.indexOf(\":\");\n if (colon == -1)\n throw new Error(\"Invalid line: \" + line);\n return line.substring(colon + 1).trim();\n }\n\n readTuple(tuple: Array): number {\n let line = this.readLine();\n let colon = line.indexOf(\":\");\n if (colon == -1)\n throw new Error(\"Invalid line: \" + line);\n let i = 0, lastMatch = colon + 1;\n for (; i < 3; i++) {\n let comma = line.indexOf(\",\", lastMatch);\n if (comma == -1) break;\n tuple[i] = line.substr(lastMatch, comma - lastMatch).trim();\n lastMatch = comma + 1;\n }\n tuple[i] = line.substring(lastMatch).trim();\n return i + 1;\n }\n }\n\n export class TextureAtlasPage {\n name: string;\n minFilter: TextureFilter;\n magFilter: TextureFilter;\n uWrap: TextureWrap;\n vWrap: TextureWrap;\n baseTexture: PIXI.BaseTexture;\n width: number;\n height: number;\n\n public setFilters() {\n let tex = this.baseTexture;\n let filter = this.minFilter;\n if (filter == TextureFilter.Linear) {\n tex.scaleMode = PIXI.SCALE_MODES.LINEAR;\n } else if (this.minFilter == TextureFilter.Nearest) {\n tex.scaleMode = PIXI.SCALE_MODES.NEAREST;\n } else {\n tex.mipmap = true;\n if (filter == TextureFilter.MipMapNearestNearest) {\n tex.scaleMode = PIXI.SCALE_MODES.NEAREST;\n } else {\n tex.scaleMode = PIXI.SCALE_MODES.LINEAR;\n }\n }\n }\n }\n\n export class TextureAtlasRegion extends TextureRegion {\n page: TextureAtlasPage;\n name: string;\n index: number;\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class TransformConstraint implements Constraint {\n data: TransformConstraintData;\n bones: Array;\n target: Bone;\n rotateMix = 0;\n translateMix = 0;\n scaleMix = 0;\n shearMix = 0;\n temp = new Vector2();\n\n constructor(data: TransformConstraintData, skeleton: Skeleton) {\n if (data == null) throw new Error(\"data cannot be null.\");\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.rotateMix = data.rotateMix;\n this.translateMix = data.translateMix;\n this.scaleMix = data.scaleMix;\n this.shearMix = data.shearMix;\n this.bones = new Array();\n for (let i = 0; i < data.bones.length; i++)\n this.bones.push(skeleton.findBone(data.bones[i].name));\n this.target = skeleton.findBone(data.target.name);\n }\n\n apply() {\n this.update();\n }\n\n update() {\n let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix;\n let target = this.target;\n let ta = target.matrix.a, tb = target.matrix.c, tc = target.matrix.b, td = target.matrix.d;\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n let m = bone.matrix;\n let modified = false;\n\n if (rotateMix != 0) {\n let a = m.a, b = m.c, c = m.b, d = m.d;\n let r = Math.atan2(tc, ta) - Math.atan2(c, a) + this.data.offsetRotation * MathUtils.degRad;\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI)\n r += MathUtils.PI2;\n r *= rotateMix;\n let cos = Math.cos(r), sin = Math.sin(r);\n m.a = cos * a - sin * c;\n m.c = cos * b - sin * d;\n m.b = sin * a + cos * c;\n m.d = sin * b + cos * d;\n modified = true;\n }\n\n if (translateMix != 0) {\n let temp = this.temp;\n target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY));\n m.tx += (temp.x - m.tx) * translateMix;\n m.ty += (temp.y - m.ty) * translateMix;\n modified = true;\n }\n\n if (scaleMix > 0) {\n let s = Math.sqrt(m.a * m.a + m.b * m.b);\n let ts = Math.sqrt(ta * ta + tc * tc);\n if (s > 0.00001) s = (s + (ts - s + this.data.offsetScaleX) * scaleMix) / s;\n m.a *= s;\n m.b *= s;\n s = Math.sqrt(m.c * m.c + m.d * m.d);\n ts = Math.sqrt(tb * tb + td * td);\n if (s > 0.00001) s = (s + (ts - s + this.data.offsetScaleY) * scaleMix) / s;\n m.c *= s;\n m.d *= s;\n modified = true;\n }\n\n if (shearMix > 0) {\n let b = m.c, d = m.d;\n let by = Math.atan2(d, b);\n let r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(m.b, m.a));\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI)\n r += MathUtils.PI2;\n r = by + (r + this.data.offsetShearY * MathUtils.degRad) * shearMix;\n let s = Math.sqrt(b * b + d * d);\n m.c = Math.cos(r) * s;\n m.d = Math.sin(r) * s;\n modified = true;\n }\n\n if (modified) bone.appliedValid = false;\n }\n }\n\n getOrder() {\n return this.data.order;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class TransformConstraintData {\n name: string;\n order = 0;\n bones = new Array();\n target: BoneData;\n rotateMix = 0;\n translateMix = 0;\n scaleMix = 0;\n shearMix = 0;\n offsetRotation = 0;\n offsetX = 0;\n offsetY = 0;\n offsetScaleX = 0;\n offsetScaleY = 0;\n offsetShearY = 0;\n\n constructor(name: string) {\n if (name == null) throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export interface Updatable {\n update(): void;\n }\n}\n/******************************************************************************\n * Spine Runtimes Software License v2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n\texport interface Map {\n\t\t[key: string]: T;\n\t}\n\n\texport class IntSet {\n\t\tarray = new Array();\n\n\t\tadd (value: number): boolean {\n\t\t\tlet contains = this.contains(value);\n\t\t\tthis.array[value | 0] = value | 0;\n\t\t\treturn !contains;\n\t\t}\n\n\t\tcontains (value: number) {\n\t\t\treturn this.array[value | 0] != undefined;\n\t\t}\n\n\t\tremove (value: number) {\n\t\t\tthis.array[value | 0] = undefined;\n\t\t}\n\n\t\tclear () {\n\t\t\tthis.array.length = 0;\n\t\t}\n\t}\n\n\texport interface Disposable {\n\t\tdispose (): void;\n\t}\n\n\texport class Color {\n\t\tpublic static WHITE = new Color(1, 1, 1, 1);\n\t\tpublic static RED = new Color(1, 0, 0, 1);\n\t\tpublic static GREEN = new Color(0, 1, 0, 1);\n\t\tpublic static BLUE = new Color(0, 0, 1, 1);\n\t\tpublic static MAGENTA = new Color(1, 0, 1, 1);\n\n\t\tconstructor (public r: number = 0, public g: number = 0, public b: number = 0, public a: number = 0) {\n\t\t}\n\n\t\tset (r: number, g: number, b: number, a: number) {\n\t\t\tthis.r = r;\n\t\t\tthis.g = g;\n\t\t\tthis.b = b;\n\t\t\tthis.a = a;\n\t\t\tthis.clamp();\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromColor (c: Color) {\n\t\t\tthis.r = c.r;\n\t\t\tthis.g = c.g;\n\t\t\tthis.b = c.b;\n\t\t\tthis.a = c.a;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromString (hex: string) {\n\t\t\thex = hex.charAt(0) == '#' ? hex.substr(1) : hex;\n\t\t\tthis.r = parseInt(hex.substr(0, 2), 16) / 255.0;\n\t\t\tthis.g = parseInt(hex.substr(2, 2), 16) / 255.0;\n\t\t\tthis.b = parseInt(hex.substr(4, 2), 16) / 255.0;\n\t\t\tthis.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0;\n\t\t\treturn this;\n\t\t}\n\n\t\tadd (r: number, g: number, b: number, a: number) {\n\t\t\tthis.r += r;\n\t\t\tthis.g += g;\n\t\t\tthis.b += b;\n\t\t\tthis.a += a;\n\t\t\tthis.clamp();\n\t\t\treturn this;\n\t\t}\n\n\t\tclamp () {\n\t\t\tif (this.r < 0) this.r = 0;\n\t\t\telse if (this.r > 1) this.r = 1;\n\n\t\t\tif (this.g < 0) this.g = 0;\n\t\t\telse if (this.g > 1) this.g = 1;\n\n\t\t\tif (this.b < 0) this.b = 0;\n\t\t\telse if (this.b > 1) this.b = 1;\n\n\t\t\tif (this.a < 0) this.a = 0;\n\t\t\telse if (this.a > 1) this.a = 1;\n\t\t\treturn this;\n\t\t}\n\t}\n\n\texport class MathUtils {\n\t\tstatic PI = 3.1415927;\n\t\tstatic PI2 = MathUtils.PI * 2;\n\t\tstatic radiansToDegrees = 180 / MathUtils.PI;\n\t\tstatic radDeg = MathUtils.radiansToDegrees;\n\t\tstatic degreesToRadians = MathUtils.PI / 180;\n\t\tstatic degRad = MathUtils.degreesToRadians;\n\n\t\tstatic clamp (value: number, min: number, max: number) {\n\t\t\tif (value < min) return min;\n\t\t\tif (value > max) return max;\n\t\t\treturn value;\n\t\t}\n\n\t\tstatic cosDeg (degrees: number) {\n\t\t\treturn Math.cos(degrees * MathUtils.degRad);\n\t\t}\n\n\t\tstatic sinDeg (degrees: number) {\n\t\t\treturn Math.sin(degrees * MathUtils.degRad);\n\t\t}\n\n\t\tstatic signum (value: number): number {\n\t\t\treturn value > 0 ? 1 : value < 0 ? -1 : 0;\n\t\t}\n\n\t\tstatic toInt (x: number) {\n\t\t\treturn x > 0 ? Math.floor(x) : Math.ceil(x);\n\t\t}\n\n\t\tstatic cbrt (x: number) {\n\t\t\tvar y = Math.pow(Math.abs(x), 1/3);\n\t\t\treturn x < 0 ? -y : y;\n\t\t}\n\t}\n\n\texport class Utils {\n\t\tstatic SUPPORTS_TYPED_ARRAYS = typeof(Float32Array) !== \"undefined\";\n\n\t\tstatic arrayCopy (source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number) {\n\t\t\tfor (let i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) {\n\t\t\t\tdest[j] = source[i];\n\t\t\t}\n\t\t}\n\n\t\tstatic setArraySize (array: Array, size: number, value: any = 0): Array {\n\t\t\tlet oldSize = array.length;\n\t\t\tif (oldSize == size) return array;\n\t\t\tarray.length = size;\n\t\t\tif (oldSize < size) {\n\t\t\t\tfor (let i = oldSize; i < size; i++) array[i] = value;\n\t\t\t}\n\t\t\treturn array;\n\t\t}\n\n\t\tstatic ensureArrayCapacity (array: Array, size: number, value: any = 0): Array {\n\t\t\tif (array.length >= size) return array;\n\t\t\treturn Utils.setArraySize(array, size, value);\n\t\t}\n\n\t\tstatic newArray (size: number, defaultValue: T): Array {\n\t\t\tlet array = new Array(size);\n\t\t\tfor (let i = 0; i < size; i++) array[i] = defaultValue;\n\t\t\treturn array;\n\t\t}\n\n\t\tstatic newFloatArray (size: number): ArrayLike {\n\t\t\tif (Utils.SUPPORTS_TYPED_ARRAYS) {\n\t\t\t\treturn new Float32Array(size)\n\t\t\t} else {\n\t\t\t\t let array = new Array(size);\n\t\t\t\t for (let i = 0; i < array.length; i++) array[i] = 0;\n\t\t\t\t return array;\n\t\t\t}\n\t\t}\n\n\t\tstatic toFloatArray (array: Array) {\n\t\t\treturn Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array;\n\t\t}\n\t}\n\n\texport class DebugUtils {\n\t\tstatic logBones(skeleton: Skeleton) {\n\t\t\tfor (let i = 0; i < skeleton.bones.length; i++) {\n\t\t\t\tlet bone = skeleton.bones[i]\n let mat = bone.matrix\n\t\t\t\tconsole.log(bone.data.name + \", \" + mat.a + \", \" + mat.b + \", \" + mat.c + \", \" + mat.d + \", \" + mat.tx + \", \" + mat.ty);\n\t\t\t}\n\t\t}\n\t}\n\n\texport class Pool {\n\t\tprivate items = new Array();\n\t\tprivate instantiator: () => T;\n\n\t\tconstructor (instantiator: () => T) {\n\t\t\tthis.instantiator = instantiator;\n\t\t}\n\n\t\tobtain () {\n\t\t\treturn this.items.length > 0 ? this.items.pop() : this.instantiator();\n\t\t}\n\n\t\tfree (item: T) {\n\t\t\tif ((item as any).reset) (item as any).reset();\n\t\t\tthis.items.push(item);\n\t\t}\n\n\t\tfreeAll (items: ArrayLike) {\n\t\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\t\tif ((items[i] as any).reset) (items[i] as any).reset();\n\t\t\t\tthis.items[i] = items[i];\n\t\t\t}\n\t\t}\n\n\t\tclear () {\n\t\t\tthis.items.length = 0;\n\t\t}\n\t}\n\n\texport class Vector2 {\n\t\tconstructor (public x = 0, public y = 0) {\n\t\t}\n\n\t\tset (x: number, y: number): Vector2 {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tlength () {\n\t\t\tlet x = this.x;\n\t\t\tlet y = this.y;\n\t\t\treturn Math.sqrt(x * x + y * y);\n\t\t}\n\n\t\tnormalize () {\n\t\t\tlet len = this.length();\n\t\t\tif (len != 0) {\n\t\t\t\tthis.x /= len;\n\t\t\t\tthis.y /= len;\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t}\n\n\texport class TimeKeeper {\n\t\tmaxDelta = 0.064;\n\t\tframesPerSecond = 0;\n\t\tdelta = 0;\n\t\ttotalTime = 0;\n\n\t\tprivate lastTime = Date.now() / 1000;\n\t\tprivate frameCount = 0;\n\t\tprivate frameTime = 0;\n\n\t\tupdate () {\n\t\t\tvar now = Date.now() / 1000;\n\t\t\tthis.delta = now - this.lastTime;\n\t\t\tthis.frameTime += this.delta;\n\t\t\tthis.totalTime += this.delta;\n\t\t\tif (this.delta > this.maxDelta) this.delta = this.maxDelta;\n\t\t\tthis.lastTime = now;\n\n\t\t\tthis.frameCount++;\n\t\t\tif (this.frameTime > 1) {\n\t\t\t\tthis.framesPerSecond = this.frameCount / this.frameTime;\n\t\t\t\tthis.frameTime = 0;\n\t\t\t\tthis.frameCount = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\texport interface ArrayLike {\n\t\tlength: number;\n\t\t[n: number]: T;\n\t}\n}\nnamespace pixi_spine {\n function isJson(resource: PIXI.loaders.Resource) {\n var TYPE = (PIXI.loaders.Resource as any).TYPE;\n if (TYPE) {\n return (resource as any).type === TYPE.JSON\n }\n return resource.isJson;\n }\n\n export function atlasParser() {\n return function (resource: PIXI.loaders.Resource, next: () => any) {\n // skip if no data, its not json, or it isn't atlas data\n if (!resource.data ||\n !isJson(resource) ||\n !resource.data.bones) {\n return next();\n }\n\n var metadataAtlas = resource.metadata ? resource.metadata.spineAtlas : null;\n if (metadataAtlas === false) {\n return next();\n }\n if (metadataAtlas && metadataAtlas.pages) {\n //its an atlas!\n var spineJsonParser = new core.SkeletonJson(new core.AtlasAttachmentLoader(metadataAtlas));\n var skeletonData = spineJsonParser.readSkeletonData(resource.data);\n\n resource.spineData = skeletonData;\n resource.spineAtlas = metadataAtlas;\n\n return next();\n }\n\n var metadataAtlasSuffix = '.atlas';\n if (resource.metadata && resource.metadata.spineAtlasSuffix) {\n metadataAtlasSuffix = resource.metadata.spineAtlasSuffix;\n }\n\n /**\n * use a bit of hackery to load the atlas file, here we assume that the .json, .atlas and .png files\n * that correspond to the spine file are in the same base URL and that the .json and .atlas files\n * have the same name\n */\n var atlasPath = resource.url.substr(0, resource.url.lastIndexOf('.')) + metadataAtlasSuffix;\n //remove the baseUrl\n atlasPath = atlasPath.replace(this.baseUrl, '');\n\n var atlasOptions = {\n crossOrigin: resource.crossOrigin,\n xhrType: PIXI.loaders.Resource.XHR_RESPONSE_TYPE.TEXT,\n metadata: resource.metadata ? resource.metadata.spineMetadata : null,\n parentResource: resource\n };\n var imageOptions = {\n crossOrigin: resource.crossOrigin,\n metadata: resource.metadata ? resource.metadata.imageMetadata : null,\n parentResource: resource\n };\n var baseUrl = resource.url.substr(0, resource.url.lastIndexOf('/') + 1);\n //remove the baseUrl\n baseUrl = baseUrl.replace(this.baseUrl, '');\n\n var adapter = imageLoaderAdapter(this, resource.name + '_atlas_page_', baseUrl, imageOptions);\n\n this.add(resource.name + '_atlas', atlasPath, atlasOptions, function (atlasResource: PIXI.loaders.Resource) {\n new core.TextureAtlas(atlasResource.xhr.responseText, adapter, function (spineAtlas) {\n var spineJsonParser = new core.SkeletonJson(new core.AtlasAttachmentLoader(spineAtlas));\n var skeletonData = spineJsonParser.readSkeletonData(resource.data);\n\n resource.spineData = skeletonData;\n resource.spineAtlas = spineAtlas;\n\n next();\n });\n });\n };\n }\n\n export function imageLoaderAdapter(loader: any, namePrefix: any, baseUrl: any, imageOptions: any) {\n if (baseUrl && baseUrl.lastIndexOf('/') !== (baseUrl.length - 1)) {\n baseUrl += '/';\n }\n return function (line: string, callback: (baseTexture: PIXI.BaseTexture) => any) {\n var name = namePrefix + line;\n var url = baseUrl + line;\n loader.add(name, url, imageOptions, (resource: PIXI.loaders.Resource) => {\n callback(resource.texture.baseTexture);\n });\n }\n }\n\n export function syncImageLoaderAdapter(baseUrl: any, crossOrigin: any) {\n if (baseUrl && baseUrl.lastIndexOf('/') !== (baseUrl.length - 1)) {\n baseUrl += '/';\n }\n return function (line: any, callback: any) {\n callback(PIXI.BaseTexture.fromImage(line, crossOrigin));\n }\n }\n\n PIXI.loaders.Loader.addPixiMiddleware(atlasParser);\n PIXI.loader.use(atlasParser());\n}\n/// \n\nnamespace pixi_spine {\n /* Esoteric Software SPINE wrapper for pixi.js */\n core.Bone.yDown = true;\n\n let tempRgb = [0, 0, 0];\n\n export class SpineSprite extends PIXI.Sprite {\n region: core.TextureRegion;\n\n constructor(tex: PIXI.Texture) {\n super(tex);\n }\n }\n\n export class SpineMesh extends PIXI.mesh.Mesh {\n region: core.TextureRegion;\n\n constructor(texture: PIXI.Texture, vertices?: Float32Array, uvs?: Float32Array, indices?: Uint16Array, drawMode?: number) {\n super(texture, vertices, uvs, indices, drawMode);\n }\n }\n\n /**\n * A class that enables the you to import and run your spine animations in pixi.\n * The Spine animation data needs to be loaded using either the Loader or a SpineLoader before it can be used by this class\n * See example 12 (http://www.goodboydigital.com/pixijs/examples/12/) to see a working example and check out the source\n *\n * ```js\n * var spineAnimation = new spine(spineData);\n * ```\n *\n * @class\n * @extends Container\n * @memberof spine\n * @param spineData {object} The spine data loaded from a spine atlas.\n */\n export class Spine extends PIXI.Container {\n static globalAutoUpdate: boolean = true;\n\n tintRgb: ArrayLike;\n spineData: core.SkeletonData;\n skeleton: core.Skeleton;\n stateData: core.AnimationStateData;\n state: core.AnimationState;\n slotContainers: Array;\n\n constructor(spineData: core.SkeletonData) {\n super();\n\n if (!spineData) {\n throw new Error('The spineData param is required.');\n }\n\n if ((typeof spineData) === \"string\") {\n throw new Error('spineData param cant be string. Please use spine.Spine.fromAtlas(\"YOUR_RESOURCE_NAME\") from now on.');\n }\n\n /**\n * The spineData object\n *\n * @member {object}\n */\n this.spineData = spineData;\n\n /**\n * A spine Skeleton object\n *\n * @member {object}\n */\n this.skeleton = new core.Skeleton(spineData);\n this.skeleton.updateWorldTransform();\n\n /**\n * A spine AnimationStateData object created from the spine data passed in the constructor\n *\n * @member {object}\n */\n this.stateData = new core.AnimationStateData(spineData);\n\n /**\n * A spine AnimationState object created from the spine AnimationStateData object\n *\n * @member {object}\n */\n this.state = new core.AnimationState(this.stateData);\n\n /**\n * An array of containers\n *\n * @member {Container[]}\n */\n this.slotContainers = [];\n\n for (var i = 0, n = this.skeleton.slots.length; i < n; i++) {\n var slot = this.skeleton.slots[i];\n var attachment: any = slot.attachment;\n var slotContainer = new PIXI.Container();\n this.slotContainers.push(slotContainer);\n this.addChild(slotContainer);\n\n if (attachment instanceof core.RegionAttachment) {\n var spriteName = (attachment.region as core.TextureAtlasRegion).name;\n var sprite = this.createSprite(slot, attachment, spriteName);\n slot.currentSprite = sprite;\n slot.currentSpriteName = spriteName;\n slotContainer.addChild(sprite);\n }\n else if (attachment instanceof core.MeshAttachment) {\n var mesh = this.createMesh(slot, attachment);\n slot.currentMesh = mesh;\n slot.currentMeshName = attachment.name;\n slotContainer.addChild(mesh);\n }\n else {\n continue;\n }\n\n }\n\n /**\n * Should the Spine object update its transforms\n *\n * @member {boolean}\n */\n this.autoUpdate = true;\n\n /**\n * The tint applied to all spine slots. This is a [r,g,b] value. A value of [1,1,1] will remove any tint effect.\n *\n * @member {number}\n * @memberof spine.Spine#\n */\n this.tintRgb = new Float32Array([1, 1, 1]);\n }\n\n /**\n * If this flag is set to true, the spine animation will be autoupdated every time\n * the object id drawn. The down side of this approach is that the delta time is\n * automatically calculated and you could miss out on cool effects like slow motion,\n * pause, skip ahead and the sorts. Most of these effects can be achieved even with\n * autoupdate enabled but are harder to achieve.\n *\n * @member {boolean}\n * @memberof spine.Spine#\n * @default true\n */\n get autoUpdate(): boolean {\n return (this.updateTransform === Spine.prototype.autoUpdateTransform);\n }\n\n set autoUpdate(value: boolean) {\n this.updateTransform = value ? Spine.prototype.autoUpdateTransform : PIXI.Container.prototype.updateTransform;\n }\n\n /**\n * The tint applied to the spine object. This is a hex value. A value of 0xFFFFFF will remove any tint effect.\n *\n * @member {number}\n * @memberof spine.Spine#\n * @default 0xFFFFFF\n */\n get tint(): number {\n return PIXI.utils.rgb2hex(this.tintRgb as any);\n }\n\n set tint(value: number) {\n this.tintRgb = PIXI.utils.hex2rgb(value, this.tintRgb as any);\n }\n\n /**\n * Update the spine skeleton and its animations by delta time (dt)\n *\n * @param dt {number} Delta time. Time by which the animation should be updated\n */\n update(dt: number) {\n this.state.update(dt);\n this.state.apply(this.skeleton);\n this.skeleton.updateWorldTransform();\n\n let drawOrder = this.skeleton.drawOrder;\n let slots = this.skeleton.slots;\n\n for (var i = 0, n = drawOrder.length; i < n; i++) {\n this.children[i] = this.slotContainers[drawOrder[i].data.index];\n }\n\n var r0 = this.tintRgb[0];\n var g0 = this.tintRgb[1];\n var b0 = this.tintRgb[2];\n\n for (i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n var attachment = slot.attachment;\n var slotContainer = this.slotContainers[i];\n\n if (!attachment) {\n slotContainer.visible = false;\n continue;\n }\n\n var attColor = (attachment as any).color;\n if (attachment instanceof core.RegionAttachment) {\n let region = (attachment as core.RegionAttachment).region;\n if (region) {\n if (slot.currentMesh) {\n slot.currentMesh.visible = false;\n slot.currentMesh = null;\n slot.currentMeshName = undefined;\n }\n let ar = region as core.TextureAtlasRegion;\n if (!slot.currentSpriteName || slot.currentSpriteName !== ar.name) {\n var spriteName = ar.name;\n if (slot.currentSprite) {\n slot.currentSprite.visible = false;\n }\n slot.sprites = slot.sprites || {};\n if (slot.sprites[spriteName] !== undefined) {\n slot.sprites[spriteName].visible = true;\n }\n else {\n var sprite = this.createSprite(slot, attachment, spriteName);\n slotContainer.addChild(sprite);\n }\n slot.currentSprite = slot.sprites[spriteName];\n slot.currentSpriteName = spriteName;\n }\n }\n\n if (slotContainer.transform) {\n //TODO: refactor this thing, switch it on and off for container\n let transform = slotContainer.transform;\n let transAny : any = transform;\n let lt: PIXI.Matrix;\n if (transAny.matrix2d) {\n //gameofbombs pixi fork, sorry for that, we really use it :)\n lt = transAny.matrix2d;\n transAny._dirtyVersion++;\n transAny.version = transAny._dirtyVersion;\n transAny.isStatic = true;\n transAny.operMode = 0;\n } else {\n if (transAny.position) {\n transform = new PIXI.TransformBase();\n slotContainer.transform = transform;\n }\n lt = transform.localTransform;\n }\n slot.bone.matrix.copy(lt);\n } else {\n //PIXI v3\n var lt = slotContainer.localTransform || new PIXI.Matrix();\n slot.bone.matrix.copy(lt);\n slotContainer.localTransform = lt;\n (slotContainer as any).displayObjectUpdateTransform = SlotContainerUpdateTransformV3;\n }\n tempRgb[0] = r0 * slot.color.r * attColor.r;\n tempRgb[1] = g0 * slot.color.g * attColor.g;\n tempRgb[2] = b0 * slot.color.b * attColor.b;\n slot.currentSprite.tint = PIXI.utils.rgb2hex(tempRgb);\n slot.currentSprite.blendMode = slot.blendMode;\n }\n else if (attachment instanceof core.MeshAttachment) {\n if (slot.currentSprite) {\n //TODO: refactor this thing, switch it on and off for container\n slot.currentSprite.visible = false;\n slot.currentSprite = null;\n slot.currentSpriteName = undefined;\n\n if (slotContainer.transform) {\n slotContainer.transform = new PIXI.TransformStatic();\n }\n else {\n slotContainer.localTransform = new PIXI.Matrix();\n (slotContainer as any).displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform;\n }\n }\n if (!slot.currentMeshName || slot.currentMeshName !== attachment.name) {\n var meshName = attachment.name;\n if (slot.currentMesh) {\n slot.currentMesh.visible = false;\n }\n\n slot.meshes = slot.meshes || {};\n\n if (slot.meshes[meshName] !== undefined) {\n slot.meshes[meshName].visible = true;\n }\n else {\n var mesh = this.createMesh(slot, attachment);\n slotContainer.addChild(mesh);\n }\n\n slot.currentMesh = slot.meshes[meshName];\n slot.currentMeshName = meshName;\n }\n (attachment as core.VertexAttachment).computeWorldVertices(slot, slot.currentMesh.vertices);\n if (PIXI.VERSION[0] !== '3') {\n // PIXI version 4\n // slot.currentMesh.dirty++;\n //only for PIXI v4\n var tintRgb = slot.currentMesh.tintRgb;\n tintRgb[0] = r0 * slot.color.r * attColor.r;\n tintRgb[1] = g0 * slot.color.g * attColor.g;\n tintRgb[2] = b0 * slot.color.b * attColor.b;\n }\n slot.currentMesh.blendMode = slot.blendMode;\n }\n else {\n slotContainer.visible = false;\n continue;\n }\n slotContainer.visible = true;\n\n slotContainer.alpha = slot.color.a;\n }\n };\n\n private setSpriteRegion(attachment: core.RegionAttachment, sprite: SpineSprite, region: core.TextureRegion) {\n sprite.region = region;\n sprite.texture = region.texture;\n if (!region.size) {\n sprite.scale.x = attachment.scaleX * attachment.width / region.originalWidth;\n sprite.scale.y = -attachment.scaleY * attachment.height / region.originalHeight;\n } else {\n //hacked!\n sprite.scale.x = region.size.width / region.originalWidth;\n sprite.scale.y = -region.size.height / region.originalHeight;\n }\n }\n\n private setMeshRegion(attachment: core.MeshAttachment, mesh: SpineMesh, region: core.TextureRegion) {\n mesh.region = region;\n mesh.texture = region.texture;\n attachment.updateUVs(region, mesh.uvs);\n // if (PIXI.VERSION[0] !== '3') {\n // PIXI version 4\n // mesh.indexDirty++;\n // } else {\n // PIXI version 3\n mesh.dirty++;\n // }\n }\n\n protected lastTime: number;\n\n /**\n * When autoupdate is set to yes this function is used as pixi's updateTransform function\n *\n * @private\n */\n autoUpdateTransform() {\n if (Spine.globalAutoUpdate) {\n this.lastTime = this.lastTime || Date.now();\n var timeDelta = (Date.now() - this.lastTime) * 0.001;\n this.lastTime = Date.now();\n this.update(timeDelta);\n } else {\n this.lastTime = 0;\n }\n\n PIXI.Container.prototype.updateTransform.call(this);\n };\n\n /**\n * Create a new sprite to be used with core.RegionAttachment\n *\n * @param slot {spine.Slot} The slot to which the attachment is parented\n * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent\n * @private\n */\n createSprite(slot: core.Slot, attachment: core.RegionAttachment, defName: string) {\n let region = attachment.region;\n if (slot.tempAttachment === attachment) {\n region = slot.tempRegion;\n slot.tempAttachment = null;\n slot.tempRegion = null;\n }\n var texture = region.texture;\n var sprite = new SpineSprite(texture);\n sprite.rotation = attachment.rotation * core.MathUtils.degRad;\n sprite.anchor.x = 0.5;\n sprite.anchor.y = 0.5;\n sprite.position.x = attachment.x;\n sprite.position.y = attachment.y;\n sprite.alpha = attachment.color.a;\n\n sprite.region = attachment.region;\n this.setSpriteRegion(attachment, sprite, attachment.region);\n\n slot.sprites = slot.sprites || {};\n slot.sprites[defName] = sprite;\n return sprite;\n };\n\n /**\n * Creates a Strip from the spine data\n * @param slot {spine.Slot} The slot to which the attachment is parented\n * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent\n * @private\n */\n createMesh(slot: core.Slot, attachment: core.MeshAttachment) {\n let region = attachment.region;\n if (slot.tempAttachment === attachment) {\n region = slot.tempRegion;\n slot.tempAttachment = null;\n slot.tempRegion = null;\n }\n let strip = new SpineMesh(\n region.texture,\n new Float32Array(attachment.regionUVs.length),\n new Float32Array(attachment.regionUVs.length),\n new Uint16Array(attachment.triangles),\n PIXI.mesh.Mesh.DRAW_MODES.TRIANGLES);\n\n strip.canvasPadding = 1.5;\n\n strip.alpha = attachment.color.a;\n\n strip.region = attachment.region;\n this.setMeshRegion(attachment, strip, region);\n\n slot.meshes = slot.meshes || {};\n slot.meshes[attachment.name] = strip;\n return strip;\n };\n\n /**\n * Changes texture in attachment in specific slot.\n *\n * PIXI runtime feature, it was made to satisfy our users.\n *\n * @param slotIndex {number}\n * @param [texture = null] {PIXI.Texture} If null, take default (original) texture\n * @param [size = null] {PIXI.Point} sometimes we need new size for region attachment, you can pass 'texture.orig' there\n * @returns {boolean} Success flag\n */\n hackTextureBySlotIndex(slotIndex: number, texture: PIXI.Texture = null, size: PIXI.Rectangle = null) {\n var slot = this.skeleton.slots[slotIndex];\n if (!slot) {\n return false;\n }\n var attachment: any = slot.attachment;\n var region: core.TextureRegion = attachment.region;\n if (texture) {\n region = new core.TextureRegion();\n region.texture = texture;\n region.size = size;\n }\n if (slot.currentSprite && slot.currentSprite.region != region) {\n this.setSpriteRegion(attachment, slot.currentSprite, region);\n slot.currentSprite.region = region;\n } else if (slot.currentMesh && slot.currentMesh.region != region) {\n this.setMeshRegion(attachment, slot.currentMesh, region);\n } else {\n slot.tempRegion = region;\n slot.tempAttachment = attachment;\n }\n return true;\n }\n\n /**\n * Changes texture in attachment in specific slot.\n *\n * PIXI runtime feature, it was made to satisfy our users.\n *\n * @param slotName {string}\n * @param [texture = null] {PIXI.Texture} If null, take default (original) texture\n * @param [size = null] {PIXI.Point} sometimes we need new size for region attachment, you can pass 'texture.orig' there\n * @returns {boolean} Success flag\n */\n hackTextureBySlotName = function (slotName: string, texture: PIXI.Texture = null, size: PIXI.Rectangle = null) {\n var index = this.skeleton.findSlotIndex(slotName);\n if (index == -1) {\n return false;\n }\n return this.hackTextureBySlotIndex(index, texture, size);\n }\n }\n\n function SlotContainerUpdateTransformV3() {\n var pt = this.parent.worldTransform;\n var wt = this.worldTransform;\n var lt = this.localTransform;\n wt.a = lt.a * pt.a + lt.b * pt.c;\n wt.b = lt.a * pt.b + lt.b * pt.d;\n wt.c = lt.c * pt.a + lt.d * pt.c;\n wt.d = lt.c * pt.b + lt.d * pt.d;\n wt.tx = lt.tx * pt.a + lt.ty * pt.c + pt.tx;\n wt.ty = lt.tx * pt.b + lt.ty * pt.d + pt.ty;\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n this._currentBounds = null;\n }\n}\n(PIXI as any).spine = pixi_spine;\n"]} \ No newline at end of file +{"version":3,"file":"pixi-spine.js","sourceRoot":"","sources":["../compilation.ts"],"names":[],"mappings":"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","sourcesContent":["/******************************************************************************\r\n * Spine Runtimes Software License v2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n\texport class Animation {\r\n\t\tname: string;\r\n\t\ttimelines: Array;\r\n\t\tduration: number;\r\n\r\n\t\tconstructor (name: string, timelines: Array, duration: number) {\r\n\t\t\tif (name == null) throw new Error(\"name cannot be null.\");\r\n\t\t\tif (timelines == null) throw new Error(\"timelines cannot be null.\");\r\n\t\t\tthis.name = name;\r\n\t\t\tthis.timelines = timelines;\r\n\t\t\tthis.duration = duration;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tif (skeleton == null) throw new Error(\"skeleton cannot be null.\");\r\n\r\n\t\t\tif (loop && this.duration != 0) {\r\n\t\t\t\ttime %= this.duration;\r\n\t\t\t\tif (lastTime > 0) lastTime %= this.duration;\r\n\t\t\t}\r\n\r\n\t\t\tlet timelines = this.timelines;\r\n\t\t\tfor (let i = 0, n = timelines.length; i < n; i++)\r\n\t\t\t\ttimelines[i].apply(skeleton, lastTime, time, events, alpha, setupPose, mixingOut);\r\n\t\t}\r\n\r\n\t\tstatic binarySearch (values: ArrayLike, target: number, step: number = 1) {\r\n\t\t\tlet low = 0;\r\n\t\t\tlet high = values.length / step - 2;\r\n\t\t\tif (high == 0) return step;\r\n\t\t\tlet current = high >>> 1;\r\n\t\t\twhile (true) {\r\n\t\t\t\tif (values[(current + 1) * step] <= target)\r\n\t\t\t\t\tlow = current + 1;\r\n\t\t\t\telse\r\n\t\t\t\t\thigh = current;\r\n\t\t\t\tif (low == high) return (low + 1) * step;\r\n\t\t\t\tcurrent = (low + high) >>> 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tstatic linearSearch (values: ArrayLike, target: number, step: number) {\r\n\t\t\tfor (let i = 0, last = values.length - step; i <= last; i += step)\r\n\t\t\t\tif (values[i] > target) return i;\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t}\r\n\r\n\texport interface Timeline {\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean): void;\r\n\t\tgetPropertyId (): number;\r\n\t}\r\n\r\n\texport enum TimelineType {\r\n\t\trotate, translate, scale, shear,\r\n\t\tattachment, color, deform,\r\n\t\tevent, drawOrder,\r\n\t\tikConstraint, transformConstraint,\r\n\t\tpathConstraintPosition, pathConstraintSpacing, pathConstraintMix\r\n\t}\r\n\r\n\texport abstract class CurveTimeline implements Timeline {\r\n\t\tstatic LINEAR = 0; static STEPPED = 1; static BEZIER = 2;\r\n\t\tstatic BEZIER_SIZE = 10 * 2 - 1;\r\n\r\n\t\tprivate curves: ArrayLike; // type, x, y, ...\r\n\r\n\t\tabstract getPropertyId(): number;\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tif (frameCount <= 0) throw new Error(\"frameCount must be > 0: \" + frameCount);\r\n\t\t\tthis.curves = Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE);\r\n\t\t}\r\n\r\n\t\tgetFrameCount () {\r\n\t\t\treturn this.curves.length / CurveTimeline.BEZIER_SIZE + 1;\r\n\t\t}\r\n\r\n\t\tsetLinear (frameIndex: number) {\r\n\t\t\tthis.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR;\r\n\t\t}\r\n\r\n\t\tsetStepped (frameIndex: number) {\r\n\t\t\tthis.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED;\r\n\t\t}\r\n\r\n\t\tgetCurveType (frameIndex: number): number {\r\n\t\t\tlet index = frameIndex * CurveTimeline.BEZIER_SIZE;\r\n\t\t\tif (index == this.curves.length) return CurveTimeline.LINEAR;\r\n\t\t\tlet type = this.curves[index];\r\n\t\t\tif (type == CurveTimeline.LINEAR) return CurveTimeline.LINEAR;\r\n\t\t\tif (type == CurveTimeline.STEPPED) return CurveTimeline.STEPPED;\r\n\t\t\treturn CurveTimeline.BEZIER;\r\n\t\t}\r\n\r\n\t\t/** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next.\r\n\t\t * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of\r\n\t\t * the difference between the keyframe's values. */\r\n\t\tsetCurve (frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number) {\r\n\t\t\tlet tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03;\r\n\t\t\tlet dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006;\r\n\t\t\tlet ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy;\r\n\t\t\tlet dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667;\r\n\r\n\t\t\tlet i = frameIndex * CurveTimeline.BEZIER_SIZE;\r\n\t\t\tlet curves = this.curves;\r\n\t\t\tcurves[i++] = CurveTimeline.BEZIER;\r\n\r\n\t\t\tlet x = dfx, y = dfy;\r\n\t\t\tfor (let n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) {\r\n\t\t\t\tcurves[i] = x;\r\n\t\t\t\tcurves[i + 1] = y;\r\n\t\t\t\tdfx += ddfx;\r\n\t\t\t\tdfy += ddfy;\r\n\t\t\t\tddfx += dddfx;\r\n\t\t\t\tddfy += dddfy;\r\n\t\t\t\tx += dfx;\r\n\t\t\t\ty += dfy;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tgetCurvePercent (frameIndex: number, percent: number) {\r\n\t\t\tpercent = MathUtils.clamp(percent, 0, 1);\r\n\t\t\tlet curves = this.curves;\r\n\t\t\tlet i = frameIndex * CurveTimeline.BEZIER_SIZE;\r\n\t\t\tlet type = curves[i];\r\n\t\t\tif (type == CurveTimeline.LINEAR) return percent;\r\n\t\t\tif (type == CurveTimeline.STEPPED) return 0;\r\n\t\t\ti++;\r\n\t\t\tlet x = 0;\r\n\t\t\tfor (let start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) {\r\n\t\t\t\tx = curves[i];\r\n\t\t\t\tif (x >= percent) {\r\n\t\t\t\t\tlet prevX: number, prevY: number;\r\n\t\t\t\t\tif (i == start) {\r\n\t\t\t\t\t\tprevX = 0;\r\n\t\t\t\t\t\tprevY = 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tprevX = curves[i - 2];\r\n\t\t\t\t\t\tprevY = curves[i - 1];\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet y = curves[i - 1];\r\n\t\t\treturn y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1.\r\n\t\t}\r\n\r\n\t\tabstract apply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean): void;\r\n\t}\r\n\r\n\texport class RotateTimeline extends CurveTimeline {\r\n\t\tstatic ENTRIES = 2;\r\n\t\tstatic PREV_TIME = -2; static PREV_ROTATION = -1;\r\n\t\tstatic ROTATION = 1;\r\n\r\n\t\tboneIndex: number;\r\n\t\tframes: ArrayLike; // time, degrees, ...\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount << 1);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.rotate << 24) + this.boneIndex;\r\n\t\t}\r\n\r\n\t\t/** Sets the time and angle of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, degrees: number) {\r\n\t\t\tframeIndex <<= 1;\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.frames[frameIndex + RotateTimeline.ROTATION] = degrees;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\r\n\t\t\tlet bone = skeleton.bones[this.boneIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) bone.rotation = bone.data.rotation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (time >= frames[frames.length - RotateTimeline.ENTRIES]) { // Time is after last frame.\r\n\t\t\t\tif (setupPose)\r\n\t\t\t\t\tbone.rotation = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] * alpha;\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet r = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation;\r\n\t\t\t\t\tr -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; // Wrap within -180 and 180.\r\n\t\t\t\t\tbone.rotation += r * alpha;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\tlet frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES);\r\n\t\t\tlet prevRotation = frames[frame + RotateTimeline.PREV_ROTATION];\r\n\t\t\tlet frameTime = frames[frame];\r\n\t\t\tlet percent = this.getCurvePercent((frame >> 1) - 1,\r\n\t\t\t\t1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\tlet r = frames[frame + RotateTimeline.ROTATION] - prevRotation;\r\n\t\t\tr -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\r\n\t\t\tr = prevRotation + r * percent;\r\n\t\t\tif (setupPose) {\r\n\t\t\t\tr -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\r\n\t\t\t\tbone.rotation = bone.data.rotation + r * alpha;\r\n\t\t\t} else {\r\n\t\t\t\tr = bone.data.rotation + r - bone.rotation;\r\n\t\t\t\tr -= (16384 - ((16384.499999999996 - r / 360) |0)) * 360;\r\n\t\t\t\tbone.rotation += r * alpha;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class TranslateTimeline extends CurveTimeline {\r\n\t\tstatic ENTRIES = 3;\r\n\t\tstatic PREV_TIME = -3; static PREV_X = -2; static PREV_Y = -1;\r\n\t\tstatic X = 1; static Y = 2;\r\n\r\n\t\tboneIndex: number;\r\n\t\tframes: ArrayLike; // time, x, y, ...\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.translate << 24) + this.boneIndex;\r\n\t\t}\r\n\r\n\t\t/** Sets the time and value of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, x: number, y: number) {\r\n\t\t\tframeIndex *= TranslateTimeline.ENTRIES;\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.frames[frameIndex + TranslateTimeline.X] = x;\r\n\t\t\tthis.frames[frameIndex + TranslateTimeline.Y] = y;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\r\n\t\t\tlet bone = skeleton.bones[this.boneIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tbone.x = bone.data.x;\r\n\t\t\t\t\tbone.y = bone.data.y;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet x = 0, y = 0;\r\n\t\t\tif (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { // Time is after last frame.\r\n\t\t\t\tx = frames[frames.length + TranslateTimeline.PREV_X];\r\n\t\t\t\ty = frames[frames.length + TranslateTimeline.PREV_Y];\r\n\t\t\t} else {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES);\r\n\t\t\t\tx = frames[frame + TranslateTimeline.PREV_X];\r\n\t\t\t\ty = frames[frame + TranslateTimeline.PREV_Y];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\tx += (frames[frame + TranslateTimeline.X] - x) * percent;\r\n\t\t\t\ty += (frames[frame + TranslateTimeline.Y] - y) * percent;\r\n\t\t\t}\r\n\t\t\tif (setupPose) {\r\n\t\t\t\tbone.x = bone.data.x + x * alpha;\r\n\t\t\t\tbone.y = bone.data.y + y * alpha;\r\n\t\t\t} else {\r\n\t\t\t\tbone.x += (bone.data.x + x - bone.x) * alpha;\r\n\t\t\t\tbone.y += (bone.data.y + y - bone.y) * alpha;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class ScaleTimeline extends TranslateTimeline {\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.scale << 24) + this.boneIndex;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\r\n\t\t\tlet bone = skeleton.bones[this.boneIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tbone.scaleX = bone.data.scaleX;\r\n\t\t\t\t\tbone.scaleY = bone.data.scaleY;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet x = 0, y = 0;\r\n\t\t\tif (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { // Time is after last frame.\r\n\t\t\t\tx = frames[frames.length + ScaleTimeline.PREV_X] * bone.data.scaleX;\r\n\t\t\t\ty = frames[frames.length + ScaleTimeline.PREV_Y] * bone.data.scaleY;\r\n\t\t\t} else {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES);\r\n\t\t\t\tx = frames[frame + ScaleTimeline.PREV_X];\r\n\t\t\t\ty = frames[frame + ScaleTimeline.PREV_Y];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\tx = (x + (frames[frame + ScaleTimeline.X] - x) * percent) * bone.data.scaleX;\r\n\t\t\t\ty = (y + (frames[frame + ScaleTimeline.Y] - y) * percent) * bone.data.scaleY;\r\n\t\t\t}\r\n\t\t\tif (alpha == 1) {\r\n\t\t\t\tbone.scaleX = x;\r\n\t\t\t\tbone.scaleY = y;\r\n\t\t\t} else {\r\n\t\t\t\tlet bx = 0, by = 0;\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tbx = bone.data.scaleX;\r\n\t\t\t\t\tby = bone.data.scaleY;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbx = bone.scaleX;\r\n\t\t\t\t\tby = bone.scaleY;\r\n\t\t\t\t}\r\n\t\t\t\t// Mixing out uses sign of setup or current pose, else use sign of key.\r\n\t\t\t\tif (mixingOut) {\r\n\t\t\t\t\tx = Math.abs(x) * MathUtils.signum(bx);\r\n\t\t\t\t\ty = Math.abs(y) * MathUtils.signum(by);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbx = Math.abs(bx) * MathUtils.signum(x);\r\n\t\t\t\t\tby = Math.abs(by) * MathUtils.signum(y);\r\n\t\t\t\t}\r\n\t\t\t\tbone.scaleX = bx + (x - bx) * alpha;\r\n\t\t\t\tbone.scaleY = by + (y - by) * alpha;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class ShearTimeline extends TranslateTimeline {\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.shear << 24) + this.boneIndex;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\r\n\t\t\tlet bone = skeleton.bones[this.boneIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tbone.shearX = bone.data.shearX;\r\n\t\t\t\t\tbone.shearY = bone.data.shearY;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet x = 0, y = 0;\r\n\t\t\tif (time >= frames[frames.length - ShearTimeline.ENTRIES]) { // Time is after last frame.\r\n\t\t\t\tx = frames[frames.length + ShearTimeline.PREV_X];\r\n\t\t\t\ty = frames[frames.length + ShearTimeline.PREV_Y];\r\n\t\t\t} else {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES);\r\n\t\t\t\tx = frames[frame + ShearTimeline.PREV_X];\r\n\t\t\t\ty = frames[frame + ShearTimeline.PREV_Y];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\tx = x + (frames[frame + ShearTimeline.X] - x) * percent;\r\n\t\t\t\ty = y + (frames[frame + ShearTimeline.Y] - y) * percent;\r\n\t\t\t}\r\n\t\t\tif (setupPose) {\r\n\t\t\t\tbone.shearX = bone.data.shearX + x * alpha;\r\n\t\t\t\tbone.shearY = bone.data.shearY + y * alpha;\r\n\t\t\t} else {\r\n\t\t\t\tbone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\r\n\t\t\t\tbone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class ColorTimeline extends CurveTimeline {\r\n\t\tstatic ENTRIES = 5;\r\n\t\tstatic PREV_TIME = -5; static PREV_R = -4; static PREV_G = -3; static PREV_B = -2; static PREV_A = -1;\r\n\t\tstatic R = 1; static G = 2; static B = 3; static A = 4;\r\n\r\n\t\tslotIndex: number;\r\n\t\tframes: ArrayLike; // time, r, g, b, a, ...\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.color << 24) + this.slotIndex;\r\n\t\t}\r\n\r\n\t\t/** Sets the time and value of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, r: number, g: number, b: number, a: number) {\r\n\t\t\tframeIndex *= ColorTimeline.ENTRIES;\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.frames[frameIndex + ColorTimeline.R] = r;\r\n\t\t\tthis.frames[frameIndex + ColorTimeline.G] = g;\r\n\t\t\tthis.frames[frameIndex + ColorTimeline.B] = b;\r\n\t\t\tthis.frames[frameIndex + ColorTimeline.A] = a;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet slot = skeleton.slots[this.slotIndex];\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) slot.color.setFromColor(slot.data.color);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet r = 0, g = 0, b = 0, a = 0;\r\n\t\t\tif (time >= frames[frames.length - ColorTimeline.ENTRIES]) { // Time is after last frame.\r\n\t\t\t\tlet i = frames.length;\r\n\t\t\t\tr = frames[i + ColorTimeline.PREV_R];\r\n\t\t\t\tg = frames[i + ColorTimeline.PREV_G];\r\n\t\t\t\tb = frames[i + ColorTimeline.PREV_B];\r\n\t\t\t\ta = frames[i + ColorTimeline.PREV_A];\r\n\t\t\t} else {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES);\r\n\t\t\t\tr = frames[frame + ColorTimeline.PREV_R];\r\n\t\t\t\tg = frames[frame + ColorTimeline.PREV_G];\r\n\t\t\t\tb = frames[frame + ColorTimeline.PREV_B];\r\n\t\t\t\ta = frames[frame + ColorTimeline.PREV_A];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\tr += (frames[frame + ColorTimeline.R] - r) * percent;\r\n\t\t\t\tg += (frames[frame + ColorTimeline.G] - g) * percent;\r\n\t\t\t\tb += (frames[frame + ColorTimeline.B] - b) * percent;\r\n\t\t\t\ta += (frames[frame + ColorTimeline.A] - a) * percent;\r\n\t\t\t}\r\n\t\t\tif (alpha == 1)\r\n\t\t\t\tslot.color.set(r, g, b, a);\r\n\t\t\telse {\r\n\t\t\t\tlet color = slot.color;\r\n\t\t\t\tif (setupPose) color.setFromColor(slot.data.color);\r\n\t\t\t\tcolor.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class AttachmentTimeline implements Timeline {\r\n\t\tslotIndex: number;\r\n\t\tframes: ArrayLike // time, ...\r\n\t\tattachmentNames: Array;\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount);\r\n\t\t\tthis.attachmentNames = new Array(frameCount);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.attachment << 24) + this.slotIndex;\r\n\t\t}\r\n\r\n\t\tgetFrameCount () {\r\n\t\t\treturn this.frames.length;\r\n\t\t}\r\n\r\n\t\t/** Sets the time and value of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, attachmentName: string) {\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.attachmentNames[frameIndex] = attachmentName;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet slot = skeleton.slots[this.slotIndex];\r\n\t\t\tif (mixingOut && setupPose) {\r\n\t\t\t\tlet attachmentName = slot.data.attachmentName;\r\n\t\t\t\tslot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tlet attachmentName = slot.data.attachmentName;\r\n\t\t\t\t\tslot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet frameIndex = 0;\r\n\t\t\tif (time >= frames[frames.length - 1]) // Time is after last frame.\r\n\t\t\t\tframeIndex = frames.length - 1;\r\n\t\t\telse\r\n\t\t\t\tframeIndex = Animation.binarySearch(frames, time, 1) - 1;\r\n\r\n\t\t\tlet attachmentName = this.attachmentNames[frameIndex];\r\n\t\t\tskeleton.slots[this.slotIndex]\r\n\t\t\t\t.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\r\n\t\t}\r\n\t}\r\n\r\n\texport class DeformTimeline extends CurveTimeline {\r\n\t\tslotIndex: number;\r\n\t\tattachment: VertexAttachment;\r\n\t\tframes: ArrayLike; // time, ...\r\n\t\tframeVertices: Array>;\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount);\r\n\t\t\tthis.frameVertices = new Array>(frameCount);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.deform << 24) + this.slotIndex;\r\n\t\t}\r\n\r\n\t\t/** Sets the time of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, vertices: ArrayLike) {\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.frameVertices[frameIndex] = vertices;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet slot: Slot = skeleton.slots[this.slotIndex];\r\n\t\t\tlet slotAttachment: Attachment = slot.getAttachment();\r\n\t\t\tif (!(slotAttachment instanceof VertexAttachment) || !(slotAttachment).applyDeform(this.attachment)) return;\r\n\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tlet verticesArray: Array = slot.attachmentVertices;\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) Utils.setArraySize(verticesArray, 0);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet frameVertices = this.frameVertices;\r\n\t\t\tlet vertexCount = frameVertices[0].length;\r\n\r\n\t\t\tif (verticesArray.length != vertexCount) alpha = 1; // Don't mix from uninitialized slot vertices.\r\n\t\t\tlet vertices: Array = Utils.setArraySize(verticesArray, vertexCount);\r\n\r\n\t\t\tif (time >= frames[frames.length - 1]) { // Time is after last frame.\r\n\t\t\t\tlet lastVertices = frameVertices[frames.length - 1];\r\n\t\t\t\tif (alpha == 1) {\r\n\t\t\t\t\tUtils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount);\r\n\t\t\t\t} else if (setupPose) {\r\n\t\t\t\t\tlet vertexAttachment = slotAttachment as VertexAttachment;\r\n\t\t\t\t\tif (vertexAttachment.bones == null) {\r\n\t\t\t\t\t\t// Unweighted vertex positions, with alpha.\r\n\t\t\t\t\t\tlet setupVertices = vertexAttachment.vertices;\r\n\t\t\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\r\n\t\t\t\t\t\t\tlet setup = setupVertices[i];\r\n\t\t\t\t\t\t\tvertices[i] = setup + (lastVertices[i] - setup) * alpha;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Weighted deform offsets, with alpha.\r\n\t\t\t\t\t\tfor (let i = 0; i < vertexCount; i++)\r\n\t\t\t\t\t\t\tvertices[i] = lastVertices[i] * alpha;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfor (let i = 0; i < vertexCount; i++)\r\n\t\t\t\t\t\tvertices[i] += (lastVertices[i] - vertices[i]) * alpha;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\tlet frame = Animation.binarySearch(frames, time);\r\n\t\t\tlet prevVertices = frameVertices[frame - 1];\r\n\t\t\tlet nextVertices = frameVertices[frame];\r\n\t\t\tlet frameTime = frames[frame];\r\n\t\t\tlet percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime));\r\n\r\n\t\t\tif (alpha == 1) {\r\n\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\r\n\t\t\t\t\tlet prev = prevVertices[i];\r\n\t\t\t\t\tvertices[i] = prev + (nextVertices[i] - prev) * percent;\r\n\t\t\t\t}\r\n\t\t\t} else if (setupPose) {\r\n\t\t\t\tlet vertexAttachment = slotAttachment as VertexAttachment;\r\n\t\t\t\tif (vertexAttachment.bones == null) {\r\n\t\t\t\t\t// Unweighted vertex positions, with alpha.\r\n\t\t\t\t\tlet setupVertices = vertexAttachment.vertices;\r\n\t\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\r\n\t\t\t\t\t\tlet prev = prevVertices[i], setup = setupVertices[i];\r\n\t\t\t\t\t\tvertices[i] = setup + (prev + (nextVertices[i] - prev) * percent - setup) * alpha;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Weighted deform offsets, with alpha.\r\n\t\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\r\n\t\t\t\t\t\tlet prev = prevVertices[i];\r\n\t\t\t\t\t\tvertices[i] = (prev + (nextVertices[i] - prev) * percent) * alpha;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Vertex positions or deform offsets, with alpha.\r\n\t\t\t\tfor (let i = 0; i < vertexCount; i++) {\r\n\t\t\t\t\tlet prev = prevVertices[i];\r\n\t\t\t\t\tvertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class EventTimeline implements Timeline {\r\n\t\tframes: ArrayLike; // time, ...\r\n\t\tevents: Array;\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount);\r\n\t\t\tthis.events = new Array(frameCount);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn TimelineType.event << 24;\r\n\t\t}\r\n\r\n\t\tgetFrameCount () {\r\n\t\t\treturn this.frames.length;\r\n\t\t}\r\n\r\n\t\t/** Sets the time of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, event: Event) {\r\n\t\t\tthis.frames[frameIndex] = event.time;\r\n\t\t\tthis.events[frameIndex] = event;\r\n\t\t}\r\n\r\n\t\t/** Fires events for frames > lastTime and <= time. */\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tif (firedEvents == null) return;\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tlet frameCount = this.frames.length;\r\n\r\n\t\t\tif (lastTime > time) { // Fire events after last time for looped animations.\r\n\t\t\t\tthis.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, setupPose, mixingOut);\r\n\t\t\t\tlastTime = -1;\r\n\t\t\t} else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame.\r\n\t\t\t\treturn;\r\n\t\t\tif (time < frames[0]) return; // Time is before first frame.\r\n\r\n\t\t\tlet frame = 0;\r\n\t\t\tif (lastTime < frames[0])\r\n\t\t\t\tframe = 0;\r\n\t\t\telse {\r\n\t\t\t\tframe = Animation.binarySearch(frames, lastTime);\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\twhile (frame > 0) { // Fire multiple events with the same frame.\r\n\t\t\t\t\tif (frames[frame - 1] != frameTime) break;\r\n\t\t\t\t\tframe--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (; frame < frameCount && time >= frames[frame]; frame++)\r\n\t\t\t\tfiredEvents.push(this.events[frame]);\r\n\t\t}\r\n\t}\r\n\r\n\texport class DrawOrderTimeline implements Timeline {\r\n\t\tframes: ArrayLike; // time, ...\r\n\t\tdrawOrders: Array>;\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount);\r\n\t\t\tthis.drawOrders = new Array>(frameCount);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn TimelineType.drawOrder << 24;\r\n\t\t}\r\n\r\n\t\tgetFrameCount () {\r\n\t\t\treturn this.frames.length;\r\n\t\t}\r\n\r\n\t\t/** Sets the time of the specified keyframe.\r\n\t\t * @param drawOrder May be null to use bind pose draw order. */\r\n\t\tsetFrame (frameIndex: number, time: number, drawOrder: Array) {\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.drawOrders[frameIndex] = drawOrder;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet drawOrder: Array = skeleton.drawOrder;\r\n\t\t\tlet slots: Array = skeleton.slots;\r\n\t\t\tif (mixingOut && setupPose) {\r\n\t\t\t\tUtils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet frame = 0;\r\n\t\t\tif (time >= frames[frames.length - 1]) // Time is after last frame.\r\n\t\t\t\tframe = frames.length - 1;\r\n\t\t\telse\r\n\t\t\t\tframe = Animation.binarySearch(frames, time) - 1;\r\n\r\n\t\t\tlet drawOrderToSetupIndex = this.drawOrders[frame];\r\n\t\t\tif (drawOrderToSetupIndex == null)\r\n\t\t\t\tUtils.arrayCopy(slots, 0, drawOrder, 0, slots.length);\r\n\t\t\telse {\r\n\t\t\t\tfor (let i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\r\n\t\t\t\t\tdrawOrder[i] = slots[drawOrderToSetupIndex[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class IkConstraintTimeline extends CurveTimeline {\r\n\t\tstatic ENTRIES = 3;\r\n\t\tstatic PREV_TIME = -3; static PREV_MIX = -2; static PREV_BEND_DIRECTION = -1;\r\n\t\tstatic MIX = 1; static BEND_DIRECTION = 2;\r\n\r\n\t\tikConstraintIndex: number;\r\n\t\tframes: ArrayLike; // time, mix, bendDirection, ...\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.ikConstraint << 24) + this.ikConstraintIndex;\r\n\t\t}\r\n\r\n\t\t/** Sets the time, mix and bend direction of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, mix: number, bendDirection: number) {\r\n\t\t\tframeIndex *= IkConstraintTimeline.ENTRIES;\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.frames[frameIndex + IkConstraintTimeline.MIX] = mix;\r\n\t\t\tthis.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tlet constraint: IkConstraint = skeleton.ikConstraints[this.ikConstraintIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tconstraint.mix = constraint.data.mix;\r\n\t\t\t\t\tconstraint.bendDirection = constraint.data.bendDirection;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { // Time is after last frame.\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tconstraint.mix = constraint.data.mix + (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.data.mix) * alpha;\r\n\t\t\t\t\tconstraint.bendDirection = mixingOut ? constraint.data.bendDirection\r\n\t\t\t\t\t\t: frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconstraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha;\r\n\t\t\t\t\tif (!mixingOut) constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION];\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\tlet frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES);\r\n\t\t\tlet mix = frames[frame + IkConstraintTimeline.PREV_MIX];\r\n\t\t\tlet frameTime = frames[frame];\r\n\t\t\tlet percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1,\r\n\t\t\t\t1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\tif (setupPose) {\r\n\t\t\t\tconstraint.mix = constraint.data.mix + (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.data.mix) * alpha;\r\n\t\t\t\tconstraint.bendDirection = mixingOut ? constraint.data.bendDirection : frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION];\r\n\t\t\t} else {\r\n\t\t\t\tconstraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha;\r\n\t\t\t\tif (!mixingOut) constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class TransformConstraintTimeline extends CurveTimeline {\r\n\t\tstatic ENTRIES = 5;\r\n\t\tstatic PREV_TIME = -5; static PREV_ROTATE = -4; static PREV_TRANSLATE = -3; static PREV_SCALE = -2; static PREV_SHEAR = -1;\r\n\t\tstatic ROTATE = 1; static TRANSLATE = 2; static SCALE = 3; static SHEAR = 4;\r\n\r\n\t\ttransformConstraintIndex: number;\r\n\t\tframes: ArrayLike; // time, rotate mix, translate mix, scale mix, shear mix, ...\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.transformConstraint << 24) + this.transformConstraintIndex;\r\n\t\t}\r\n\r\n\t\t/** Sets the time and mixes of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number) {\r\n\t\t\tframeIndex *= TransformConstraintTimeline.ENTRIES;\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix;\r\n\t\t\tthis.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix;\r\n\t\t\tthis.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix;\r\n\t\t\tthis.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\r\n\t\t\tlet constraint: TransformConstraint = skeleton.transformConstraints[this.transformConstraintIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tlet data = constraint.data;\r\n\t\t\t\t\tconstraint.rotateMix = data.rotateMix;\r\n\t\t\t\t\tconstraint.translateMix = data.rotateMix;\r\n\t\t\t\t\tconstraint.scaleMix = data.scaleMix;\r\n\t\t\t\t\tconstraint.shearMix = data.shearMix;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet rotate = 0, translate = 0, scale = 0, shear = 0;\r\n\t\t\tif (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { // Time is after last frame.\r\n\t\t\t\tlet i = frames.length;\r\n\t\t\t\trotate = frames[i + TransformConstraintTimeline.PREV_ROTATE];\r\n\t\t\t\ttranslate = frames[i + TransformConstraintTimeline.PREV_TRANSLATE];\r\n\t\t\t\tscale = frames[i + TransformConstraintTimeline.PREV_SCALE];\r\n\t\t\t\tshear = frames[i + TransformConstraintTimeline.PREV_SHEAR];\r\n\t\t\t} else {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES);\r\n\t\t\t\trotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE];\r\n\t\t\t\ttranslate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE];\r\n\t\t\t\tscale = frames[frame + TransformConstraintTimeline.PREV_SCALE];\r\n\t\t\t\tshear = frames[frame + TransformConstraintTimeline.PREV_SHEAR];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\trotate += (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent;\r\n\t\t\t\ttranslate += (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent;\r\n\t\t\t\tscale += (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent;\r\n\t\t\t\tshear += (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent;\r\n\t\t\t}\r\n\t\t\tif (setupPose) {\r\n\t\t\t\tlet data = constraint.data;\r\n\t\t\t\tconstraint.rotateMix = data.rotateMix + (rotate - data.rotateMix) * alpha;\r\n\t\t\t\tconstraint.translateMix = data.translateMix + (translate - data.translateMix) * alpha;\r\n\t\t\t\tconstraint.scaleMix = data.scaleMix + (scale - data.scaleMix) * alpha;\r\n\t\t\t\tconstraint.shearMix = data.shearMix + (shear - data.shearMix) * alpha;\r\n\t\t\t} else {\r\n\t\t\t\tconstraint.rotateMix += (rotate - constraint.rotateMix) * alpha;\r\n\t\t\t\tconstraint.translateMix += (translate - constraint.translateMix) * alpha;\r\n\t\t\t\tconstraint.scaleMix += (scale - constraint.scaleMix) * alpha;\r\n\t\t\t\tconstraint.shearMix += (shear - constraint.shearMix) * alpha;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class PathConstraintPositionTimeline extends CurveTimeline {\r\n\t\tstatic ENTRIES = 2;\r\n\t\tstatic PREV_TIME = -2; static PREV_VALUE = -1;\r\n\t\tstatic VALUE = 1;\r\n\r\n\t\tpathConstraintIndex: number;\r\n\r\n\t\tframes: ArrayLike; // time, position, ...\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.pathConstraintPosition << 24) + this.pathConstraintIndex;\r\n\t\t}\r\n\r\n\t\t/** Sets the time and value of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, value: number) {\r\n\t\t\tframeIndex *= PathConstraintPositionTimeline.ENTRIES;\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tlet constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) constraint.position = constraint.data.position;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet position = 0;\r\n\t\t\tif (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) // Time is after last frame.\r\n\t\t\t\tposition = frames[frames.length + PathConstraintPositionTimeline.PREV_VALUE];\r\n\t\t\telse {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES);\r\n\t\t\t\tposition = frames[frame + PathConstraintPositionTimeline.PREV_VALUE];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\tposition += (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent;\r\n\t\t\t}\r\n\t\t\tif (setupPose)\r\n\t\t\t\tconstraint.position = constraint.data.position + (position - constraint.data.position) * alpha;\r\n\t\t\telse\r\n\t\t\t\tconstraint.position += (position - constraint.position) * alpha;\r\n\t\t}\r\n\t}\r\n\r\n\texport class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline {\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.pathConstraintSpacing << 24) + this.pathConstraintIndex;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tlet constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) constraint.spacing = constraint.data.spacing;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet spacing = 0;\r\n\t\t\tif (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) // Time is after last frame.\r\n\t\t\t\tspacing = frames[frames.length + PathConstraintSpacingTimeline.PREV_VALUE];\r\n\t\t\telse {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES);\r\n\t\t\t\tspacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\tspacing += (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent;\r\n\t\t\t}\r\n\r\n\t\t\tif (setupPose)\r\n\t\t\t\tconstraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha;\r\n\t\t\telse\r\n\t\t\t\tconstraint.spacing += (spacing - constraint.spacing) * alpha;\r\n\t\t}\r\n\t}\r\n\r\n\texport class PathConstraintMixTimeline extends CurveTimeline {\r\n\t\tstatic ENTRIES = 3;\r\n\t\tstatic PREV_TIME = -3; static PREV_ROTATE = -2; static PREV_TRANSLATE = -1;\r\n\t\tstatic ROTATE = 1; static TRANSLATE = 2;\r\n\r\n\t\tpathConstraintIndex: number;\r\n\r\n\t\tframes: ArrayLike; // time, rotate mix, translate mix, ...\r\n\r\n\t\tconstructor (frameCount: number) {\r\n\t\t\tsuper(frameCount);\r\n\t\t\tthis.frames = Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES);\r\n\t\t}\r\n\r\n\t\tgetPropertyId () {\r\n\t\t\treturn (TimelineType.pathConstraintMix << 24) + this.pathConstraintIndex;\r\n\t\t}\r\n\r\n\t\t/** Sets the time and mixes of the specified keyframe. */\r\n\t\tsetFrame (frameIndex: number, time: number, rotateMix: number, translateMix: number) {\r\n\t\t\tframeIndex *= PathConstraintMixTimeline.ENTRIES;\r\n\t\t\tthis.frames[frameIndex] = time;\r\n\t\t\tthis.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix;\r\n\t\t\tthis.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix;\r\n\t\t}\r\n\r\n\t\tapply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, setupPose: boolean, mixingOut: boolean) {\r\n\t\t\tlet frames = this.frames;\r\n\t\t\tlet constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\r\n\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) {\r\n\t\t\t\t\tconstraint.rotateMix = constraint.data.rotateMix;\r\n\t\t\t\t\tconstraint.translateMix = constraint.data.translateMix;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet rotate = 0, translate = 0;\r\n\t\t\tif (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { // Time is after last frame.\r\n\t\t\t\trotate = frames[frames.length + PathConstraintMixTimeline.PREV_ROTATE];\r\n\t\t\t\ttranslate = frames[frames.length + PathConstraintMixTimeline.PREV_TRANSLATE];\r\n\t\t\t} else {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES);\r\n\t\t\t\trotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE];\r\n\t\t\t\ttranslate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\trotate += (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent;\r\n\t\t\t\ttranslate += (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent;\r\n\t\t\t}\r\n\r\n\t\t\tif (setupPose) {\r\n\t\t\t\tconstraint.rotateMix = constraint.data.rotateMix + (rotate - constraint.data.rotateMix) * alpha;\r\n\t\t\t\tconstraint.translateMix = constraint.data.translateMix + (translate - constraint.data.translateMix) * alpha;\r\n\t\t\t} else {\r\n\t\t\t\tconstraint.rotateMix += (rotate - constraint.rotateMix) * alpha;\r\n\t\t\t\tconstraint.translateMix += (translate - constraint.translateMix) * alpha;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License v2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n\texport class AnimationState {\r\n\t\tstatic emptyAnimation = new Animation(\"\", [], 0);\r\n\r\n\t\tdata: AnimationStateData;\r\n\t\ttracks = new Array();\r\n\t\tevents = new Array();\r\n\t\tlisteners = new Array();\r\n\t\tqueue = new EventQueue(this);\r\n\t\tpropertyIDs = new IntSet();\r\n\t\tanimationsChanged = false;\r\n\t\ttimeScale = 1;\r\n\r\n\t\ttrackEntryPool = new Pool(() => new TrackEntry());\r\n\r\n\t\tconstructor (data: AnimationStateData) {\r\n\t\t\tthis.data = data;\r\n\t\t}\r\n\r\n\t\tupdate (delta: number) {\r\n\t\t\tdelta *= this.timeScale;\r\n\t\t\tlet tracks = this.tracks;\r\n\t\t\tfor (let i = 0, n = tracks.length; i < n; i++) {\r\n\t\t\t\tlet current = tracks[i];\r\n\t\t\t\tif (current == null) continue;\r\n\r\n\t\t\t\tcurrent.animationLast = current.nextAnimationLast;\r\n\t\t\t\tcurrent.trackLast = current.nextTrackLast;\r\n\r\n\t\t\t\tlet currentDelta = delta * current.timeScale;\r\n\r\n\t\t\t\tif (current.delay > 0) {\r\n\t\t\t\t\tcurrent.delay -= currentDelta;\r\n\t\t\t\t\tif (current.delay > 0) continue;\r\n\t\t\t\t\tcurrentDelta = -current.delay;\r\n\t\t\t\t\tcurrent.delay = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet next = current.next;\r\n\t\t\t\tif (next != null) {\r\n\t\t\t\t\t// When the next entry's delay is passed, change to the next entry, preserving leftover time.\r\n\t\t\t\t\tlet nextTime = current.trackLast - next.delay;\r\n\t\t\t\t\tif (nextTime >= 0) {\r\n\t\t\t\t\t\tnext.delay = 0;\r\n\t\t\t\t\t\tnext.trackTime = nextTime + delta * next.timeScale;\r\n\t\t\t\t\t\tcurrent.trackTime += currentDelta;\r\n\t\t\t\t\t\tthis.setCurrent(i, next, true);\r\n\t\t\t\t\t\twhile (next.mixingFrom != null) {\r\n\t\t\t\t\t\t\tnext.mixTime += currentDelta;\r\n\t\t\t\t\t\t\tnext = next.mixingFrom;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom.\r\n\t\t\t\t\tif (current.trackLast >= current.trackEnd && current.mixingFrom == null) {\r\n\t\t\t\t\t\ttracks[i] = null;\r\n\t\t\t\t\t\tthis.queue.end(current);\r\n\t\t\t\t\t\tthis.disposeNext(current);\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n this.updateMixingFrom(current, delta);\r\n\r\n\t\t\t\tcurrent.trackTime += currentDelta;\r\n\t\t\t}\r\n\r\n\t\t\tthis.queue.drain();\r\n\t\t}\r\n\r\n updateMixingFrom (entry: TrackEntry, delta: number) {\r\n let from = entry.mixingFrom;\r\n if (from == null) return;\r\n\r\n this.updateMixingFrom(from, delta);\r\n\r\n if (entry.mixTime >= entry.mixDuration && from.mixingFrom != null && entry.mixTime > 0) {\r\n entry.mixingFrom = null;\r\n this.queue.end(from);\r\n return;\r\n }\r\n\r\n from.animationLast = from.nextAnimationLast;\r\n from.trackLast = from.nextTrackLast;\r\n from.trackTime += delta * from.timeScale;\r\n entry.mixTime += delta * from.timeScale;\r\n }\r\n\r\n\t\tapply (skeleton: Skeleton) {\r\n\t\t\tif (skeleton == null) throw new Error(\"skeleton cannot be null.\");\r\n\t\t\tif (this.animationsChanged) this._animationsChanged();\r\n\r\n\t\t\tlet events = this.events;\r\n\t\t\tlet tracks = this.tracks;\r\n\r\n\t\t\tfor (let i = 0, n = tracks.length; i < n; i++) {\r\n\t\t\t\tlet current = tracks[i];\r\n\t\t\t\tif (current == null || current.delay > 0) continue;\r\n\r\n\t\t\t\t// Apply mixing from entries first.\r\n\t\t\t\tlet mix = current.alpha;\r\n if (current.mixingFrom != null)\r\n mix *= this.applyMixingFrom(current, skeleton);\r\n else if (current.trackTime >= current.trackEnd)\r\n mix = 0;\r\n\r\n\t\t\t\t// Apply current entry.\r\n\t\t\t\tlet animationLast = current.animationLast, animationTime = current.getAnimationTime();\r\n\t\t\t\tlet timelineCount = current.animation.timelines.length;\r\n\t\t\t\tlet timelines = current.animation.timelines;\r\n\t\t\t\tif (mix == 1) {\r\n\t\t\t\t\tfor (let ii = 0; ii < timelineCount; ii++)\r\n\t\t\t\t\t\ttimelines[ii].apply(skeleton, animationLast, animationTime, events, 1, true, false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet firstFrame = current.timelinesRotation.length == 0;\r\n\t\t\t\t\tif (firstFrame) Utils.setArraySize(current.timelinesRotation, timelineCount << 1, null);\r\n\t\t\t\t\tlet timelinesRotation = current.timelinesRotation;\r\n\r\n\t\t\t\t\tlet timelinesFirst = current.timelinesFirst;\r\n\t\t\t\t\tfor (let ii = 0; ii < timelineCount; ii++) {\r\n\t\t\t\t\t\tlet timeline = timelines[ii];\r\n\t\t\t\t\t\tif (timeline instanceof RotateTimeline) {\r\n\t\t\t\t\t\t\tthis.applyRotateTimeline(timeline, skeleton, animationTime, mix, timelinesFirst[ii], timelinesRotation, ii << 1,\r\n\t\t\t\t\t\t\t\tfirstFrame);\r\n\t\t\t\t\t\t} else\r\n\t\t\t\t\t\t\ttimeline.apply(skeleton, animationLast, animationTime, events, mix, timelinesFirst[ii], false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.queueEvents(current, animationTime);\r\n events.length = 0;\r\n\t\t\t\tcurrent.nextAnimationLast = animationTime;\r\n\t\t\t\tcurrent.nextTrackLast = current.trackTime;\r\n\t\t\t}\r\n\r\n\t\t\tthis.queue.drain();\r\n\t\t}\r\n\r\n\t\tapplyMixingFrom (entry: TrackEntry, skeleton: Skeleton) {\r\n\t\t\tlet from = entry.mixingFrom;\r\n\t\t\tif (from.mixingFrom != null) this.applyMixingFrom(from, skeleton);\r\n\r\n\t\t\tlet mix = 0;\r\n\t\t\tif (entry.mixDuration == 0) // Single frame mix to undo mixingFrom changes.\r\n\t\t\t\tmix = 1;\r\n\t\t\telse {\r\n\t\t\t\tmix = entry.mixTime / entry.mixDuration;\r\n\t\t\t\tif (mix > 1) mix = 1;\r\n\t\t\t}\r\n\r\n\t\t\tlet events = mix < from.eventThreshold ? this.events : null;\r\n\t\t\tlet attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold;\r\n\t\t\tlet animationLast = from.animationLast, animationTime = from.getAnimationTime();\r\n\t\t\tlet timelineCount = from.animation.timelines.length;\r\n\t\t\tlet timelines = from.animation.timelines;\r\n\t\t\tlet timelinesFirst = from.timelinesFirst;\r\n\t\t\tlet alpha = from.alpha * entry.mixAlpha * (1 - mix);\r\n\r\n\t\t\tlet firstFrame = from.timelinesRotation.length == 0;\r\n\t\t\tif (firstFrame) Utils.setArraySize(from.timelinesRotation, timelineCount << 1, null);\r\n\t\t\tlet timelinesRotation = from.timelinesRotation;\r\n\r\n\t\t\tfor (let i = 0; i < timelineCount; i++) {\r\n\t\t\t\tlet timeline = timelines[i];\r\n\t\t\t\tlet setupPose = timelinesFirst[i];\r\n\t\t\t\tif (timeline instanceof RotateTimeline)\r\n\t\t\t\t\tthis.applyRotateTimeline(timeline, skeleton, animationTime, alpha, setupPose, timelinesRotation, i << 1, firstFrame);\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (!setupPose) {\r\n\t\t\t\t\t\tif (!attachments && timeline instanceof AttachmentTimeline) continue;\r\n\t\t\t\t\t\tif (!drawOrder && timeline instanceof DrawOrderTimeline) continue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttimeline.apply(skeleton, animationLast, animationTime, events, alpha, setupPose, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n if (entry.mixDuration > 0) this.queueEvents(from, animationTime);\r\n this.events.length = 0;\r\n\t\t\tfrom.nextAnimationLast = animationTime;\r\n\t\t\tfrom.nextTrackLast = from.trackTime;\r\n\r\n\t\t\treturn mix;\r\n\t\t}\r\n\r\n\t\tapplyRotateTimeline (timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, setupPose: boolean,\r\n\t\t\ttimelinesRotation: Array, i: number, firstFrame: boolean) {\r\n\r\n if (firstFrame) timelinesRotation[i] = 0;\r\n\r\n\t\t\tif (alpha == 1) {\r\n\t\t\t\ttimeline.apply(skeleton, 0, time, null, 1, setupPose, false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet rotateTimeline = timeline as RotateTimeline;\r\n\t\t\tlet frames = rotateTimeline.frames;\r\n\t\t\tlet bone = skeleton.bones[rotateTimeline.boneIndex];\r\n\t\t\tif (time < frames[0]) {\r\n\t\t\t\tif (setupPose) bone.rotation = bone.data.rotation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet r2 = 0;\r\n\t\t\tif (time >= frames[frames.length - RotateTimeline.ENTRIES]) // Time is after last frame.\r\n\t\t\t\tr2 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION];\r\n\t\t\telse {\r\n\t\t\t\t// Interpolate between the previous frame and the current frame.\r\n\t\t\t\tlet frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES);\r\n\t\t\t\tlet prevRotation = frames[frame + RotateTimeline.PREV_ROTATION];\r\n\t\t\t\tlet frameTime = frames[frame];\r\n\t\t\t\tlet percent = rotateTimeline.getCurvePercent((frame >> 1) - 1,\r\n\t\t\t\t\t1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime));\r\n\r\n\t\t\t\tr2 = frames[frame + RotateTimeline.ROTATION] - prevRotation;\r\n\t\t\t\tr2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360;\r\n\t\t\t\tr2 = prevRotation + r2 * percent + bone.data.rotation;\r\n\t\t\t\tr2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360;\r\n\t\t\t}\r\n\r\n\t\t\t// Mix between rotations using the direction of the shortest route on the first frame while detecting crosses.\r\n\t\t\tlet r1 = setupPose ? bone.data.rotation : bone.rotation;\r\n\t\t\tlet total = 0, diff = r2 - r1;\r\n\t\t\tif (diff == 0) {\r\n total = timelinesRotation[i];\r\n\t\t\t} else {\r\n\t\t\t\tdiff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360;\r\n\t\t\t\tlet lastTotal = 0, lastDiff = 0;\r\n\t\t\t\tif (firstFrame) {\r\n\t\t\t\t\tlastTotal = 0;\r\n\t\t\t\t\tlastDiff = diff;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlastTotal = timelinesRotation[i]; // Angle and direction of mix, including loops.\r\n\t\t\t\t\tlastDiff = timelinesRotation[i + 1]; // Difference between bones.\r\n\t\t\t\t}\r\n\t\t\t\tlet current = diff > 0, dir = lastTotal >= 0;\r\n\t\t\t\t// Detect cross at 0 (not 180).\r\n\t\t\t\tif (MathUtils.signum(lastDiff) != MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) {\r\n\t\t\t\t\t// A cross after a 360 rotation is a loop.\r\n\t\t\t\t\tif (Math.abs(lastTotal) > 180) lastTotal += 360 * MathUtils.signum(lastTotal);\r\n\t\t\t\t\tdir = current;\r\n\t\t\t\t}\r\n\t\t\t\ttotal = diff + lastTotal - lastTotal % 360; // Store loops as part of lastTotal.\r\n\t\t\t\tif (dir != current) total += 360 * MathUtils.signum(lastTotal);\r\n\t\t\t\ttimelinesRotation[i] = total;\r\n\t\t\t}\r\n\t\t\ttimelinesRotation[i + 1] = diff;\r\n\t\t\tr1 += total * alpha;\r\n\t\t\tbone.rotation = r1 - (16384 - ((16384.499999999996 - r1 / 360) | 0)) * 360;\r\n\t\t}\r\n\r\n\t\tqueueEvents (entry: TrackEntry, animationTime: number) {\r\n\t\t\tlet animationStart = entry.animationStart, animationEnd = entry.animationEnd;\r\n\t\t\tlet duration = animationEnd - animationStart;\r\n\t\t\tlet trackLastWrapped = entry.trackLast % duration;\r\n\r\n\t\t\t// Queue events before complete.\r\n\t\t\tlet events = this.events;\r\n\t\t\tlet i = 0, n = events.length;\r\n\t\t\tfor (; i < n; i++) {\r\n\t\t\t\tlet event = events[i];\r\n\t\t\t\tif (event.time < trackLastWrapped) break;\r\n\t\t\t\tif (event.time > animationEnd) continue; // Discard events outside animation start/end.\r\n\t\t\t\tthis.queue.event(entry, event);\r\n\t\t\t}\r\n\r\n\t\t\t// Queue complete if completed a loop iteration or the animation.\r\n\t\t\tif (entry.loop ? (trackLastWrapped > entry.trackTime % duration)\r\n\t\t\t\t: (animationTime >= animationEnd && entry.animationLast < animationEnd)) {\r\n\t\t\t\tthis.queue.complete(entry);\r\n\t\t\t}\r\n\r\n\t\t\t// Queue events after complete.\r\n\t\t\tfor (; i < n; i++) {\r\n\t\t\t\tlet event = events[i];\r\n\t\t\t\tif (event.time < animationStart) continue; // Discard events outside animation start/end.\r\n\t\t\t\tthis.queue.event(entry, events[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n clearTracks () {\r\n let oldDrainDisabled = this.queue.drainDisabled;\r\n this.queue.drainDisabled = true;\r\n for (let i = 0, n = this.tracks.length; i < n; i++)\r\n this.clearTrack(i);\r\n this.tracks.length = 0;\r\n this.queue.drainDisabled = oldDrainDisabled;\r\n this.queue.drain();\r\n }\r\n\r\n\t\tclearTrack (trackIndex: number) {\r\n\t\t\tif (trackIndex >= this.tracks.length) return;\r\n\t\t\tlet current = this.tracks[trackIndex];\r\n\t\t\tif (current == null) return;\r\n\r\n\t\t\tthis.queue.end(current);\r\n\r\n\t\t\tthis.disposeNext(current);\r\n\r\n\t\t\tlet entry = current;\r\n\t\t\twhile (true) {\r\n\t\t\t\tlet from = entry.mixingFrom;\r\n\t\t\t\tif (from == null) break;\r\n\t\t\t\tthis.queue.end(from);\r\n\t\t\t\tentry.mixingFrom = null;\r\n\t\t\t\tentry = from;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tracks[current.trackIndex] = null;\r\n\r\n\t\t\tthis.queue.drain();\r\n\t\t}\r\n\r\n\t\tsetCurrent (index: number, current: TrackEntry, interrupt: boolean) {\r\n\t\t\tlet from = this.expandToIndex(index);\r\n\t\t\tthis.tracks[index] = current;\r\n\r\n\t\t\tif (from != null) {\r\n if (interrupt) this.queue.interrupt(from);\r\n\t\t\t\tcurrent.mixingFrom = from;\r\n\t\t\t\tcurrent.mixTime = 0;\r\n\r\n from.timelinesRotation.length = 0;\r\n\r\n\t\t\t\t// If not completely mixed in, set mixAlpha so mixing out happens from current mix to zero.\r\n if (from.mixingFrom != null && from.mixDuration > 0) current.mixAlpha *= Math.min(from.mixTime / from.mixDuration, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.queue.start(current);\r\n\t\t}\r\n\r\n\t\tsetAnimation (trackIndex: number, animationName: string, loop: boolean) {\r\n\t\t\tlet animation = this.data.skeletonData.findAnimation(animationName);\r\n\t\t\tif (animation == null) throw new Error(\"Animation not found: \" + animationName);\r\n\t\t\treturn this.setAnimationWith(trackIndex, animation, loop);\r\n\t\t}\r\n\r\n\t\tsetAnimationWith (trackIndex: number, animation: Animation, loop: boolean) {\r\n\t\t\tif (animation == null) throw new Error(\"animation cannot be null.\");\r\n let interrupt = true;\r\n\t\t\tlet current = this.expandToIndex(trackIndex);\r\n\t\t\tif (current != null) {\r\n\t\t\t\tif (current.nextTrackLast == -1) {\r\n\t\t\t\t\t// Don't mix from an entry that was never applied.\r\n\t\t\t\t\tthis.tracks[trackIndex] = current.mixingFrom;\r\n\t\t\t\t\tthis.queue.interrupt(current);\r\n\t\t\t\t\tthis.queue.end(current);\r\n\t\t\t\t\tthis.disposeNext(current);\r\n\t\t\t\t\tcurrent = current.mixingFrom;\r\n interrupt = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tthis.disposeNext(current);\r\n\t\t\t}\r\n\t\t\tlet entry = this.trackEntry(trackIndex, animation, loop, current);\r\n\t\t\tthis.setCurrent(trackIndex, entry, interrupt);\r\n\t\t\tthis.queue.drain();\r\n\t\t\treturn entry;\r\n\t\t}\r\n\r\n\t\taddAnimation (trackIndex: number, animationName: string, loop: boolean, delay: number) {\r\n\t\t\tlet animation = this.data.skeletonData.findAnimation(animationName);\r\n\t\t\tif (animation == null) throw new Error(\"Animation not found: \" + animationName);\r\n\t\t\treturn this.addAnimationWith(trackIndex, animation, loop, delay);\r\n\t\t}\r\n\r\n\t\taddAnimationWith (trackIndex: number, animation: Animation, loop: boolean, delay: number) {\r\n\t\t\tif (animation == null) throw new Error(\"animation cannot be null.\");\r\n\r\n\t\t\tlet last = this.expandToIndex(trackIndex);\r\n\t\t\tif (last != null) {\r\n\t\t\t\twhile (last.next != null)\r\n\t\t\t\t\tlast = last.next;\r\n\t\t\t}\r\n\r\n\t\t\tlet entry = this.trackEntry(trackIndex, animation, loop, last);\r\n\r\n\t\t\tif (last == null) {\r\n\t\t\t\tthis.setCurrent(trackIndex, entry, true);\r\n\t\t\t\tthis.queue.drain();\r\n\t\t\t} else {\r\n\t\t\t\tlast.next = entry;\r\n\t\t\t\tif (delay <= 0) {\r\n\t\t\t\t\tlet duration = last.animationEnd - last.animationStart;\r\n\t\t\t\t\tif (duration != 0)\r\n\t\t\t\t\t\tdelay += duration * (1 + ((last.trackTime / duration) | 0)) - this.data.getMix(last.animation, animation);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tdelay = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tentry.delay = delay;\r\n\t\t\treturn entry;\r\n\t\t}\r\n\r\n\t\tsetEmptyAnimation (trackIndex: number, mixDuration: number) {\r\n\t\t\tlet entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation, false);\r\n\t\t\tentry.mixDuration = mixDuration;\r\n\t\t\tentry.trackEnd = mixDuration;\r\n\t\t\treturn entry;\r\n\t\t}\r\n\r\n\t\taddEmptyAnimation (trackIndex: number, mixDuration: number, delay: number) {\r\n\t\t\tif (delay <= 0) delay -= mixDuration;\r\n\t\t\tlet entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation, false, delay);\r\n\t\t\tentry.mixDuration = mixDuration;\r\n\t\t\tentry.trackEnd = mixDuration;\r\n\t\t\treturn entry;\r\n\t\t}\r\n\r\n setEmptyAnimations (mixDuration: number) {\r\n let oldDrainDisabled = this.queue.drainDisabled;\r\n this.queue.drainDisabled = true;\r\n for (let i = 0, n = this.tracks.length; i < n; i++) {\r\n let current = this.tracks[i];\r\n if (current != null) this.setEmptyAnimation(current.trackIndex, mixDuration);\r\n }\r\n this.queue.drainDisabled = oldDrainDisabled;\r\n this.queue.drain();\r\n }\r\n\r\n\t\texpandToIndex (index: number) {\r\n\t\t\tif (index < this.tracks.length) return this.tracks[index];\r\n\t\t\tUtils.ensureArrayCapacity(this.tracks, index - this.tracks.length + 1, null);\r\n\t\t\tthis.tracks.length = index + 1;\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\ttrackEntry (trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry) {\r\n\t\t\tlet entry = this.trackEntryPool.obtain();\r\n\t\t\tentry.trackIndex = trackIndex;\r\n\t\t\tentry.animation = animation;\r\n\t\t\tentry.loop = loop;\r\n\r\n\t\t\tentry.eventThreshold = 0;\r\n\t\t\tentry.attachmentThreshold = 0;\r\n\t\t\tentry.drawOrderThreshold = 0;\r\n\r\n\t\t\tentry.animationStart = 0;\r\n\t\t\tentry.animationEnd = animation.duration;\r\n\t\t\tentry.animationLast = -1;\r\n\t\t\tentry.nextAnimationLast = -1;\r\n\r\n\t\t\tentry.delay = 0;\r\n\t\t\tentry.trackTime = 0;\r\n\t\t\tentry.trackLast = -1;\r\n\t\t\tentry.nextTrackLast = -1;\r\n entry.trackEnd = Number.MAX_VALUE;\r\n\t\t\tentry.timeScale = 1;\r\n\r\n\t\t\tentry.alpha = 1;\r\n\t\t\tentry.mixAlpha = 1;\r\n\t\t\tentry.mixTime = 0;\r\n\t\t\tentry.mixDuration = last == null ? 0 : this.data.getMix(last.animation, animation);\r\n\t\t\treturn entry;\r\n\t\t}\r\n\r\n\t\tdisposeNext (entry: TrackEntry) {\r\n\t\t\tlet next = entry.next;\r\n\t\t\twhile (next != null) {\r\n\t\t\t\tthis.queue.dispose(next);\r\n\t\t\t\tnext = next.next;\r\n\t\t\t}\r\n\t\t\tentry.next = null;\r\n\t\t}\r\n\r\n\t\t_animationsChanged () {\r\n\t\t\tthis.animationsChanged = false;\r\n\r\n\t\t\tlet propertyIDs = this.propertyIDs;\r\n\r\n\t\t\t// Compute timelinesFirst from lowest to highest track entries.\r\n\t\t\tlet i = 0, n = this.tracks.length;\r\n\t\t\tpropertyIDs.clear();\r\n\t\t\tfor (; i < n; i++) { // Find first non-null entry.\r\n\t\t\t\tlet entry = this.tracks[i];\r\n\t\t\t\tif (entry == null) continue;\r\n\t\t\t\tthis.setTimelinesFirst(entry);\r\n\t\t\t\ti++;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tfor (; i < n; i++) { // Rest of entries.\r\n\t\t\t\tlet entry = this.tracks[i];\r\n\t\t\t\tif (entry != null) this.checkTimelinesFirst(entry);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetTimelinesFirst (entry: TrackEntry) {\r\n\t\t\tif (entry.mixingFrom != null) {\r\n\t\t\t\tthis.setTimelinesFirst(entry.mixingFrom);\r\n\t\t\t\tthis.checkTimelinesUsage(entry, entry.timelinesFirst);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tlet propertyIDs = this.propertyIDs;\r\n\t\t\tlet timelines = entry.animation.timelines;\r\n\t\t\tlet n = timelines.length;\r\n\t\t\tlet usage = Utils.setArraySize(entry.timelinesFirst, n, false);\r\n\t\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\t\tpropertyIDs.add(timelines[i].getPropertyId());\r\n\t\t\t\tusage[i] = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcheckTimelinesFirst (entry: TrackEntry) {\r\n\t\t\tif (entry.mixingFrom != null) this.checkTimelinesFirst(entry.mixingFrom);\r\n\t\t\tthis.checkTimelinesUsage(entry, entry.timelinesFirst);\r\n\t\t}\r\n\r\n\t\tcheckTimelinesUsage (entry: TrackEntry, usageArray: Array) {\r\n\t\t\tlet propertyIDs = this.propertyIDs;\r\n\t\t\tlet timelines = entry.animation.timelines;\r\n\t\t\tlet n = timelines.length;\r\n\t\t\tlet usage = Utils.setArraySize(usageArray, n);\r\n\t\t\tfor (let i = 0; i < n; i++)\r\n\t\t\t\tusage[i] = propertyIDs.add(timelines[i].getPropertyId());\r\n\t\t}\r\n\r\n\t\tgetCurrent (trackIndex: number) {\r\n\t\t\tif (trackIndex >= this.tracks.length) return null;\r\n\t\t\treturn this.tracks[trackIndex];\r\n\t\t}\r\n\r\n\t\taddListener (listener: AnimationStateListener2) {\r\n\t\t\tif (listener == null) throw new Error(\"listener cannot be null.\");\r\n\t\t\tthis.listeners.push(listener);\r\n\t\t}\r\n\r\n\t\t/** Removes the listener added with {@link #addListener(AnimationStateListener)}. */\r\n\t\tremoveListener (listener: AnimationStateListener2) {\r\n\t\t\tlet index = this.listeners.indexOf(listener);\r\n\t\t\tif (index >= 0) this.listeners.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tclearListeners () {\r\n\t\t\tthis.listeners.length = 0;\r\n\t\t}\r\n\r\n\t\tclearListenerNotifications () {\r\n\t\t\tthis.queue.clear();\r\n\t\t}\r\n\r\n //deprecated stuff\r\n onComplete: (trackIndex: number, loopCount: number) => any;\r\n onEvent: (trackIndex: number, event: Event) => any;\r\n onStart: (trackIndex: number) => any;\r\n onEnd: (trackIndex: number) => any;\r\n\r\n private static deprecatedWarning1: boolean = false;\r\n\r\n setAnimationByName(trackIndex: number, animationName: string, loop: boolean) {\r\n if (!AnimationState.deprecatedWarning1) {\r\n AnimationState.deprecatedWarning1 = true;\r\n console.warn(\"Deprecation Warning: AnimationState.setAnimationByName is deprecated, please use setAnimation from now on.\");\r\n }\r\n this.setAnimation(trackIndex, animationName, loop);\r\n }\r\n\r\n private static deprecatedWarning2: boolean = false;\r\n\r\n addAnimationByName(trackIndex: number, animationName: string, loop: boolean, delay: number) {\r\n if (!AnimationState.deprecatedWarning2) {\r\n AnimationState.deprecatedWarning2 = true;\r\n console.warn(\"Deprecation Warning: AnimationState.addAnimationByName is deprecated, please use addAnimation from now on.\");\r\n }\r\n this.addAnimation(trackIndex, animationName, loop, delay);\r\n }\r\n\r\n private static deprecatedWarning3: boolean = false;\r\n\r\n hasAnimation(animationName: string): boolean {\r\n let animation = this.data.skeletonData.findAnimation(animationName);\r\n return animation !== null;\r\n }\r\n\r\n hasAnimationByName(animationName: string): boolean {\r\n if (!AnimationState.deprecatedWarning3) {\r\n AnimationState.deprecatedWarning3 = true;\r\n console.warn(\"Deprecation Warning: AnimationState.hasAnimationByName is deprecated, please use hasAnimation from now on.\");\r\n }\r\n return this.hasAnimation(animationName);\r\n }\r\n\t}\r\n\r\n\texport class TrackEntry {\r\n\t\tanimation: Animation;\r\n\t\tnext: TrackEntry; mixingFrom: TrackEntry;\r\n\t\tlistener: AnimationStateListener2;\r\n\t\ttrackIndex: number;\r\n\t\tloop: boolean;\r\n\t\teventThreshold: number; attachmentThreshold: number; drawOrderThreshold: number;\r\n\t\tanimationStart: number; animationEnd: number; animationLast: number; nextAnimationLast: number;\r\n\t\tdelay: number; trackTime: number; trackLast: number; nextTrackLast: number; trackEnd: number; timeScale: number;\r\n\t\talpha: number; mixTime: number; mixDuration: number; mixAlpha: number;\r\n\t\ttimelinesFirst = new Array();\r\n\t\ttimelinesRotation = new Array();\r\n\r\n\t\treset () {\r\n\t\t\tthis.next = null;\r\n\t\t\tthis.mixingFrom = null;\r\n\t\t\tthis.animation = null;\r\n\t\t\tthis.listener = null;\r\n\t\t\tthis.timelinesFirst.length = 0;\r\n\t\t\tthis.timelinesRotation.length = 0;\r\n\t\t}\r\n\r\n\t\tgetAnimationTime () {\r\n\t\t\tif (this.loop) {\r\n\t\t\t\tlet duration = this.animationEnd - this.animationStart;\r\n\t\t\t\tif (duration == 0) return this.animationStart;\r\n\t\t\t\treturn (this.trackTime % duration) + this.animationStart;\r\n\t\t\t}\r\n\t\t\treturn Math.min(this.trackTime + this.animationStart, this.animationEnd);\r\n\t\t}\r\n\r\n\t\tsetAnimationLast(animationLast: number) {\r\n\t\t\tthis.animationLast = animationLast;\r\n\t\t\tthis.nextAnimationLast = animationLast;\r\n\t\t}\r\n\r\n\t\tisComplete () {\r\n\t\t\treturn this.trackTime >= this.animationEnd - this.animationStart;\r\n\t\t}\r\n\r\n\t\tresetRotationDirections () {\r\n\t\t\tthis.timelinesRotation.length = 0;\r\n\t\t}\r\n\r\n //deprecated stuff\r\n onComplete: (trackIndex: number, loopCount: number) => any;\r\n onEvent: (trackIndex: number, event: Event) => any;\r\n onStart: (trackIndex: number) => any;\r\n onEnd: (trackIndex: number) => any;\r\n\r\n private static deprecatedWarning1: Boolean = false;\r\n private static deprecatedWarning2: Boolean = false;\r\n\r\n get time() {\r\n if (!TrackEntry.deprecatedWarning1) {\r\n TrackEntry.deprecatedWarning1 = true;\r\n console.warn(\"Deprecation Warning: TrackEntry.time is deprecated, please use trackTime from now on.\");\r\n }\r\n return this.trackTime;\r\n }\r\n\r\n set time(value: number) {\r\n if (!TrackEntry.deprecatedWarning1) {\r\n TrackEntry.deprecatedWarning1 = true;\r\n console.warn(\"Deprecation Warning: TrackEntry.time is deprecated, please use trackTime from now on.\");\r\n }\r\n this.trackTime = value;\r\n }\r\n\r\n get endTime() {\r\n if (!TrackEntry.deprecatedWarning2) {\r\n TrackEntry.deprecatedWarning2 = true;\r\n console.warn(\"Deprecation Warning: TrackEntry.endTime is deprecated, please use trackEnd from now on.\");\r\n }\r\n return this.trackTime;\r\n }\r\n\r\n set endTime(value: number) {\r\n if (!TrackEntry.deprecatedWarning2) {\r\n TrackEntry.deprecatedWarning2 = true;\r\n console.warn(\"Deprecation Warning: TrackEntry.endTime is deprecated, please use trackEnd from now on.\");\r\n }\r\n this.trackTime = value;\r\n }\r\n\r\n loopsCount() {\r\n return Math.floor(this.trackTime / this.trackEnd);\r\n }\r\n\t}\r\n\r\n\texport class EventQueue {\r\n\t\tobjects: Array = [];\r\n\t\tdrainDisabled = false;\r\n\t\tanimState: AnimationState;\r\n\r\n\t\tconstructor(animState: AnimationState) {\r\n\t\t\tthis.animState = animState;\r\n\t\t}\r\n\r\n\t\tstart (entry: TrackEntry) {\r\n\t\t\tthis.objects.push(EventType.start);\r\n\t\t\tthis.objects.push(entry);\r\n\t\t\tthis.animState.animationsChanged = true;\r\n\t\t}\r\n\r\n\t\tinterrupt (entry: TrackEntry) {\r\n\t\t\tthis.objects.push(EventType.interrupt);\r\n\t\t\tthis.objects.push(entry);\r\n\t\t}\r\n\r\n\t\tend (entry: TrackEntry) {\r\n\t\t\tthis.objects.push(EventType.end);\r\n\t\t\tthis.objects.push(entry);\r\n\t\t\tthis.animState.animationsChanged = true;\r\n\t\t}\r\n\r\n\t\tdispose (entry: TrackEntry) {\r\n\t\t\tthis.objects.push(EventType.dispose);\r\n\t\t\tthis.objects.push(entry);\r\n\t\t}\r\n\r\n\t\tcomplete (entry: TrackEntry) {\r\n\t\t\tthis.objects.push(EventType.complete);\r\n\t\t\tthis.objects.push(entry);\r\n\t\t}\r\n\r\n\t\tevent (entry: TrackEntry, event: Event) {\r\n\t\t\tthis.objects.push(EventType.event);\r\n\t\t\tthis.objects.push(entry);\r\n\t\t\tthis.objects.push(event);\r\n\t\t}\r\n\r\n private static deprecatedWarning1: Boolean = false;\r\n\r\n\t\tdeprecateStuff() {\r\n if (!EventQueue.deprecatedWarning1) {\r\n EventQueue.deprecatedWarning1 = true;\r\n console.warn(\"Deprecation Warning: onComplete, onStart, onEnd, onEvent art deprecated, please use listeners from now on. 'state.addListener({ complete: function(track, event) { } })'\");\r\n }\r\n return true;\r\n }\r\n\r\n\t\tdrain () {\r\n\t\t\tif (this.drainDisabled) return;\r\n\t\t\tthis.drainDisabled = true;\r\n\r\n\t\t\tlet objects = this.objects;\r\n\t\t\tlet listeners = this.animState.listeners;\r\n\r\n\t\t\tfor (let i = 0; i < objects.length; i += 2) {\r\n\t\t\t\tlet type = objects[i] as EventType;\r\n\t\t\t\tlet entry = objects[i + 1] as TrackEntry;\r\n\t\t\t\tswitch (type) {\r\n\t\t\t\tcase EventType.start:\r\n\t\t\t\t\tif (entry.listener != null && entry.listener.start) entry.listener.start(entry);\r\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\r\n\t\t\t\t\t\tif (listeners[ii].start) listeners[ii].start(entry);\r\n //deprecation\r\n entry.onStart && this.deprecateStuff() && entry.onStart(entry.trackIndex);\r\n this.animState.onStart && this.deprecateStuff() && this.deprecateStuff && this.animState.onStart(entry.trackIndex);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase EventType.interrupt:\r\n\t\t\t\t\tif (entry.listener != null && entry.listener.interrupt) entry.listener.interrupt(entry);\r\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\r\n\t\t\t\t\t\tif (listeners[ii].interrupt) listeners[ii].interrupt(entry);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase EventType.end:\r\n\t\t\t\t\tif (entry.listener != null && entry.listener.end) entry.listener.end(entry);\r\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\r\n\t\t\t\t\t\tif (listeners[ii].end) listeners[ii].end(entry);\r\n //deprecation\r\n entry.onEnd && this.deprecateStuff() && entry.onEnd(entry.trackIndex);\r\n this.animState.onEnd && this.deprecateStuff() && this.animState.onEnd(entry.trackIndex);\r\n\t\t\t\t\t// Fall through.\r\n\t\t\t\tcase EventType.dispose:\r\n\t\t\t\t\tif (entry.listener != null && entry.listener.dispose) entry.listener.dispose(entry);\r\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\r\n\t\t\t\t\t\tif (listeners[ii].dispose) listeners[ii].dispose(entry);\r\n\t\t\t\t\tthis.animState.trackEntryPool.free(entry);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase EventType.complete:\r\n\t\t\t\t\tif (entry.listener != null && entry.listener.complete) entry.listener.complete(entry);\r\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\r\n\t\t\t\t\t\tif (listeners[ii].complete) listeners[ii].complete(entry);\r\n //deprecation\r\n\r\n let count = MathUtils.toInt(entry.loopsCount()) ;\r\n entry.onComplete && this.deprecateStuff() && entry.onComplete(entry.trackIndex, count);\r\n this.animState.onComplete && this.deprecateStuff() && this.animState.onComplete(entry.trackIndex, count);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase EventType.event:\r\n\t\t\t\t\tlet event = objects[i++ + 2] as Event;\r\n\t\t\t\t\tif (entry.listener != null && entry.listener.event) entry.listener.event(entry, event);\r\n\t\t\t\t\tfor (let ii = 0; ii < listeners.length; ii++)\r\n\t\t\t\t\t\tif (listeners[ii].event) listeners[ii].event(entry, event);\r\n //deprecation\r\n entry.onEvent && this.deprecateStuff() && entry.onEvent(entry.trackIndex, event);\r\n this.animState.onEvent && this.deprecateStuff() && this.animState.onEvent(entry.trackIndex, event);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.clear();\r\n\r\n\t\t\tthis.drainDisabled = false;\r\n\t\t}\r\n\r\n\t\tclear () {\r\n\t\t\tthis.objects.length = 0;\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\texport enum EventType {\r\n\t\tstart, interrupt, end, dispose, complete, event\r\n\t}\r\n\r\n\texport interface AnimationStateListener2 {\r\n\t\t/** Invoked when this entry has been set as the current entry. */\r\n\t\tstart? (entry: TrackEntry): void;\r\n\r\n\t\t/** Invoked when another entry has replaced this entry as the current entry. This entry may continue being applied for\r\n\t\t * mixing. */\r\n\t\tinterrupt? (entry: TrackEntry): void;\r\n\r\n\t\t/** Invoked when this entry is no longer the current entry and will never be applied again. */\r\n\t\tend? (entry: TrackEntry): void;\r\n\r\n\t\t/** Invoked when this entry will be disposed. This may occur without the entry ever being set as the current entry.\r\n\t\t * References to the entry should not be kept after dispose is called, as it may be destroyed or reused. */\r\n\t\tdispose? (entry: TrackEntry): void;\r\n\r\n\t\t/** Invoked every time this entry's animation completes a loop. */\r\n\t\tcomplete? (entry: TrackEntry): void;\r\n\r\n\t\t/** Invoked when this entry's animation triggers an event. */\r\n\t\tevent? (entry: TrackEntry, event: Event): void;\r\n\t}\r\n\r\n\texport abstract class AnimationStateAdapter2 implements AnimationStateListener2 {\r\n\t\tstart (entry: TrackEntry) {\r\n\t\t}\r\n\r\n\t\tinterrupt (entry: TrackEntry) {\r\n\t\t}\r\n\r\n\t\tend (entry: TrackEntry) {\r\n\t\t}\r\n\r\n\t\tdispose (entry: TrackEntry) {\r\n\t\t}\r\n\r\n\t\tcomplete (entry: TrackEntry) {\r\n\t\t}\r\n\r\n\t\tevent (entry: TrackEntry, event: Event) {\r\n\t\t}\r\n\t}\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class AnimationStateData {\r\n skeletonData: SkeletonData;\r\n animationToMixTime: Map = {};\r\n defaultMix = 0;\r\n\r\n constructor(skeletonData: SkeletonData) {\r\n if (skeletonData == null) throw new Error(\"skeletonData cannot be null.\");\r\n this.skeletonData = skeletonData;\r\n }\r\n\r\n setMix(fromName: string, toName: string, duration: number) {\r\n let from = this.skeletonData.findAnimation(fromName);\r\n if (from == null) throw new Error(\"Animation not found: \" + fromName);\r\n let to = this.skeletonData.findAnimation(toName);\r\n if (to == null) throw new Error(\"Animation not found: \" + toName);\r\n this.setMixWith(from, to, duration);\r\n }\r\n\r\n private static deprecatedWarning1: boolean = false;\r\n\r\n setMixByName(fromName: string, toName: string, duration: number) {\r\n if (!AnimationStateData.deprecatedWarning1) {\r\n AnimationStateData.deprecatedWarning1 = true;\r\n console.warn(\"Deprecation Warning: AnimationStateData.setMixByName is deprecated, please use setMix from now on.\");\r\n }\r\n this.setMix(fromName, toName, duration);\r\n }\r\n\r\n setMixWith(from: Animation, to: Animation, duration: number) {\r\n if (from == null) throw new Error(\"from cannot be null.\");\r\n if (to == null) throw new Error(\"to cannot be null.\");\r\n let key = from.name + to.name;\r\n this.animationToMixTime[key] = duration;\r\n }\r\n\r\n getMix(from: Animation, to: Animation) {\r\n let key = from.name + to.name;\r\n let value = this.animationToMixTime[key];\r\n return value === undefined ? this.defaultMix : value;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class AtlasAttachmentLoader implements AttachmentLoader {\r\n atlas: TextureAtlas;\r\n\r\n constructor(atlas: TextureAtlas) {\r\n this.atlas = atlas;\r\n }\r\n\r\n /** @return May be null to not load an attachment. */\r\n newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment {\r\n let region = this.atlas.findRegion(path);\r\n if (region == null) throw new Error(\"Region not found in atlas: \" + path + \" (region attachment: \" + name + \")\");\r\n let attachment = new RegionAttachment(name);\r\n attachment.region = region;\r\n return attachment;\r\n }\r\n\r\n /** @return May be null to not load an attachment. */\r\n newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment {\r\n let region = this.atlas.findRegion(path);\r\n if (region == null) throw new Error(\"Region not found in atlas: \" + path + \" (mesh attachment: \" + name + \")\");\r\n let attachment = new MeshAttachment(name);\r\n attachment.region = region;\r\n return attachment;\r\n }\r\n\r\n /** @return May be null to not load an attachment. */\r\n newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment {\r\n return new BoundingBoxAttachment(name);\r\n }\r\n\r\n /** @return May be null to not load an attachment */\r\n newPathAttachment(skin: Skin, name: string): PathAttachment {\r\n return new PathAttachment(name);\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export abstract class Attachment {\r\n name: string;\r\n\r\n constructor(name: string) {\r\n if (name == null) throw new Error(\"name cannot be null.\");\r\n this.name = name;\r\n }\r\n }\r\n\r\n export abstract class VertexAttachment extends Attachment {\r\n bones: Array;\r\n vertices: ArrayLike;\r\n worldVerticesLength = 0;\r\n\r\n constructor(name: string) {\r\n super(name);\r\n }\r\n\r\n computeWorldVertices(slot: Slot, worldVertices: ArrayLike) {\r\n this.computeWorldVerticesWith(slot, 0, this.worldVerticesLength, worldVertices, 0);\r\n }\r\n\r\n /** Transforms local vertices to world coordinates.\r\n * @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y.\r\n * @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start.\r\n * @param worldVertices The output world vertices. Must have a length >= offset + count.\r\n * @param offset The worldVertices index to begin writing values. */\r\n computeWorldVerticesWith(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number) {\r\n count += offset;\r\n let skeleton = slot.bone.skeleton;\r\n let deformArray = slot.attachmentVertices;\r\n let vertices = this.vertices;\r\n let bones = this.bones;\r\n if (bones == null) {\r\n if (deformArray.length > 0) vertices = deformArray;\r\n let bone = slot.bone;\r\n let m = bone.matrix;\r\n let x = m.tx;\r\n let y = m.ty;\r\n let a = m.a, b = m.c, c = m.b, d = m.d;\r\n for (let v = start, w = offset; w < count; v += 2, w += 2) {\r\n let vx = vertices[v], vy = vertices[v + 1];\r\n worldVertices[w] = vx * a + vy * b + x;\r\n worldVertices[w + 1] = vx * c + vy * d + y;\r\n }\r\n return;\r\n }\r\n let v = 0, skip = 0;\r\n for (let i = 0; i < start; i += 2) {\r\n let n = bones[v];\r\n v += n + 1;\r\n skip += n;\r\n }\r\n let skeletonBones = skeleton.bones;\r\n if (deformArray.length == 0) {\r\n for (let w = offset, b = skip * 3; w < count; w += 2) {\r\n let wx = 0, wy = 0;\r\n let n = bones[v++];\r\n n += v;\r\n for (; v < n; v++, b += 3) {\r\n let bone = skeletonBones[bones[v]];\r\n let m = bone.matrix;\r\n let vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2];\r\n wx += (vx * m.a + vy * m.c + m.tx) * weight;\r\n wy += (vx * m.b + vy * m.d + m.ty) * weight;\r\n }\r\n worldVertices[w] = wx;\r\n worldVertices[w + 1] = wy;\r\n }\r\n } else {\r\n let deform = deformArray;\r\n for (let w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) {\r\n let wx = 0, wy = 0;\r\n let n = bones[v++];\r\n n += v;\r\n for (; v < n; v++, b += 3, f += 2) {\r\n let bone = skeletonBones[bones[v]];\r\n let m = bone.matrix;\r\n let vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2];\r\n wx += (vx * m.a + vy * m.c + m.tx) * weight;\r\n wy += (vx * m.b + vy * m.d + m.ty) * weight;\r\n }\r\n worldVertices[w] = wx;\r\n worldVertices[w + 1] = wy;\r\n }\r\n }\r\n }\r\n\r\n /** Returns true if a deform originally applied to the specified attachment should be applied to this attachment. */\r\n applyDeform(sourceAttachment: VertexAttachment) {\r\n return this == sourceAttachment;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export interface AttachmentLoader {\r\n /** @return May be null to not load an attachment. */\r\n newRegionAttachment (skin: Skin, name: string, path: string): RegionAttachment;\r\n\r\n /** @return May be null to not load an attachment. */\r\n newMeshAttachment (skin: Skin, name: string, path: string): MeshAttachment;\r\n\r\n /** @return May be null to not load an attachment. */\r\n newBoundingBoxAttachment (skin: Skin, name: string): BoundingBoxAttachment;\r\n\r\n /** @return May be null to not load an attachment */\r\n newPathAttachment(skin: Skin, name: string): PathAttachment;\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export enum AttachmentType {\r\n Region, BoundingBox, Mesh, LinkedMesh, Path\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class BoundingBoxAttachment extends VertexAttachment {\r\n color = new Color(1, 1, 1, 1);\r\n\r\n constructor(name: string) {\r\n super(name);\r\n }\r\n }\r\n}\r\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class MeshAttachment extends VertexAttachment {\n region: TextureRegion;\n path: string;\n regionUVs: ArrayLike;\n triangles: Array;\n color = new Color(1, 1, 1, 1);\n hullLength: number;\n private parentMesh: MeshAttachment;\n inheritDeform = false;\n tempColor = new Color(0, 0, 0, 0);\n\n constructor(name: string) {\n super(name);\n }\n\n updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike {\n return [];\n //nothing\n }\n\n updateUVs(region: TextureRegion, uvs: ArrayLike): ArrayLike {\n let regionUVs = this.regionUVs;\n let n = regionUVs.length;\n if (!uvs || uvs.length != n) {\n uvs = Utils.newFloatArray(n);\n }\n\n if (region == null) {\n return;\n }\n\n let texture = region.texture;\n let r = (texture as any)._uvs;\n let w1 = region.width, h1 = region.height, w2 = region.originalWidth, h2 = region.originalHeight;\n let x = region.offsetX, y = region.pixiOffsetY;\n\n for (let i = 0; i < n; i += 2) {\n let u = this.regionUVs[i], v = this.regionUVs[i + 1];\n u = (u * w2 - x) / w1;\n v = (v * h2 - y) / h1;\n uvs[i] = (r.x0 * (1 - u) + r.x1 * u) * (1 - v) + (r.x3 * (1 - u) + r.x2 * u) * v;\n uvs[i + 1] = (r.y0 * (1 - u) + r.y1 * u) * (1 - v) + (r.y3 * (1 - u) + r.y2 * u) * v;\n }\n\n return uvs;\n }\n\n applyDeform(sourceAttachment: VertexAttachment): boolean {\n return this == sourceAttachment || (this.inheritDeform && this.parentMesh == sourceAttachment);\n }\n\n getParentMesh() {\n return this.parentMesh;\n }\n\n /** @param parentMesh May be null. */\n setParentMesh(parentMesh: MeshAttachment) {\n this.parentMesh = parentMesh;\n if (parentMesh != null) {\n this.bones = parentMesh.bones;\n this.vertices = parentMesh.vertices;\n this.regionUVs = parentMesh.regionUVs;\n this.triangles = parentMesh.triangles;\n this.hullLength = parentMesh.hullLength;\n this.worldVerticesLength = parentMesh.worldVerticesLength;\n }\n }\n }\n}\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class PathAttachment extends VertexAttachment {\r\n lengths: Array;\r\n closed = false;\r\n constantSpeed = false;\r\n color = new Color(1, 1, 1, 1);\r\n\r\n constructor(name: string) {\r\n super(name);\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class RegionAttachment extends Attachment {\r\n x = 0;\r\n y = 0;\r\n scaleX = 1;\r\n scaleY = 1;\r\n rotation = 0;\r\n width = 0;\r\n height = 0;\r\n color = new Color(1, 1, 1, 1);\r\n\r\n path: string;\r\n region: TextureRegion;\r\n\r\n constructor(name: string) {\r\n super(name);\r\n }\r\n\r\n updateWorldVertices(slot: Slot, premultipliedAlpha: boolean): ArrayLike {\r\n return [];\r\n //nothing\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export enum BlendMode {\r\n Normal,\r\n Additive,\r\n Multiply,\r\n Screen\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class Bone implements Updatable {\r\n static yDown: boolean = false;\r\n //be careful! Spine b,c is c,b in pixi matrix\r\n matrix = new PIXI.Matrix();\r\n\r\n get worldX(): number {\r\n return this.matrix.tx;\r\n }\r\n\r\n get worldY(): number {\r\n return this.matrix.ty;\r\n }\r\n\r\n data: BoneData;\r\n skeleton: Skeleton;\r\n parent: Bone;\r\n children = new Array();\r\n x = 0;\r\n y = 0;\r\n rotation = 0;\r\n scaleX = 0;\r\n scaleY = 0;\r\n shearX = 0;\r\n shearY = 0;\r\n ax = 0;\r\n ay = 0;\r\n arotation = 0;\r\n ascaleX = 0;\r\n ascaleY = 0;\r\n ashearX = 0;\r\n ashearY = 0;\r\n appliedValid = false;\r\n\r\n sorted = false;\r\n\r\n /** @param parent May be null. */\r\n constructor(data: BoneData, skeleton: Skeleton, parent: Bone) {\r\n if (data == null) throw new Error(\"data cannot be null.\");\r\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\r\n this.data = data;\r\n this.skeleton = skeleton;\r\n this.parent = parent;\r\n this.setToSetupPose();\r\n }\r\n\r\n /** Same as {@link #updateWorldTransform()}. This method exists for Bone to implement {@link Updatable}. */\r\n update() {\r\n this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY);\r\n }\r\n\r\n /** Computes the world transform using the parent bone and this bone's local transform. */\r\n updateWorldTransform() {\r\n this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY);\r\n }\r\n\r\n /** Computes the world transform using the parent bone and the specified local transform. */\r\n updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number) {\r\n this.ax = x;\r\n this.ay = y;\r\n this.arotation = rotation;\r\n this.ascaleX = scaleX;\r\n this.ascaleY = scaleY;\r\n this.ashearX = shearX;\r\n this.ashearY = shearY;\r\n this.appliedValid = true;\r\n\r\n let parent = this.parent;\r\n let m = this.matrix;\r\n if (parent == null) { // Root bone.\r\n let rotationY = rotation + 90 + shearY;\r\n let la = MathUtils.cosDeg(rotation + shearX) * scaleX;\r\n let lb = MathUtils.cosDeg(rotationY) * scaleY;\r\n let lc = MathUtils.sinDeg(rotation + shearX) * scaleX;\r\n let ld = MathUtils.sinDeg(rotationY) * scaleY;\r\n let skeleton = this.skeleton;\r\n if (skeleton.flipX) {\r\n x = -x;\r\n la = -la;\r\n lb = -lb;\r\n }\r\n if (skeleton.flipY !== Bone.yDown) {\r\n y = -y;\r\n lc = -lc;\r\n ld = -ld;\r\n }\r\n m.a = la;\r\n m.c = lb;\r\n m.b = lc;\r\n m.d = ld;\r\n m.tx = x + skeleton.x;\r\n m.ty = y + skeleton.y;\r\n return;\r\n }\r\n\r\n let pa = parent.matrix.a, pb = parent.matrix.c, pc = parent.matrix.b, pd = parent.matrix.d;\r\n m.tx = pa * x + pb * y + parent.matrix.tx;\r\n m.ty = pc * x + pd * y + parent.matrix.ty;\r\n switch (this.data.transformMode) {\r\n case TransformMode.Normal: {\r\n let rotationY = rotation + 90 + shearY;\r\n let la = MathUtils.cosDeg(rotation + shearX) * scaleX;\r\n let lb = MathUtils.cosDeg(rotationY) * scaleY;\r\n let lc = MathUtils.sinDeg(rotation + shearX) * scaleX;\r\n let ld = MathUtils.sinDeg(rotationY) * scaleY;\r\n m.a = pa * la + pb * lc;\r\n m.c = pa * lb + pb * ld;\r\n m.b = pc * la + pd * lc;\r\n m.d = pc * lb + pd * ld;\r\n return;\r\n }\r\n case TransformMode.OnlyTranslation: {\r\n let rotationY = rotation + 90 + shearY;\r\n m.a = MathUtils.cosDeg(rotation + shearX) * scaleX;\r\n m.c = MathUtils.cosDeg(rotationY) * scaleY;\r\n m.b = MathUtils.sinDeg(rotation + shearX) * scaleX;\r\n m.d = MathUtils.sinDeg(rotationY) * scaleY;\r\n break;\r\n }\r\n case TransformMode.NoRotationOrReflection: {\r\n let s = pa * pa + pc * pc;\r\n let prx = 0;\r\n if (s > 0.0001) {\r\n s = Math.abs(pa * pd - pb * pc) / s;\r\n pb = pc * s;\r\n pd = pa * s;\r\n prx = Math.atan2(pc, pa) * MathUtils.radDeg;\r\n } else {\r\n pa = 0;\r\n pc = 0;\r\n prx = 90 - Math.atan2(pd, pb) * MathUtils.radDeg;\r\n }\r\n let rx = rotation + shearX - prx;\r\n let ry = rotation + shearY - prx + 90;\r\n let la = MathUtils.cosDeg(rx) * scaleX;\r\n let lb = MathUtils.cosDeg(ry) * scaleY;\r\n let lc = MathUtils.sinDeg(rx) * scaleX;\r\n let ld = MathUtils.sinDeg(ry) * scaleY;\r\n m.a = pa * la - pb * lc;\r\n m.c = pa * lb - pb * ld;\r\n m.b = pc * la + pd * lc;\r\n m.d = pc * lb + pd * ld;\r\n break;\r\n }\r\n case TransformMode.NoScale:\r\n case TransformMode.NoScaleOrReflection: {\r\n let cos = MathUtils.cosDeg(rotation);\r\n let sin = MathUtils.sinDeg(rotation);\r\n let za = pa * cos + pb * sin;\r\n let zc = pc * cos + pd * sin;\r\n let s = Math.sqrt(za * za + zc * zc);\r\n if (s > 0.00001) s = 1 / s;\r\n za *= s;\r\n zc *= s;\r\n s = Math.sqrt(za * za + zc * zc);\r\n let r = Math.PI / 2 + Math.atan2(zc, za);\r\n let zb = Math.cos(r) * s;\r\n let zd = Math.sin(r) * s;\r\n let la = MathUtils.cosDeg(shearX) * scaleX;\r\n let lb = MathUtils.cosDeg(90 + shearY) * scaleY;\r\n let lc = MathUtils.sinDeg(shearX) * scaleX;\r\n let ld = MathUtils.sinDeg(90 + shearY) * scaleY;\r\n m.a = za * la + zb * lc;\r\n m.c = za * lb + zb * ld;\r\n m.b = zc * la + zd * lc;\r\n m.d = zc * lb + zd * ld;\r\n if (this.data.transformMode != TransformMode.NoScaleOrReflection ? pa * pd - pb * pc < 0 : ((this.skeleton.flipX != this.skeleton.flipY) != Bone.yDown)) {\r\n m.c = -m.c;\r\n m.d = -m.d;\r\n }\r\n return;\r\n }\r\n }\r\n if (this.skeleton.flipX) {\r\n m.a = -m.a;\r\n m.c = -m.c;\r\n }\r\n if (this.skeleton.flipY != Bone.yDown) {\r\n m.b = -m.b;\r\n m.d = -m.d;\r\n }\r\n }\r\n\r\n setToSetupPose() {\r\n let data = this.data;\r\n this.x = data.x;\r\n this.y = data.y;\r\n this.rotation = data.rotation;\r\n this.scaleX = data.scaleX;\r\n this.scaleY = data.scaleY;\r\n this.shearX = data.shearX;\r\n this.shearY = data.shearY;\r\n }\r\n\r\n getWorldRotationX() {\r\n return Math.atan2(this.matrix.b, this.matrix.a) * MathUtils.radDeg;\r\n }\r\n\r\n getWorldRotationY() {\r\n return Math.atan2(this.matrix.d, this.matrix.c) * MathUtils.radDeg;\r\n }\r\n\r\n getWorldScaleX() {\r\n let m = this.matrix;\r\n return Math.sqrt(m.a * m.a + m.c * m.c);\r\n }\r\n\r\n getWorldScaleY() {\r\n let m = this.matrix;\r\n return Math.sqrt(m.b * m.b + m.d * m.d);\r\n }\r\n\r\n worldToLocalRotationX() {\r\n let parent = this.parent;\r\n if (parent == null) return this.arotation;\r\n let pm = parent.matrix, m = this.matrix;\r\n return Math.atan2(pm.a * m.b - pm.b * m.a, pm.d * m.a - pm.c * m.b) * MathUtils.radDeg;\r\n }\r\n\r\n worldToLocalRotationY() {\r\n let parent = this.parent;\r\n if (parent == null) return this.arotation;\r\n let pm = parent.matrix, m = this.matrix;\r\n return Math.atan2(pm.a * m.d - pm.b * m.c, pm.d * m.c - pm.c * m.d) * MathUtils.radDeg;\r\n }\r\n\r\n rotateWorld(degrees: number) {\r\n let m = this.matrix;\r\n let a = this.matrix.a, b = m.c, c = m.b, d = m.d;\r\n let cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees);\r\n m.a = cos * a - sin * c;\r\n m.c = cos * b - sin * d;\r\n m.b = sin * a + cos * c;\r\n m.d = sin * b + cos * d;\r\n this.appliedValid = false;\r\n }\r\n\r\n /** Computes the individual applied transform values from the world transform. This can be useful to perform processing using\r\n * the applied transform after the world transform has been modified directly (eg, by a constraint).\r\n *

\r\n * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. */\r\n updateAppliedTransform() {\r\n this.appliedValid = true;\r\n let parent = this.parent;\r\n let m = this.matrix;\r\n if (parent == null) {\r\n this.ax = m.tx;\r\n this.ay = m.ty;\r\n this.arotation = Math.atan2(m.b, m.a) * MathUtils.radDeg;\r\n this.ascaleX = Math.sqrt(m.a * m.a + m.b * m.b);\r\n this.ascaleY = Math.sqrt(m.c * m.c + m.d * m.d);\r\n this.ashearX = 0;\r\n this.ashearY = Math.atan2(m.a * m.c + m.b * m.d, m.a * m.d - m.b * m.c) * MathUtils.radDeg;\r\n return;\r\n }\r\n let pm = parent.matrix;\r\n let pid = 1 / (pm.a * pm.d - pm.b * pm.c);\r\n let dx = m.tx - pm.tx, dy = m.ty - pm.ty;\r\n this.ax = (dx * pm.d * pid - dy * pm.c * pid);\r\n this.ay = (dy * pm.a * pid - dx * pm.b * pid);\r\n let ia = pid * pm.d;\r\n let id = pid * pm.a;\r\n let ib = pid * pm.c;\r\n let ic = pid * pm.b;\r\n let ra = ia * m.a - ib * m.b;\r\n let rb = ia * m.c - ib * m.d;\r\n let rc = id * m.b - ic * m.a;\r\n let rd = id * m.d - ic * m.c;\r\n this.ashearX = 0;\r\n this.ascaleX = Math.sqrt(ra * ra + rc * rc);\r\n if (this.ascaleX > 0.0001) {\r\n let det = ra * rd - rb * rc;\r\n this.ascaleY = det / this.ascaleX;\r\n this.ashearY = Math.atan2(ra * rb + rc * rd, det) * MathUtils.radDeg;\r\n this.arotation = Math.atan2(rc, ra) * MathUtils.radDeg;\r\n } else {\r\n this.ascaleX = 0;\r\n this.ascaleY = Math.sqrt(rb * rb + rd * rd);\r\n this.ashearY = 0;\r\n this.arotation = 90 - Math.atan2(rd, rb) * MathUtils.radDeg;\r\n }\r\n }\r\n\r\n worldToLocal(world: Vector2) {\r\n let m = this.matrix;\r\n let a = m.a, b = m.c, c = m.b, d = m.d;\r\n let invDet = 1 / (a * d - b * c);\r\n let x = world.x - m.tx, y = world.y - m.ty;\r\n world.x = (x * d * invDet - y * b * invDet);\r\n world.y = (y * a * invDet - x * c * invDet);\r\n return world;\r\n }\r\n\r\n localToWorld(local: Vector2) {\r\n let m = this.matrix;\r\n let x = local.x, y = local.y;\r\n local.x = x * m.a + y * m.c + m.tx;\r\n local.y = x * m.b + y * m.d + m.ty;\r\n return local;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class BoneData {\r\n index: number;\r\n name: string;\r\n parent: BoneData;\r\n length: number;\r\n x = 0;\r\n y = 0;\r\n rotation = 0;\r\n scaleX = 1;\r\n scaleY = 1;\r\n shearX = 0;\r\n shearY = 0;\r\n transformMode = TransformMode.Normal;\r\n\r\n constructor(index: number, name: string, parent: BoneData) {\r\n if (index < 0) throw new Error(\"index must be >= 0.\");\r\n if (name == null) throw new Error(\"name cannot be null.\");\r\n this.index = index;\r\n this.name = name;\r\n this.parent = parent;\r\n }\r\n }\r\n\r\n export enum TransformMode {\r\n Normal, OnlyTranslation, NoRotationOrReflection, NoScale, NoScaleOrReflection\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License v2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export interface Constraint extends Updatable {\r\n getOrder(): number;\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class Event {\r\n data: EventData;\r\n intValue: number;\r\n floatValue: number;\r\n stringValue: string;\r\n time: number;\r\n\r\n constructor(time: number, data: EventData) {\r\n if (data == null) throw new Error(\"data cannot be null.\");\r\n this.time = time;\r\n this.data = data;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class EventData {\r\n name: string;\r\n intValue: number;\r\n floatValue: number;\r\n stringValue: string;\r\n\r\n constructor (name: string) {\r\n this.name = name;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class IkConstraint implements Constraint {\r\n data: IkConstraintData;\r\n bones: Array;\r\n target: Bone;\r\n mix = 1;\r\n bendDirection = 0;\r\n\r\n level = 0;\r\n\r\n constructor(data: IkConstraintData, skeleton: Skeleton) {\r\n if (data == null) throw new Error(\"data cannot be null.\");\r\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\r\n this.data = data;\r\n this.mix = data.mix;\r\n this.bendDirection = data.bendDirection;\r\n\r\n this.bones = new Array();\r\n for (let i = 0; i < data.bones.length; i++)\r\n this.bones.push(skeleton.findBone(data.bones[i].name));\r\n this.target = skeleton.findBone(data.target.name);\r\n }\r\n\r\n getOrder() {\r\n return this.data.order;\r\n }\r\n\r\n apply() {\r\n this.update();\r\n }\r\n\r\n update() {\r\n let target = this.target;\r\n let bones = this.bones;\r\n switch (bones.length) {\r\n case 1:\r\n this.apply1(bones[0], target.worldX, target.worldY, this.mix);\r\n break;\r\n case 2:\r\n this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix);\r\n break;\r\n }\r\n }\r\n\r\n /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world\r\n * coordinate system. */\r\n apply1(bone: Bone, targetX: number, targetY: number, alpha: number) {\r\n if (!bone.appliedValid) bone.updateAppliedTransform();\r\n let pp = bone.parent.matrix;\r\n let id = 1 / (pp.a * pp.d - pp.b * pp.c);\r\n let x = targetX - pp.tx, y = targetY - pp.ty;\r\n let tx = (x * pp.d - y * pp.c) * id - bone.ax, ty = (y * pp.a - x * pp.b) * id - bone.ay;\r\n let rotationIK = Math.atan2(ty, tx) * MathUtils.radDeg - bone.ashearX - bone.arotation;\r\n if (bone.ascaleX < 0) rotationIK += 180;\r\n if (rotationIK > 180)\r\n rotationIK -= 360;\r\n else if (rotationIK < -180) rotationIK += 360;\r\n bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, bone.ascaleX, bone.ascaleY, bone.ashearX,\r\n bone.ashearY);\r\n }\r\n\r\n /** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The\r\n * target is specified in the world coordinate system.\r\n * @param child A direct descendant of the parent bone. */\r\n apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number) {\r\n if (alpha == 0) {\r\n child.updateWorldTransform();\r\n return;\r\n }\r\n if (!parent.appliedValid) parent.updateAppliedTransform();\r\n if (!child.appliedValid) child.updateAppliedTransform();\r\n let px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, csx = child.ascaleX;\r\n\r\n let os1 = 0, os2 = 0, s2 = 0;\r\n if (psx < 0) {\r\n psx = -psx;\r\n os1 = 180;\r\n s2 = -1;\r\n } else {\r\n os1 = 0;\r\n s2 = 1;\r\n }\r\n if (psy < 0) {\r\n psy = -psy;\r\n s2 = -s2;\r\n }\r\n if (csx < 0) {\r\n csx = -csx;\r\n os2 = 180;\r\n } else\r\n os2 = 0;\r\n let pm = parent.matrix;\r\n let cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = pm.a, b = pm.c, c = pm.b, d = pm.d;\r\n let u = Math.abs(psx - psy) <= 0.0001;\r\n if (!u) {\r\n cy = 0;\r\n cwx = a * cx + pm.tx;\r\n cwy = c * cx + pm.ty;\r\n } else {\r\n cy = child.ay;\r\n cwx = a * cx + b * cy + pm.tx;\r\n cwy = c * cx + d * cy + pm.ty;\r\n }\r\n let pp = parent.parent;\r\n let ppm = parent.parent.matrix;\r\n a = ppm.a;\r\n b = ppm.c;\r\n c = ppm.b;\r\n d = ppm.d;\r\n let id = 1 / (a * d - b * c), x = targetX - ppm.tx, y = targetY - ppm.ty;\r\n let tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py;\r\n x = cwx - ppm.tx;\r\n y = cwy - ppm.ty;\r\n let dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py;\r\n let l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0;\r\n outer:\r\n if (u) {\r\n l2 *= psx;\r\n let cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2);\r\n if (cos < -1)\r\n cos = -1;\r\n else if (cos > 1) cos = 1;\r\n a2 = Math.acos(cos) * bendDir;\r\n a = l1 + l2 * cos;\r\n b = l2 * Math.sin(a2);\r\n a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b);\r\n } else {\r\n a = psx * l2;\r\n b = psy * l2;\r\n let aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx);\r\n c = bb * l1 * l1 + aa * dd - aa * bb;\r\n let c1 = -2 * bb * l1, c2 = bb - aa;\r\n d = c1 * c1 - 4 * c2 * c;\r\n if (d >= 0) {\r\n let q = Math.sqrt(d);\r\n if (c1 < 0) q = -q;\r\n q = -(c1 + q) / 2;\r\n let r0 = q / c2, r1 = c / q;\r\n let r = Math.abs(r0) < Math.abs(r1) ? r0 : r1;\r\n if (r * r <= dd) {\r\n y = Math.sqrt(dd - r * r) * bendDir;\r\n a1 = ta - Math.atan2(y, r);\r\n a2 = Math.atan2(y / psy, (r - l1) / psx);\r\n break outer;\r\n }\r\n }\r\n let minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0;\r\n let maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0;\r\n x = l1 + a;\r\n d = x * x;\r\n if (d > maxDist) {\r\n maxAngle = 0;\r\n maxDist = d;\r\n maxX = x;\r\n }\r\n x = l1 - a;\r\n d = x * x;\r\n if (d < minDist) {\r\n minAngle = MathUtils.PI;\r\n minDist = d;\r\n minX = x;\r\n }\r\n let angle = Math.acos(-a * l1 / (aa - bb));\r\n x = a * Math.cos(angle) + l1;\r\n y = b * Math.sin(angle);\r\n d = x * x + y * y;\r\n if (d < minDist) {\r\n minAngle = angle;\r\n minDist = d;\r\n minX = x;\r\n minY = y;\r\n }\r\n if (d > maxDist) {\r\n maxAngle = angle;\r\n maxDist = d;\r\n maxX = x;\r\n maxY = y;\r\n }\r\n if (dd <= (minDist + maxDist) / 2) {\r\n a1 = ta - Math.atan2(minY * bendDir, minX);\r\n a2 = minAngle * bendDir;\r\n } else {\r\n a1 = ta - Math.atan2(maxY * bendDir, maxX);\r\n a2 = maxAngle * bendDir;\r\n }\r\n }\r\n let os = Math.atan2(cy, cx) * s2;\r\n let rotation = parent.arotation;\r\n a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation;\r\n if (a1 > 180)\r\n a1 -= 360;\r\n else if (a1 < -180) a1 += 360;\r\n parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.ascaleX, parent.ascaleY, 0, 0);\r\n rotation = child.arotation;\r\n a2 = ((a2 + os) * MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation;\r\n if (a2 > 180)\r\n a2 -= 360;\r\n else if (a2 < -180) a2 += 360;\r\n child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class IkConstraintData {\r\n name: string;\r\n order = 0;\r\n bones = new Array();\r\n target: BoneData;\r\n bendDirection = 1;\r\n mix = 1;\r\n\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class PathConstraint implements Constraint {\r\n static NONE = -1;\r\n static BEFORE = -2;\r\n static AFTER = -3;\r\n\r\n data: PathConstraintData;\r\n bones: Array;\r\n target: Slot;\r\n position = 0;\r\n spacing = 0;\r\n rotateMix = 0;\r\n translateMix = 0;\r\n\r\n spaces = new Array();\r\n positions = new Array();\r\n world = new Array();\r\n curves = new Array();\r\n lengths = new Array();\r\n segments = new Array();\r\n\r\n constructor(data: PathConstraintData, skeleton: Skeleton) {\r\n if (data == null) throw new Error(\"data cannot be null.\");\r\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\r\n this.data = data;\r\n this.bones = new Array();\r\n for (let i = 0, n = data.bones.length; i < n; i++)\r\n this.bones.push(skeleton.findBone(data.bones[i].name));\r\n this.target = skeleton.findSlot(data.target.name);\r\n this.position = data.position;\r\n this.spacing = data.spacing;\r\n this.rotateMix = data.rotateMix;\r\n this.translateMix = data.translateMix;\r\n }\r\n\r\n apply() {\r\n this.update();\r\n }\r\n\r\n update() {\r\n let attachment = this.target.getAttachment();\r\n if (!(attachment instanceof PathAttachment)) return;\r\n\r\n let rotateMix = this.rotateMix, translateMix = this.translateMix;\r\n let translate = translateMix > 0, rotate = rotateMix > 0;\r\n if (!translate && !rotate) return;\r\n\r\n let data = this.data;\r\n let spacingMode = data.spacingMode;\r\n let lengthSpacing = spacingMode == SpacingMode.Length;\r\n let rotateMode = data.rotateMode;\r\n let tangents = rotateMode == RotateMode.Tangent, scale = rotateMode == RotateMode.ChainScale;\r\n let boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;\r\n let bones = this.bones;\r\n let spaces = Utils.setArraySize(this.spaces, spacesCount), lengths: Array = null;\r\n let spacing = this.spacing;\r\n if (scale || lengthSpacing) {\r\n if (scale) lengths = Utils.setArraySize(this.lengths, boneCount);\r\n for (let i = 0, n = spacesCount - 1; i < n;) {\r\n let bone = bones[i];\r\n let m = bone.matrix;\r\n let length = bone.data.length, x = length * m.a, y = length * m.b;\r\n length = Math.sqrt(x * x + y * y);\r\n if (scale) lengths[i] = length;\r\n spaces[++i] = lengthSpacing ? Math.max(0, length + spacing) : spacing;\r\n }\r\n } else {\r\n for (let i = 1; i < spacesCount; i++)\r\n spaces[i] = spacing;\r\n }\r\n\r\n let positions = this.computeWorldPositions(attachment, spacesCount, tangents,\r\n data.positionMode == PositionMode.Percent, spacingMode == SpacingMode.Percent);\r\n let boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;\r\n let tip = false;\r\n if (offsetRotation == 0)\r\n tip = rotateMode == RotateMode.Chain;\r\n else {\r\n tip = false;\r\n let pm = this.target.bone.matrix;\r\n offsetRotation *= pm.a * pm.d - pm.b * pm.c > 0 ? MathUtils.degRad : -MathUtils.degRad;\r\n }\r\n for (let i = 0, p = 3; i < boneCount; i++, p += 3) {\r\n let bone = bones[i];\r\n let m = bone.matrix;\r\n m.tx += (boneX - m.tx) * translateMix;\r\n m.ty += (boneY - m.ty) * translateMix;\r\n let x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;\r\n if (scale) {\r\n let length = lengths[i];\r\n if (length != 0) {\r\n let s = (Math.sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1;\r\n m.a *= s;\r\n m.b *= s;\r\n }\r\n }\r\n boneX = x;\r\n boneY = y;\r\n if (rotate) {\r\n let a = m.a, b = m.c, c = m.b, d = m.d, r = 0, cos = 0, sin = 0;\r\n if (tangents)\r\n r = positions[p - 1];\r\n else if (spaces[i + 1] == 0)\r\n r = positions[p + 2];\r\n else\r\n r = Math.atan2(dy, dx);\r\n r -= Math.atan2(c, a);\r\n if (tip) {\r\n cos = Math.cos(r);\r\n sin = Math.sin(r);\r\n let length = bone.data.length;\r\n boneX += (length * (cos * a - sin * c) - dx) * rotateMix;\r\n boneY += (length * (sin * a + cos * c) - dy) * rotateMix;\r\n } else {\r\n r += offsetRotation;\r\n }\r\n if (r > MathUtils.PI)\r\n r -= MathUtils.PI2;\r\n else if (r < -MathUtils.PI)\r\n r += MathUtils.PI2;\r\n r *= rotateMix;\r\n cos = Math.cos(r);\r\n sin = Math.sin(r);\r\n m.a = cos * a - sin * c;\r\n m.c = cos * b - sin * d;\r\n m.b = sin * a + cos * c;\r\n m.d = sin * b + cos * d;\r\n }\r\n bone.appliedValid = false;\r\n }\r\n }\r\n\r\n computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean,\r\n percentSpacing: boolean) {\r\n let target = this.target;\r\n let position = this.position;\r\n let spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world: Array = null;\r\n let closed = path.closed;\r\n let verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE;\r\n\r\n if (!path.constantSpeed) {\r\n let lengths = path.lengths;\r\n curveCount -= closed ? 1 : 2;\r\n let pathLength = lengths[curveCount];\r\n if (percentPosition) position *= pathLength;\r\n if (percentSpacing) {\r\n for (let i = 0; i < spacesCount; i++)\r\n spaces[i] *= pathLength;\r\n }\r\n world = Utils.setArraySize(this.world, 8);\r\n for (let i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) {\r\n let space = spaces[i];\r\n position += space;\r\n let p = position;\r\n\r\n if (closed) {\r\n p %= pathLength;\r\n if (p < 0) p += pathLength;\r\n curve = 0;\r\n } else if (p < 0) {\r\n if (prevCurve != PathConstraint.BEFORE) {\r\n prevCurve = PathConstraint.BEFORE;\r\n path.computeWorldVerticesWith(target, 2, 4, world, 0);\r\n }\r\n this.addBeforePosition(p, world, 0, out, o);\r\n continue;\r\n } else if (p > pathLength) {\r\n if (prevCurve != PathConstraint.AFTER) {\r\n prevCurve = PathConstraint.AFTER;\r\n path.computeWorldVerticesWith(target, verticesLength - 6, 4, world, 0);\r\n }\r\n this.addAfterPosition(p - pathLength, world, 0, out, o);\r\n continue;\r\n }\r\n\r\n // Determine curve containing position.\r\n for (; ; curve++) {\r\n let length = lengths[curve];\r\n if (p > length) continue;\r\n if (curve == 0)\r\n p /= length;\r\n else {\r\n let prev = lengths[curve - 1];\r\n p = (p - prev) / (length - prev);\r\n }\r\n break;\r\n }\r\n if (curve != prevCurve) {\r\n prevCurve = curve;\r\n if (closed && curve == curveCount) {\r\n path.computeWorldVerticesWith(target, verticesLength - 4, 4, world, 0);\r\n path.computeWorldVerticesWith(target, 0, 4, world, 4);\r\n } else\r\n path.computeWorldVerticesWith(target, curve * 6 + 2, 8, world, 0);\r\n }\r\n this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o,\r\n tangents || (i > 0 && space == 0));\r\n }\r\n return out;\r\n }\r\n\r\n // World vertices.\r\n if (closed) {\r\n verticesLength += 2;\r\n world = Utils.setArraySize(this.world, verticesLength);\r\n path.computeWorldVerticesWith(target, 2, verticesLength - 4, world, 0);\r\n path.computeWorldVerticesWith(target, 0, 2, world, verticesLength - 4);\r\n world[verticesLength - 2] = world[0];\r\n world[verticesLength - 1] = world[1];\r\n } else {\r\n curveCount--;\r\n verticesLength -= 4;\r\n world = Utils.setArraySize(this.world, verticesLength);\r\n path.computeWorldVerticesWith(target, 2, verticesLength, world, 0);\r\n }\r\n\r\n // Curve lengths.\r\n let curves = Utils.setArraySize(this.curves, curveCount);\r\n let pathLength = 0;\r\n let x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0;\r\n let tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0;\r\n for (let i = 0, w = 2; i < curveCount; i++, w += 6) {\r\n cx1 = world[w];\r\n cy1 = world[w + 1];\r\n cx2 = world[w + 2];\r\n cy2 = world[w + 3];\r\n x2 = world[w + 4];\r\n y2 = world[w + 5];\r\n tmpx = (x1 - cx1 * 2 + cx2) * 0.1875;\r\n tmpy = (y1 - cy1 * 2 + cy2) * 0.1875;\r\n dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375;\r\n dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375;\r\n ddfx = tmpx * 2 + dddfx;\r\n ddfy = tmpy * 2 + dddfy;\r\n dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667;\r\n dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667;\r\n pathLength += Math.sqrt(dfx * dfx + dfy * dfy);\r\n dfx += ddfx;\r\n dfy += ddfy;\r\n ddfx += dddfx;\r\n ddfy += dddfy;\r\n pathLength += Math.sqrt(dfx * dfx + dfy * dfy);\r\n dfx += ddfx;\r\n dfy += ddfy;\r\n pathLength += Math.sqrt(dfx * dfx + dfy * dfy);\r\n dfx += ddfx + dddfx;\r\n dfy += ddfy + dddfy;\r\n pathLength += Math.sqrt(dfx * dfx + dfy * dfy);\r\n curves[i] = pathLength;\r\n x1 = x2;\r\n y1 = y2;\r\n }\r\n if (percentPosition) position *= pathLength;\r\n if (percentSpacing) {\r\n for (let i = 0; i < spacesCount; i++)\r\n spaces[i] *= pathLength;\r\n }\r\n\r\n let segments = this.segments;\r\n let curveLength = 0;\r\n for (let i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) {\r\n let space = spaces[i];\r\n position += space;\r\n let p = position;\r\n\r\n if (closed) {\r\n p %= pathLength;\r\n if (p < 0) p += pathLength;\r\n curve = 0;\r\n } else if (p < 0) {\r\n this.addBeforePosition(p, world, 0, out, o);\r\n continue;\r\n } else if (p > pathLength) {\r\n this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o);\r\n continue;\r\n }\r\n\r\n // Determine curve containing position.\r\n for (; ; curve++) {\r\n let length = curves[curve];\r\n if (p > length) continue;\r\n if (curve == 0)\r\n p /= length;\r\n else {\r\n let prev = curves[curve - 1];\r\n p = (p - prev) / (length - prev);\r\n }\r\n break;\r\n }\r\n\r\n // Curve segment lengths.\r\n if (curve != prevCurve) {\r\n prevCurve = curve;\r\n let ii = curve * 6;\r\n x1 = world[ii];\r\n y1 = world[ii + 1];\r\n cx1 = world[ii + 2];\r\n cy1 = world[ii + 3];\r\n cx2 = world[ii + 4];\r\n cy2 = world[ii + 5];\r\n x2 = world[ii + 6];\r\n y2 = world[ii + 7];\r\n tmpx = (x1 - cx1 * 2 + cx2) * 0.03;\r\n tmpy = (y1 - cy1 * 2 + cy2) * 0.03;\r\n dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006;\r\n dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006;\r\n ddfx = tmpx * 2 + dddfx;\r\n ddfy = tmpy * 2 + dddfy;\r\n dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667;\r\n dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667;\r\n curveLength = Math.sqrt(dfx * dfx + dfy * dfy);\r\n segments[0] = curveLength;\r\n for (ii = 1; ii < 8; ii++) {\r\n dfx += ddfx;\r\n dfy += ddfy;\r\n ddfx += dddfx;\r\n ddfy += dddfy;\r\n curveLength += Math.sqrt(dfx * dfx + dfy * dfy);\r\n segments[ii] = curveLength;\r\n }\r\n dfx += ddfx;\r\n dfy += ddfy;\r\n curveLength += Math.sqrt(dfx * dfx + dfy * dfy);\r\n segments[8] = curveLength;\r\n dfx += ddfx + dddfx;\r\n dfy += ddfy + dddfy;\r\n curveLength += Math.sqrt(dfx * dfx + dfy * dfy);\r\n segments[9] = curveLength;\r\n segment = 0;\r\n }\r\n\r\n // Weight by segment length.\r\n p *= curveLength;\r\n for (; ; segment++) {\r\n let length = segments[segment];\r\n if (p > length) continue;\r\n if (segment == 0)\r\n p /= length;\r\n else {\r\n let prev = segments[segment - 1];\r\n p = segment + (p - prev) / (length - prev);\r\n }\r\n break;\r\n }\r\n this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0));\r\n }\r\n return out;\r\n }\r\n\r\n addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number) {\r\n let x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx);\r\n out[o] = x1 + p * Math.cos(r);\r\n out[o + 1] = y1 + p * Math.sin(r);\r\n out[o + 2] = r;\r\n }\r\n\r\n addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number) {\r\n let x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx);\r\n out[o] = x1 + p * Math.cos(r);\r\n out[o + 1] = y1 + p * Math.sin(r);\r\n out[o + 2] = r;\r\n }\r\n\r\n addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number,\r\n out: Array, o: number, tangents: boolean) {\r\n if (p == 0 || isNaN(p)) p = 0.0001;\r\n let tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u;\r\n let ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p;\r\n let x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt;\r\n out[o] = x;\r\n out[o + 1] = y;\r\n if (tangents) out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt));\r\n }\r\n\r\n getOrder() {\r\n return this.data.order;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class PathConstraintData {\r\n name: string;\r\n order = 0;\r\n bones = new Array();\r\n target: SlotData;\r\n positionMode: PositionMode;\r\n spacingMode: SpacingMode;\r\n rotateMode: RotateMode;\r\n offsetRotation: number;\r\n position: number;\r\n spacing: number;\r\n rotateMix: number;\r\n translateMix: number;\r\n\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n }\r\n\r\n export enum PositionMode {\r\n Fixed, Percent\r\n }\r\n\r\n export enum SpacingMode {\r\n Length, Fixed, Percent\r\n }\r\n\r\n export enum RotateMode {\r\n Tangent, Chain, ChainScale\r\n }\r\n}\r\n/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.5\n *\n * Copyright (c) 2013-2016, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\n * non-transferable license to use, install, execute, and perform the Spine\n * Runtimes software and derivative works solely for personal or internal\n * use. Without the written permission of Esoteric Software (see Section 2 of\n * the Spine Software License Agreement), you may not (a) modify, translate,\n * adapt, or develop new applications using the Spine Runtimes or otherwise\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\n * or other intellectual property or proprietary rights notices on or in the\n * Software, including any copy thereof. Redistributions in binary or source\n * form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nnamespace pixi_spine.core {\n export class Skeleton {\n data: SkeletonData;\n bones: Array;\n slots: Array;\n drawOrder: Array;\n ikConstraints: Array;\n transformConstraints: Array;\n pathConstraints: Array;\n _updateCache = new Array();\n updateCacheReset = new Array();\n skin: Skin;\n color: Color;\n time = 0;\n flipX = false;\n flipY = false;\n x = 0;\n y = 0;\n\n constructor(data: SkeletonData) {\n if (data == null) throw new Error(\"data cannot be null.\");\n this.data = data;\n\n this.bones = new Array();\n for (let i = 0; i < data.bones.length; i++) {\n let boneData = data.bones[i];\n let bone: Bone;\n if (boneData.parent == null)\n bone = new Bone(boneData, this, null);\n else {\n let parent = this.bones[boneData.parent.index];\n bone = new Bone(boneData, this, parent);\n parent.children.push(bone);\n }\n this.bones.push(bone);\n }\n\n this.slots = new Array();\n this.drawOrder = new Array();\n for (let i = 0; i < data.slots.length; i++) {\n let slotData = data.slots[i];\n let bone = this.bones[slotData.boneData.index];\n let slot = new Slot(slotData, bone);\n this.slots.push(slot);\n this.drawOrder.push(slot);\n }\n\n this.ikConstraints = new Array();\n for (let i = 0; i < data.ikConstraints.length; i++) {\n let ikConstraintData = data.ikConstraints[i];\n this.ikConstraints.push(new IkConstraint(ikConstraintData, this));\n }\n\n this.transformConstraints = new Array();\n for (let i = 0; i < data.transformConstraints.length; i++) {\n let transformConstraintData = data.transformConstraints[i];\n this.transformConstraints.push(new TransformConstraint(transformConstraintData, this));\n }\n\n this.pathConstraints = new Array();\n for (let i = 0; i < data.pathConstraints.length; i++) {\n let pathConstraintData = data.pathConstraints[i];\n this.pathConstraints.push(new PathConstraint(pathConstraintData, this));\n }\n\n this.color = new Color(1, 1, 1, 1);\n this.updateCache();\n }\n\n updateCache() {\n let updateCache = this._updateCache;\n updateCache.length = 0;\n this.updateCacheReset.length = 0;\n\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++)\n bones[i].sorted = false;\n\n let ikConstraints = this.ikConstraints;\n let transformConstraints = this.transformConstraints;\n let pathConstraints = this.pathConstraints;\n let ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length;\n let constraintCount = ikCount + transformCount + pathCount;\n\n outer:\n for (let i = 0; i < constraintCount; i++) {\n for (let ii = 0; ii < ikCount; ii++) {\n let constraint = ikConstraints[ii];\n if (constraint.data.order == i) {\n this.sortIkConstraint(constraint);\n continue outer;\n }\n }\n for (let ii = 0; ii < transformCount; ii++) {\n let constraint = transformConstraints[ii];\n if (constraint.data.order == i) {\n this.sortTransformConstraint(constraint);\n continue outer;\n }\n }\n for (let ii = 0; ii < pathCount; ii++) {\n let constraint = pathConstraints[ii];\n if (constraint.data.order == i) {\n this.sortPathConstraint(constraint);\n continue outer;\n }\n }\n }\n\n for (let i = 0, n = bones.length; i < n; i++)\n this.sortBone(bones[i]);\n }\n\n sortIkConstraint(constraint: IkConstraint) {\n let target = constraint.target;\n this.sortBone(target);\n\n let constrained = constraint.bones;\n let parent = constrained[0];\n this.sortBone(parent);\n\n if (constrained.length > 1) {\n let child = constrained[constrained.length - 1];\n if (!(this._updateCache.indexOf(child) > -1)) this.updateCacheReset.push(child);\n }\n\n this._updateCache.push(constraint);\n\n this.sortReset(parent.children);\n constrained[constrained.length - 1].sorted = true;\n }\n\n sortPathConstraint(constraint: PathConstraint) {\n let slot = constraint.target;\n let slotIndex = slot.data.index;\n let slotBone = slot.bone;\n if (this.skin != null) this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone);\n if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin)\n this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone);\n for (let ii = 0, nn = this.data.skins.length; ii < nn; ii++)\n this.sortPathConstraintAttachment(this.data.skins[ii], slotIndex, slotBone);\n\n let attachment = slot.getAttachment();\n if (attachment instanceof PathAttachment) this.sortPathConstraintAttachmentWith(attachment, slotBone);\n\n let constrained = constraint.bones;\n let boneCount = constrained.length;\n for (let ii = 0; ii < boneCount; ii++)\n this.sortBone(constrained[ii]);\n\n this._updateCache.push(constraint);\n\n for (let ii = 0; ii < boneCount; ii++)\n this.sortReset(constrained[ii].children);\n for (let ii = 0; ii < boneCount; ii++)\n constrained[ii].sorted = true;\n }\n\n sortTransformConstraint(constraint: TransformConstraint) {\n this.sortBone(constraint.target);\n\n let constrained = constraint.bones;\n let boneCount = constrained.length;\n for (let ii = 0; ii < boneCount; ii++)\n this.sortBone(constrained[ii]);\n\n this._updateCache.push(constraint);\n\n for (let ii = 0; ii < boneCount; ii++)\n this.sortReset(constrained[ii].children);\n for (let ii = 0; ii < boneCount; ii++)\n constrained[ii].sorted = true;\n }\n\n sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone) {\n let attachments = skin.attachments[slotIndex];\n if (!attachments) return;\n for (let key in attachments) {\n this.sortPathConstraintAttachmentWith(attachments[key], slotBone);\n }\n }\n\n sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone) {\n if (!(attachment instanceof PathAttachment)) return;\n let pathBones = (attachment).bones;\n if (pathBones == null)\n this.sortBone(slotBone);\n else {\n let bones = this.bones;\n let i = 0;\n while (i < pathBones.length) {\n let boneCount = pathBones[i++];\n for (let n = i + boneCount; i < n; i++) {\n let boneIndex = pathBones[i];\n this.sortBone(bones[boneIndex]);\n }\n }\n }\n }\n\n sortBone(bone: Bone) {\n if (bone.sorted) return;\n let parent = bone.parent;\n if (parent != null) this.sortBone(parent);\n bone.sorted = true;\n this._updateCache.push(bone);\n }\n\n sortReset(bones: Array) {\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n if (bone.sorted) this.sortReset(bone.children);\n bone.sorted = false;\n }\n }\n\n /** Updates the world transform for each bone and applies constraints. */\n updateWorldTransform() {\n let updateCacheReset = this.updateCacheReset;\n for (let i = 0, n = updateCacheReset.length; i < n; i++) {\n let bone = updateCacheReset[i] as Bone;\n bone.ax = bone.x;\n bone.ay = bone.y;\n bone.arotation = bone.rotation;\n bone.ascaleX = bone.scaleX;\n bone.ascaleY = bone.scaleY;\n bone.ashearX = bone.shearX;\n bone.ashearY = bone.shearY;\n bone.appliedValid = true;\n }\n let updateCache = this._updateCache;\n for (let i = 0, n = updateCache.length; i < n; i++)\n updateCache[i].update();\n }\n\n /** Sets the bones, constraints, and slots to their setup pose values. */\n setToSetupPose() {\n this.setBonesToSetupPose();\n this.setSlotsToSetupPose();\n }\n\n /** Sets the bones and constraints to their setup pose values. */\n setBonesToSetupPose() {\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++)\n bones[i].setToSetupPose();\n\n let ikConstraints = this.ikConstraints;\n for (let i = 0, n = ikConstraints.length; i < n; i++) {\n let constraint = ikConstraints[i];\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.mix = constraint.data.mix;\n }\n\n let transformConstraints = this.transformConstraints;\n for (let i = 0, n = transformConstraints.length; i < n; i++) {\n let constraint = transformConstraints[i];\n let data = constraint.data;\n constraint.rotateMix = data.rotateMix;\n constraint.translateMix = data.translateMix;\n constraint.scaleMix = data.scaleMix;\n constraint.shearMix = data.shearMix;\n }\n\n let pathConstraints = this.pathConstraints;\n for (let i = 0, n = pathConstraints.length; i < n; i++) {\n let constraint = pathConstraints[i];\n let data = constraint.data;\n constraint.position = data.position;\n constraint.spacing = data.spacing;\n constraint.rotateMix = data.rotateMix;\n constraint.translateMix = data.translateMix;\n }\n }\n\n setSlotsToSetupPose() {\n let slots = this.slots;\n Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length);\n for (let i = 0, n = slots.length; i < n; i++)\n slots[i].setToSetupPose();\n }\n\n /** @return May return null. */\n getRootBone() {\n if (this.bones.length == 0) return null;\n return this.bones[0];\n }\n\n /** @return May be null. */\n findBone(boneName: string) {\n if (boneName == null) throw new Error(\"boneName cannot be null.\");\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n if (bone.data.name == boneName) return bone;\n }\n return null;\n }\n\n /** @return -1 if the bone was not found. */\n findBoneIndex(boneName: string) {\n if (boneName == null) throw new Error(\"boneName cannot be null.\");\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++)\n if (bones[i].data.name == boneName) return i;\n return -1;\n }\n\n /** @return May be null. */\n findSlot(slotName: string) {\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++) {\n let slot = slots[i];\n if (slot.data.name == slotName) return slot;\n }\n return null;\n }\n\n /** @return -1 if the bone was not found. */\n findSlotIndex(slotName: string) {\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++)\n if (slots[i].data.name == slotName) return i;\n return -1;\n }\n\n /** Sets a skin by name.\n * @see #setSkin(Skin) */\n setSkinByName(skinName: string) {\n let skin = this.data.findSkin(skinName);\n if (skin == null) throw new Error(\"Skin not found: \" + skinName);\n this.setSkin(skin);\n }\n\n /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}.\n * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no\n * old skin, each slot's setup mode attachment is attached from the new skin.\n * @param newSkin May be null. */\n setSkin(newSkin: Skin) {\n if (newSkin != null) {\n if (this.skin != null)\n newSkin.attachAll(this, this.skin);\n else {\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++) {\n let slot = slots[i];\n let name = slot.data.attachmentName;\n if (name != null) {\n let attachment: Attachment = newSkin.getAttachment(i, name);\n if (attachment != null) slot.setAttachment(attachment);\n }\n }\n }\n }\n this.skin = newSkin;\n }\n\n /** @return May be null. */\n getAttachmentByName(slotName: string, attachmentName: string): Attachment {\n return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName);\n }\n\n /** @return May be null. */\n getAttachment(slotIndex: number, attachmentName: string): Attachment {\n if (attachmentName == null) throw new Error(\"attachmentName cannot be null.\");\n if (this.skin != null) {\n let attachment: Attachment = this.skin.getAttachment(slotIndex, attachmentName);\n if (attachment != null) return attachment;\n }\n if (this.data.defaultSkin != null) return this.data.defaultSkin.getAttachment(slotIndex, attachmentName);\n return null;\n }\n\n /** @param attachmentName May be null. */\n setAttachment(slotName: string, attachmentName: string) {\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\n let slots = this.slots;\n for (let i = 0, n = slots.length; i < n; i++) {\n let slot = slots[i];\n if (slot.data.name == slotName) {\n let attachment: Attachment = null;\n if (attachmentName != null) {\n attachment = this.getAttachment(i, attachmentName);\n if (attachment == null)\n throw new Error(\"Attachment not found: \" + attachmentName + \", for slot: \" + slotName);\n }\n slot.setAttachment(attachment);\n return;\n }\n }\n throw new Error(\"Slot not found: \" + slotName);\n }\n\n /** @return May be null. */\n findIkConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let ikConstraints = this.ikConstraints;\n for (let i = 0, n = ikConstraints.length; i < n; i++) {\n let ikConstraint = ikConstraints[i];\n if (ikConstraint.data.name == constraintName) return ikConstraint;\n }\n return null;\n }\n\n /** @return May be null. */\n findTransformConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let transformConstraints = this.transformConstraints;\n for (let i = 0, n = transformConstraints.length; i < n; i++) {\n let constraint = transformConstraints[i];\n if (constraint.data.name == constraintName) return constraint;\n }\n return null;\n }\n\n /** @return May be null. */\n findPathConstraint(constraintName: string) {\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\n let pathConstraints = this.pathConstraints;\n for (let i = 0, n = pathConstraints.length; i < n; i++) {\n let constraint = pathConstraints[i];\n if (constraint.data.name == constraintName) return constraint;\n }\n return null;\n }\n\n /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose.\n * @param offset The distance from the skeleton origin to the bottom left corner of the AABB.\n * @param size The width and height of the AABB. */\n getBounds(offset: Vector2, size: Vector2) {\n if (offset == null) throw new Error(\"offset cannot be null.\");\n if (size == null) throw new Error(\"size cannot be null.\");\n let drawOrder = this.drawOrder;\n let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n for (let i = 0, n = drawOrder.length; i < n; i++) {\n let slot = drawOrder[i];\n let vertices: ArrayLike = null;\n let attachment = slot.getAttachment();\n if (attachment instanceof RegionAttachment)\n vertices = (attachment).updateWorldVertices(slot, false);\n else if (attachment instanceof MeshAttachment)\n vertices = (attachment).updateWorldVertices(slot, true);\n if (vertices != null) {\n for (let ii = 0, nn = vertices.length; ii < nn; ii += 8) {\n let x = vertices[ii], y = vertices[ii + 1];\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n }\n }\n offset.set(minX, minY);\n size.set(maxX - minX, maxY - minY);\n }\n\n update(delta: number) {\n this.time += delta;\n }\n }\n}\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class SkeletonBounds {\r\n minX = 0;\r\n minY = 0;\r\n maxX = 0;\r\n maxY = 0;\r\n boundingBoxes = new Array();\r\n polygons = new Array>();\r\n private polygonPool = new Pool>(() => {\r\n return Utils.newFloatArray(16);\r\n });\r\n\r\n update(skeleton: Skeleton, updateAabb: boolean) {\r\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\r\n let boundingBoxes = this.boundingBoxes;\r\n let polygons = this.polygons;\r\n let polygonPool = this.polygonPool;\r\n let slots = skeleton.slots;\r\n let slotCount = slots.length;\r\n\r\n boundingBoxes.length = 0;\r\n polygonPool.freeAll(polygons);\r\n polygons.length = 0;\r\n\r\n for (let i = 0; i < slotCount; i++) {\r\n let slot = slots[i];\r\n let attachment = slot.getAttachment();\r\n if (attachment instanceof BoundingBoxAttachment) {\r\n let boundingBox = attachment as BoundingBoxAttachment;\r\n boundingBoxes.push(boundingBox);\r\n\r\n let polygon = polygonPool.obtain();\r\n if (polygon.length != boundingBox.worldVerticesLength) {\r\n polygon = Utils.newFloatArray(boundingBox.worldVerticesLength);\r\n }\r\n polygons.push(polygon);\r\n boundingBox.computeWorldVertices(slot, polygon);\r\n }\r\n }\r\n\r\n if (updateAabb) this.aabbCompute();\r\n }\r\n\r\n aabbCompute() {\r\n let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\r\n let polygons = this.polygons;\r\n for (let i = 0, n = polygons.length; i < n; i++) {\r\n let polygon = polygons[i];\r\n let vertices = polygon;\r\n for (let ii = 0, nn = polygon.length; ii < nn; ii += 2) {\r\n let x = vertices[ii];\r\n let y = vertices[ii + 1];\r\n minX = Math.min(minX, x);\r\n minY = Math.min(minY, y);\r\n maxX = Math.max(maxX, x);\r\n maxY = Math.max(maxY, y);\r\n }\r\n }\r\n this.minX = minX;\r\n this.minY = minY;\r\n this.maxX = maxX;\r\n this.maxY = maxY;\r\n }\r\n\r\n /** Returns true if the axis aligned bounding box contains the point. */\r\n aabbContainsPoint(x: number, y: number) {\r\n return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\r\n }\r\n\r\n /** Returns true if the axis aligned bounding box intersects the line segment. */\r\n aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number) {\r\n let minX = this.minX;\r\n let minY = this.minY;\r\n let maxX = this.maxX;\r\n let maxY = this.maxY;\r\n if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY))\r\n return false;\r\n let m = (y2 - y1) / (x2 - x1);\r\n let y = m * (minX - x1) + y1;\r\n if (y > minY && y < maxY) return true;\r\n y = m * (maxX - x1) + y1;\r\n if (y > minY && y < maxY) return true;\r\n let x = (minY - y1) / m + x1;\r\n if (x > minX && x < maxX) return true;\r\n x = (maxY - y1) / m + x1;\r\n if (x > minX && x < maxX) return true;\r\n return false;\r\n }\r\n\r\n /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */\r\n aabbIntersectsSkeleton(bounds: SkeletonBounds) {\r\n return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;\r\n }\r\n\r\n /** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more\r\n * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */\r\n containsPoint(x: number, y: number): BoundingBoxAttachment {\r\n let polygons = this.polygons;\r\n for (let i = 0, n = polygons.length; i < n; i++)\r\n if (this.containsPointPolygon(polygons[i], x, y)) return this.boundingBoxes[i];\r\n return null;\r\n }\r\n\r\n /** Returns true if the polygon contains the point. */\r\n containsPointPolygon(polygon: ArrayLike, x: number, y: number) {\r\n let vertices = polygon;\r\n let nn = polygon.length;\r\n\r\n let prevIndex = nn - 2;\r\n let inside = false;\r\n for (let ii = 0; ii < nn; ii += 2) {\r\n let vertexY = vertices[ii + 1];\r\n let prevY = vertices[prevIndex + 1];\r\n if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) {\r\n let vertexX = vertices[ii];\r\n if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) inside = !inside;\r\n }\r\n prevIndex = ii;\r\n }\r\n return inside;\r\n }\r\n\r\n /** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it\r\n * is usually more efficient to only call this method if {@link #aabbIntersectsSegment(float, float, float, float)} returns\r\n * true. */\r\n intersectsSegment(x1: number, y1: number, x2: number, y2: number) {\r\n let polygons = this.polygons;\r\n for (let i = 0, n = polygons.length; i < n; i++)\r\n if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) return this.boundingBoxes[i];\r\n return null;\r\n }\r\n\r\n /** Returns true if the polygon contains any part of the line segment. */\r\n intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number) {\r\n let vertices = polygon;\r\n let nn = polygon.length;\r\n\r\n let width12 = x1 - x2, height12 = y1 - y2;\r\n let det1 = x1 * y2 - y1 * x2;\r\n let x3 = vertices[nn - 2], y3 = vertices[nn - 1];\r\n for (let ii = 0; ii < nn; ii += 2) {\r\n let x4 = vertices[ii], y4 = vertices[ii + 1];\r\n let det2 = x3 * y4 - y3 * x4;\r\n let width34 = x3 - x4, height34 = y3 - y4;\r\n let det3 = width12 * height34 - height12 * width34;\r\n let x = (det1 * width34 - width12 * det2) / det3;\r\n if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) {\r\n let y = (det1 * height34 - height12 * det2) / det3;\r\n if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) return true;\r\n }\r\n x3 = x4;\r\n y3 = y4;\r\n }\r\n return false;\r\n }\r\n\r\n /** Returns the polygon for the specified bounding box, or null. */\r\n getPolygon(boundingBox: BoundingBoxAttachment) {\r\n if (boundingBox == null) throw new Error(\"boundingBox cannot be null.\");\r\n let index = this.boundingBoxes.indexOf(boundingBox);\r\n return index == -1 ? null : this.polygons[index];\r\n }\r\n\r\n getWidth() {\r\n return this.maxX - this.minX;\r\n }\r\n\r\n getHeight() {\r\n return this.maxY - this.minY;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class SkeletonData {\r\n name: string;\r\n bones = new Array(); // Ordered parents first.\r\n slots = new Array(); // Setup pose draw order.\r\n skins = new Array();\r\n defaultSkin: Skin;\r\n events = new Array();\r\n animations = new Array();\r\n ikConstraints = new Array();\r\n transformConstraints = new Array();\r\n pathConstraints = new Array();\r\n width: number;\r\n height: number;\r\n version: string;\r\n hash: string;\r\n\r\n // Nonessential\r\n fps = 0;\r\n imagesPath: string;\r\n\r\n findBone(boneName: string) {\r\n if (boneName == null) throw new Error(\"boneName cannot be null.\");\r\n let bones = this.bones;\r\n for (let i = 0, n = bones.length; i < n; i++) {\r\n let bone = bones[i];\r\n if (bone.name == boneName) return bone;\r\n }\r\n return null;\r\n }\r\n\r\n findBoneIndex(boneName: string) {\r\n if (boneName == null) throw new Error(\"boneName cannot be null.\");\r\n let bones = this.bones;\r\n for (let i = 0, n = bones.length; i < n; i++)\r\n if (bones[i].name == boneName) return i;\r\n return -1;\r\n }\r\n\r\n findSlot(slotName: string) {\r\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\r\n let slots = this.slots;\r\n for (let i = 0, n = slots.length; i < n; i++) {\r\n let slot = slots[i];\r\n if (slot.name == slotName) return slot;\r\n }\r\n return null;\r\n }\r\n\r\n findSlotIndex(slotName: string) {\r\n if (slotName == null) throw new Error(\"slotName cannot be null.\");\r\n let slots = this.slots;\r\n for (let i = 0, n = slots.length; i < n; i++)\r\n if (slots[i].name == slotName) return i;\r\n return -1;\r\n }\r\n\r\n findSkin(skinName: string) {\r\n if (skinName == null) throw new Error(\"skinName cannot be null.\");\r\n let skins = this.skins;\r\n for (let i = 0, n = skins.length; i < n; i++) {\r\n let skin = skins[i];\r\n if (skin.name == skinName) return skin;\r\n }\r\n return null;\r\n }\r\n\r\n findEvent(eventDataName: string) {\r\n if (eventDataName == null) throw new Error(\"eventDataName cannot be null.\");\r\n let events = this.events;\r\n for (let i = 0, n = events.length; i < n; i++) {\r\n let event = events[i];\r\n if (event.name == eventDataName) return event;\r\n }\r\n return null;\r\n }\r\n\r\n findAnimation(animationName: string) {\r\n if (animationName == null) throw new Error(\"animationName cannot be null.\");\r\n let animations = this.animations;\r\n for (let i = 0, n = animations.length; i < n; i++) {\r\n let animation = animations[i];\r\n if (animation.name == animationName) return animation;\r\n }\r\n return null;\r\n }\r\n\r\n findIkConstraint(constraintName: string) {\r\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\r\n let ikConstraints = this.ikConstraints;\r\n for (let i = 0, n = ikConstraints.length; i < n; i++) {\r\n let constraint = ikConstraints[i];\r\n if (constraint.name == constraintName) return constraint;\r\n }\r\n return null;\r\n }\r\n\r\n findTransformConstraint(constraintName: string) {\r\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\r\n let transformConstraints = this.transformConstraints;\r\n for (let i = 0, n = transformConstraints.length; i < n; i++) {\r\n let constraint = transformConstraints[i];\r\n if (constraint.name == constraintName) return constraint;\r\n }\r\n return null;\r\n }\r\n\r\n findPathConstraint(constraintName: string) {\r\n if (constraintName == null) throw new Error(\"constraintName cannot be null.\");\r\n let pathConstraints = this.pathConstraints;\r\n for (let i = 0, n = pathConstraints.length; i < n; i++) {\r\n let constraint = pathConstraints[i];\r\n if (constraint.name == constraintName) return constraint;\r\n }\r\n return null;\r\n }\r\n\r\n findPathConstraintIndex(pathConstraintName: string) {\r\n if (pathConstraintName == null) throw new Error(\"pathConstraintName cannot be null.\");\r\n let pathConstraints = this.pathConstraints;\r\n for (let i = 0, n = pathConstraints.length; i < n; i++)\r\n if (pathConstraints[i].name == pathConstraintName) return i;\r\n return -1;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class SkeletonJson {\r\n attachmentLoader: AttachmentLoader;\r\n scale = 1;\r\n private linkedMeshes = new Array();\r\n\r\n constructor(attachmentLoader: AttachmentLoader) {\r\n this.attachmentLoader = attachmentLoader;\r\n }\r\n\r\n readSkeletonData(json: string | any): SkeletonData {\r\n let scale = this.scale;\r\n let skeletonData = new SkeletonData();\r\n let root = typeof(json) === \"string\" ? JSON.parse(json) : json;\r\n\r\n // Skeleton\r\n let skeletonMap = root.skeleton;\r\n if (skeletonMap != null) {\r\n skeletonData.hash = skeletonMap.hash;\r\n skeletonData.version = skeletonMap.spine;\r\n skeletonData.width = skeletonMap.width;\r\n skeletonData.height = skeletonMap.height;\r\n skeletonData.fps = skeletonMap.fps;\r\n skeletonData.imagesPath = skeletonMap.images;\r\n }\r\n\r\n // Bones\r\n if (root.bones) {\r\n for (let i = 0; i < root.bones.length; i++) {\r\n let boneMap = root.bones[i];\r\n\r\n let parent: BoneData = null;\r\n let parentName: string = this.getValue(boneMap, \"parent\", null);\r\n if (parentName != null) {\r\n parent = skeletonData.findBone(parentName);\r\n if (parent == null) throw new Error(\"Parent bone not found: \" + parentName);\r\n }\r\n let data = new BoneData(skeletonData.bones.length, boneMap.name, parent);\r\n data.length = this.getValue(boneMap, \"length\", 0) * scale;\r\n data.x = this.getValue(boneMap, \"x\", 0) * scale;\r\n data.y = this.getValue(boneMap, \"y\", 0) * scale;\r\n data.rotation = this.getValue(boneMap, \"rotation\", 0);\r\n data.scaleX = this.getValue(boneMap, \"scaleX\", 1);\r\n data.scaleY = this.getValue(boneMap, \"scaleY\", 1);\r\n data.shearX = this.getValue(boneMap, \"shearX\", 0);\r\n data.shearY = this.getValue(boneMap, \"shearY\", 0);\r\n\r\n //this is legacy\r\n if (boneMap.hasOwnProperty(\"inheritScale\") || boneMap.hasOwnProperty(\"inheritRotation\")) {\r\n //before 3.5\r\n data.transformMode = SkeletonJson.transformModeLegacy(\r\n this.getValue(boneMap, \"inheritRotation\", true),\r\n this.getValue(boneMap, \"inheritScale\", true));\r\n } else {\r\n //after 3.5\r\n data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, \"transform\", \"normal\"));\r\n }\r\n\r\n skeletonData.bones.push(data);\r\n }\r\n }\r\n\r\n // Slots.\r\n if (root.slots) {\r\n for (let i = 0; i < root.slots.length; i++) {\r\n let slotMap = root.slots[i];\r\n let slotName: string = slotMap.name;\r\n let boneName: string = slotMap.bone;\r\n let boneData = skeletonData.findBone(boneName);\r\n if (boneData == null) throw new Error(\"Slot bone not found: \" + boneName);\r\n let data = new SlotData(skeletonData.slots.length, slotName, boneData);\r\n\r\n let color: string = this.getValue(slotMap, \"color\", null);\r\n if (color != null) data.color.setFromString(color);\r\n\r\n data.attachmentName = this.getValue(slotMap, \"attachment\", null);\r\n data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, \"blend\", \"normal\"));\r\n skeletonData.slots.push(data);\r\n }\r\n }\r\n\r\n // IK constraints\r\n if (root.ik) {\r\n for (let i = 0; i < root.ik.length; i++) {\r\n let constraintMap = root.ik[i];\r\n let data = new IkConstraintData(constraintMap.name);\r\n data.order = this.getValue(constraintMap, \"order\", 0);\r\n\r\n for (let j = 0; j < constraintMap.bones.length; j++) {\r\n let boneName = constraintMap.bones[j];\r\n let bone = skeletonData.findBone(boneName);\r\n if (bone == null) throw new Error(\"IK bone not found: \" + boneName);\r\n data.bones.push(bone);\r\n }\r\n\r\n let targetName: string = constraintMap.target;\r\n data.target = skeletonData.findBone(targetName);\r\n if (data.target == null) throw new Error(\"IK target bone not found: \" + targetName);\r\n\r\n data.bendDirection = this.getValue(constraintMap, \"bendPositive\", true) ? 1 : -1;\r\n data.mix = this.getValue(constraintMap, \"mix\", 1);\r\n\r\n skeletonData.ikConstraints.push(data);\r\n }\r\n }\r\n\r\n // Transform constraints.\r\n if (root.transform) {\r\n for (let i = 0; i < root.transform.length; i++) {\r\n let constraintMap = root.transform[i];\r\n let data = new TransformConstraintData(constraintMap.name);\r\n data.order = this.getValue(constraintMap, \"order\", 0);\r\n\r\n for (let j = 0; j < constraintMap.bones.length; j++) {\r\n let boneName = constraintMap.bones[j];\r\n let bone = skeletonData.findBone(boneName);\r\n if (bone == null) throw new Error(\"Transform constraint bone not found: \" + boneName);\r\n data.bones.push(bone);\r\n }\r\n\r\n let targetName: string = constraintMap.target;\r\n data.target = skeletonData.findBone(targetName);\r\n if (data.target == null) throw new Error(\"Transform constraint target bone not found: \" + targetName);\r\n\r\n data.offsetRotation = this.getValue(constraintMap, \"rotation\", 0);\r\n data.offsetX = this.getValue(constraintMap, \"x\", 0) * scale;\r\n data.offsetY = this.getValue(constraintMap, \"y\", 0) * scale;\r\n data.offsetScaleX = this.getValue(constraintMap, \"scaleX\", 0);\r\n data.offsetScaleY = this.getValue(constraintMap, \"scaleY\", 0);\r\n data.offsetShearY = this.getValue(constraintMap, \"shearY\", 0);\r\n\r\n data.rotateMix = this.getValue(constraintMap, \"rotateMix\", 1);\r\n data.translateMix = this.getValue(constraintMap, \"translateMix\", 1);\r\n data.scaleMix = this.getValue(constraintMap, \"scaleMix\", 1);\r\n data.shearMix = this.getValue(constraintMap, \"shearMix\", 1);\r\n\r\n skeletonData.transformConstraints.push(data);\r\n }\r\n }\r\n\r\n // Path constraints.\r\n if (root.path) {\r\n for (let i = 0; i < root.path.length; i++) {\r\n let constraintMap = root.path[i];\r\n let data = new PathConstraintData(constraintMap.name);\r\n data.order = this.getValue(constraintMap, \"order\", 0);\r\n\r\n for (let j = 0; j < constraintMap.bones.length; j++) {\r\n let boneName = constraintMap.bones[j];\r\n let bone = skeletonData.findBone(boneName);\r\n if (bone == null) throw new Error(\"Transform constraint bone not found: \" + boneName);\r\n data.bones.push(bone);\r\n }\r\n\r\n let targetName: string = constraintMap.target;\r\n data.target = skeletonData.findSlot(targetName);\r\n if (data.target == null) throw new Error(\"Path target slot not found: \" + targetName);\r\n\r\n data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, \"positionMode\", \"percent\"));\r\n data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, \"spacingMode\", \"length\"));\r\n data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, \"rotateMode\", \"tangent\"));\r\n data.offsetRotation = this.getValue(constraintMap, \"rotation\", 0);\r\n data.position = this.getValue(constraintMap, \"position\", 0);\r\n if (data.positionMode == PositionMode.Fixed) data.position *= scale;\r\n data.spacing = this.getValue(constraintMap, \"spacing\", 0);\r\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) data.spacing *= scale;\r\n data.rotateMix = this.getValue(constraintMap, \"rotateMix\", 1);\r\n data.translateMix = this.getValue(constraintMap, \"translateMix\", 1);\r\n\r\n skeletonData.pathConstraints.push(data);\r\n }\r\n }\r\n\r\n // Skins.\r\n if (root.skins) {\r\n for (let skinName in root.skins) {\r\n let skinMap = root.skins[skinName]\r\n let skin = new Skin(skinName);\r\n for (let slotName in skinMap) {\r\n let slotIndex = skeletonData.findSlotIndex(slotName);\r\n if (slotIndex == -1) throw new Error(\"Slot not found: \" + slotName);\r\n let slotMap = skinMap[slotName];\r\n for (let entryName in slotMap) {\r\n let attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName);\r\n if (attachment != null) skin.addAttachment(slotIndex, entryName, attachment);\r\n }\r\n }\r\n skeletonData.skins.push(skin);\r\n if (skin.name == \"default\") skeletonData.defaultSkin = skin;\r\n }\r\n }\r\n\r\n // Linked meshes.\r\n for (let i = 0, n = this.linkedMeshes.length; i < n; i++) {\r\n let linkedMesh = this.linkedMeshes[i];\r\n let skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\r\n if (skin == null) throw new Error(\"Skin not found: \" + linkedMesh.skin);\r\n let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\r\n if (parent == null) throw new Error(\"Parent mesh not found: \" + linkedMesh.parent);\r\n linkedMesh.mesh.setParentMesh( parent);\r\n // linkedMesh.mesh.updateUVs();\r\n }\r\n this.linkedMeshes.length = 0;\r\n\r\n // Events.\r\n if (root.events) {\r\n for (let eventName in root.events) {\r\n let eventMap = root.events[eventName];\r\n let data = new EventData(eventName);\r\n data.intValue = this.getValue(eventMap, \"int\", 0);\r\n data.floatValue = this.getValue(eventMap, \"float\", 0);\r\n data.stringValue = this.getValue(eventMap, \"string\", \"\");\r\n skeletonData.events.push(data);\r\n }\r\n }\r\n\r\n // Animations.\r\n if (root.animations) {\r\n for (let animationName in root.animations) {\r\n let animationMap = root.animations[animationName];\r\n this.readAnimation(animationMap, animationName, skeletonData);\r\n }\r\n }\r\n\r\n return skeletonData;\r\n }\r\n\r\n readAttachment(map: any, skin: Skin, slotIndex: number, name: string): Attachment {\r\n let scale = this.scale;\r\n name = this.getValue(map, \"name\", name);\r\n\r\n let type = this.getValue(map, \"type\", \"region\");\r\n\r\n switch (type) {\r\n case \"region\": {\r\n let path = this.getValue(map, \"path\", name);\r\n let region = this.attachmentLoader.newRegionAttachment(skin, name, path);\r\n if (region == null) return null;\r\n region.path = path;\r\n region.x = this.getValue(map, \"x\", 0) * scale;\r\n region.y = this.getValue(map, \"y\", 0) * scale;\r\n region.scaleX = this.getValue(map, \"scaleX\", 1);\r\n region.scaleY = this.getValue(map, \"scaleY\", 1);\r\n region.rotation = this.getValue(map, \"rotation\", 0);\r\n region.width = map.width * scale;\r\n region.height = map.height * scale;\r\n\r\n let color: string = this.getValue(map, \"color\", null);\r\n if (color != null) region.color.setFromString(color);\r\n\r\n return region;\r\n }\r\n case \"boundingbox\": {\r\n let box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\r\n if (box == null) return null;\r\n this.readVertices(map, box, map.vertexCount << 1);\r\n let color: string = this.getValue(map, \"color\", null);\r\n if (color != null) box.color.setFromString(color);\r\n return box;\r\n }\r\n //weightedmesh is deprecated but who cares\r\n case \"weightedmesh\":\r\n case \"skinnedmesh\":\r\n case \"mesh\":\r\n case \"linkedmesh\": {\r\n let path = this.getValue(map, \"path\", name);\r\n let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\r\n if (mesh == null) return null;\r\n mesh.path = path;\r\n\r\n let color = this.getValue(map, \"color\", null);\r\n if (color != null) mesh.color.setFromString(color);\r\n\r\n let parent: string = this.getValue(map, \"parent\", null);\r\n if (parent != null) {\r\n mesh.inheritDeform = this.getValue(map, \"deform\", true);\r\n this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, \"skin\", null), slotIndex, parent));\r\n return mesh;\r\n }\r\n\r\n let uvs: Array = map.uvs;\r\n this.readVertices(map, mesh, uvs.length);\r\n mesh.triangles = map.triangles;\r\n mesh.regionUVs = uvs;\r\n // mesh.updateUVs();\r\n\r\n mesh.hullLength = this.getValue(map, \"hull\", 0) * 2;\r\n return mesh;\r\n }\r\n case \"path\": {\r\n let path = this.attachmentLoader.newPathAttachment(skin, name);\r\n if (path == null) return null;\r\n path.closed = this.getValue(map, \"closed\", false);\r\n path.constantSpeed = this.getValue(map, \"constantSpeed\", true);\r\n\r\n let vertexCount = map.vertexCount;\r\n this.readVertices(map, path, vertexCount << 1);\r\n\r\n let lengths: Array = Utils.newArray(vertexCount / 3, 0);\r\n for (let i = 0; i < map.lengths.length; i++)\r\n lengths[i++] = map.lengths[i] * scale;\r\n path.lengths = lengths;\r\n\r\n let color: string = this.getValue(map, \"color\", null);\r\n if (color != null) path.color.setFromString(color);\r\n return path;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n readVertices(map: any, attachment: VertexAttachment, verticesLength: number) {\r\n let scale = this.scale;\r\n attachment.worldVerticesLength = verticesLength;\r\n let vertices: Array = map.vertices;\r\n if (verticesLength == vertices.length) {\r\n if (scale != 1) {\r\n for (let i = 0, n = vertices.length; i < n; i++)\r\n vertices[i] *= scale;\r\n }\r\n attachment.vertices = Utils.toFloatArray(vertices);\r\n return;\r\n }\r\n let weights = new Array();\r\n let bones = new Array();\r\n for (let i = 0, n = vertices.length; i < n;) {\r\n let boneCount = vertices[i++];\r\n bones.push(boneCount);\r\n for (let nn = i + boneCount * 4; i < nn; i += 4) {\r\n bones.push(vertices[i]);\r\n weights.push(vertices[i + 1] * scale);\r\n weights.push(vertices[i + 2] * scale);\r\n weights.push(vertices[i + 3]);\r\n }\r\n }\r\n attachment.bones = bones;\r\n attachment.vertices = Utils.toFloatArray(weights);\r\n }\r\n\r\n readAnimation(map: any, name: string, skeletonData: SkeletonData) {\r\n let scale = this.scale;\r\n let timelines = new Array();\r\n let duration = 0;\r\n\r\n // Slot timelines.\r\n if (map.slots) {\r\n for (let slotName in map.slots) {\r\n let slotMap = map.slots[slotName];\r\n let slotIndex = skeletonData.findSlotIndex(slotName);\r\n if (slotIndex == -1) throw new Error(\"Slot not found: \" + slotName);\r\n for (let timelineName in slotMap) {\r\n let timelineMap = slotMap[timelineName];\r\n if (timelineName == \"color\") {\r\n let timeline = new ColorTimeline(timelineMap.length);\r\n timeline.slotIndex = slotIndex;\r\n\r\n let frameIndex = 0;\r\n for (let i = 0; i < timelineMap.length; i++) {\r\n let valueMap = timelineMap[i];\r\n let color = new Color();\r\n color.setFromString(valueMap.color);\r\n timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a);\r\n this.readCurve(valueMap, timeline, frameIndex);\r\n frameIndex++;\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * ColorTimeline.ENTRIES]);\r\n\r\n } else if (timelineName = \"attachment\") {\r\n let timeline = new AttachmentTimeline(timelineMap.length);\r\n timeline.slotIndex = slotIndex;\r\n\r\n let frameIndex = 0;\r\n for (let i = 0; i < timelineMap.length; i++) {\r\n let valueMap = timelineMap[i];\r\n timeline.setFrame(frameIndex++, valueMap.time, valueMap.name);\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\r\n } else\r\n throw new Error(\"Invalid timeline type for a slot: \" + timelineName + \" (\" + slotName + \")\");\r\n }\r\n }\r\n }\r\n\r\n // Bone timelines.\r\n if (map.bones) {\r\n for (let boneName in map.bones) {\r\n let boneMap = map.bones[boneName];\r\n let boneIndex = skeletonData.findBoneIndex(boneName);\r\n if (boneIndex == -1) throw new Error(\"Bone not found: \" + boneName);\r\n for (let timelineName in boneMap) {\r\n let timelineMap = boneMap[timelineName];\r\n if (timelineName === \"rotate\") {\r\n let timeline = new RotateTimeline(timelineMap.length);\r\n timeline.boneIndex = boneIndex;\r\n\r\n let frameIndex = 0;\r\n for (let i = 0; i < timelineMap.length; i++) {\r\n let valueMap = timelineMap[i];\r\n timeline.setFrame(frameIndex, valueMap.time, valueMap.angle);\r\n this.readCurve(valueMap, timeline, frameIndex);\r\n frameIndex++;\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * RotateTimeline.ENTRIES]);\r\n\r\n } else if (timelineName === \"translate\" || timelineName === \"scale\" || timelineName === \"shear\") {\r\n let timeline: TranslateTimeline = null;\r\n let timelineScale = 1;\r\n if (timelineName === \"scale\")\r\n timeline = new ScaleTimeline(timelineMap.length);\r\n else if (timelineName === \"shear\")\r\n timeline = new ShearTimeline(timelineMap.length);\r\n else {\r\n timeline = new TranslateTimeline(timelineMap.length);\r\n timelineScale = scale;\r\n }\r\n timeline.boneIndex = boneIndex;\r\n\r\n let frameIndex = 0;\r\n for (let i = 0; i < timelineMap.length; i++) {\r\n let valueMap = timelineMap[i];\r\n let x = this.getValue(valueMap, \"x\", 0), y = this.getValue(valueMap, \"y\", 0);\r\n timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale);\r\n this.readCurve(valueMap, timeline, frameIndex);\r\n frameIndex++;\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * TranslateTimeline.ENTRIES]);\r\n\r\n } else\r\n throw new Error(\"Invalid timeline type for a bone: \" + timelineName + \" (\" + boneName + \")\");\r\n }\r\n }\r\n }\r\n\r\n // IK constraint timelines.\r\n if (map.ik) {\r\n for (let constraintName in map.ik) {\r\n let constraintMap = map.ik[constraintName];\r\n let constraint = skeletonData.findIkConstraint(constraintName);\r\n let timeline = new IkConstraintTimeline(constraintMap.length);\r\n timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint);\r\n let frameIndex = 0;\r\n for (let i = 0; i < constraintMap.length; i++) {\r\n let valueMap = constraintMap[i];\r\n timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, \"mix\", 1),\r\n this.getValue(valueMap, \"bendPositive\", true) ? 1 : -1);\r\n this.readCurve(valueMap, timeline, frameIndex);\r\n frameIndex++;\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * IkConstraintTimeline.ENTRIES]);\r\n }\r\n }\r\n\r\n // Transform constraint timelines.\r\n if (map.transform) {\r\n for (let constraintName in map.transform) {\r\n let constraintMap = map.transform[constraintName];\r\n let constraint = skeletonData.findTransformConstraint(constraintName);\r\n let timeline = new TransformConstraintTimeline(constraintMap.length);\r\n timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint);\r\n let frameIndex = 0;\r\n for (let i = 0; i < constraintMap.length; i++) {\r\n let valueMap = constraintMap[i];\r\n timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, \"rotateMix\", 1),\r\n this.getValue(valueMap, \"translateMix\", 1), this.getValue(valueMap, \"scaleMix\", 1), this.getValue(valueMap, \"shearMix\", 1));\r\n this.readCurve(valueMap, timeline, frameIndex);\r\n frameIndex++;\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration,\r\n timeline.frames[(timeline.getFrameCount() - 1) * TransformConstraintTimeline.ENTRIES]);\r\n }\r\n }\r\n\r\n // Path constraint timelines.\r\n if (map.paths) {\r\n for (let constraintName in map.paths) {\r\n let constraintMap = map.paths[constraintName];\r\n let index = skeletonData.findPathConstraintIndex(constraintName);\r\n if (index == -1) throw new Error(\"Path constraint not found: \" + constraintName);\r\n let data = skeletonData.pathConstraints[index];\r\n for (let timelineName in constraintMap) {\r\n let timelineMap = constraintMap[timelineName];\r\n if (timelineName === \"position\" || timelineName === \"spacing\") {\r\n let timeline: PathConstraintPositionTimeline = null;\r\n let timelineScale = 1;\r\n if (timelineName === \"spacing\") {\r\n timeline = new PathConstraintSpacingTimeline(timelineMap.length);\r\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) timelineScale = scale;\r\n } else {\r\n timeline = new PathConstraintPositionTimeline(timelineMap.length);\r\n if (data.positionMode == PositionMode.Fixed) timelineScale = scale;\r\n }\r\n timeline.pathConstraintIndex = index;\r\n let frameIndex = 0;\r\n for (let i = 0; i < timelineMap.length; i++) {\r\n let valueMap = timelineMap[i];\r\n timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale);\r\n this.readCurve(valueMap, timeline, frameIndex);\r\n frameIndex++;\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration,\r\n timeline.frames[(timeline.getFrameCount() - 1) * PathConstraintPositionTimeline.ENTRIES]);\r\n } else if (timelineName === \"mix\") {\r\n let timeline = new PathConstraintMixTimeline(timelineMap.length);\r\n timeline.pathConstraintIndex = index;\r\n let frameIndex = 0;\r\n for (let i = 0; i < timelineMap.length; i++) {\r\n let valueMap = timelineMap[i];\r\n timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, \"rotateMix\", 1),\r\n this.getValue(valueMap, \"translateMix\", 1));\r\n this.readCurve(valueMap, timeline, frameIndex);\r\n frameIndex++;\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration,\r\n timeline.frames[(timeline.getFrameCount() - 1) * PathConstraintMixTimeline.ENTRIES]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Deform timelines.\r\n if (map.deform) {\r\n for (let deformName in map.deform) {\r\n let deformMap = map.deform[deformName];\r\n let skin = skeletonData.findSkin(deformName);\r\n if (skin == null) throw new Error(\"Skin not found: \" + deformName);\r\n for (let slotName in deformMap) {\r\n let slotMap = deformMap[slotName];\r\n let slotIndex = skeletonData.findSlotIndex(slotName);\r\n if (slotIndex == -1) throw new Error(\"Slot not found: \" + slotMap.name);\r\n for (let timelineName in slotMap) {\r\n let timelineMap = slotMap[timelineName];\r\n let attachment = skin.getAttachment(slotIndex, timelineName);\r\n if (attachment == null) throw new Error(\"Deform attachment not found: \" + timelineMap.name);\r\n let weighted = attachment.bones != null;\r\n let vertices = attachment.vertices;\r\n let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\r\n\r\n let timeline = new DeformTimeline(timelineMap.length);\r\n timeline.slotIndex = slotIndex;\r\n timeline.attachment = attachment;\r\n\r\n let frameIndex = 0;\r\n for (let j = 0; j < timelineMap.length; j++) {\r\n let valueMap = timelineMap[j];\r\n let deform: ArrayLike;\r\n let verticesValue: Array = this.getValue(valueMap, \"vertices\", null);\r\n if (verticesValue == null)\r\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\r\n else {\r\n deform = Utils.newFloatArray(deformLength);\r\n let start = this.getValue(valueMap, \"offset\", 0);\r\n Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length);\r\n if (scale != 1) {\r\n for (let i = start, n = i + verticesValue.length; i < n; i++)\r\n deform[i] *= scale;\r\n }\r\n if (!weighted) {\r\n for (let i = 0; i < deformLength; i++)\r\n deform[i] += vertices[i];\r\n }\r\n }\r\n\r\n timeline.setFrame(frameIndex, valueMap.time, deform);\r\n this.readCurve(valueMap, timeline, frameIndex);\r\n frameIndex++;\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Draw order timeline.\r\n let drawOrderNode = map.drawOrder;\r\n if (drawOrderNode == null) drawOrderNode = map.draworder;\r\n if (drawOrderNode != null) {\r\n let timeline = new DrawOrderTimeline(drawOrderNode.length);\r\n let slotCount = skeletonData.slots.length;\r\n let frameIndex = 0;\r\n for (let j = 0; j < drawOrderNode.length; j++) {\r\n let drawOrderMap = drawOrderNode[j];\r\n let drawOrder: Array = null;\r\n let offsets = this.getValue(drawOrderMap, \"offsets\", null);\r\n if (offsets != null) {\r\n drawOrder = Utils.newArray(slotCount, -1);\r\n let unchanged = Utils.newArray(slotCount - offsets.length, 0);\r\n let originalIndex = 0, unchangedIndex = 0;\r\n for (let i = 0; i < offsets.length; i++) {\r\n let offsetMap = offsets[i];\r\n let slotIndex = skeletonData.findSlotIndex(offsetMap.slot);\r\n if (slotIndex == -1) throw new Error(\"Slot not found: \" + offsetMap.slot);\r\n // Collect unchanged items.\r\n while (originalIndex != slotIndex)\r\n unchanged[unchangedIndex++] = originalIndex++;\r\n // Set changed items.\r\n drawOrder[originalIndex + offsetMap.offset] = originalIndex++;\r\n }\r\n // Collect remaining unchanged items.\r\n while (originalIndex < slotCount)\r\n unchanged[unchangedIndex++] = originalIndex++;\r\n // Fill in unchanged items.\r\n for (let i = slotCount - 1; i >= 0; i--)\r\n if (drawOrder[i] == -1) drawOrder[i] = unchanged[--unchangedIndex];\r\n }\r\n timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder);\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\r\n }\r\n\r\n // Event timeline.\r\n if (map.events) {\r\n let timeline = new EventTimeline(map.events.length);\r\n let frameIndex = 0;\r\n for (let i = 0; i < map.events.length; i++) {\r\n let eventMap = map.events[i];\r\n let eventData = skeletonData.findEvent(eventMap.name);\r\n if (eventData == null) throw new Error(\"Event not found: \" + eventMap.name);\r\n let event = new Event(eventMap.time, eventData);\r\n event.intValue = this.getValue(eventMap, \"int\", eventData.intValue);\r\n event.floatValue = this.getValue(eventMap, \"float\", eventData.floatValue);\r\n event.stringValue = this.getValue(eventMap, \"string\", eventData.stringValue);\r\n timeline.setFrame(frameIndex++, event);\r\n }\r\n timelines.push(timeline);\r\n duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\r\n }\r\n\r\n if (isNaN(duration)) {\r\n throw new Error(\"Error while parsing animation, duration is NaN\");\r\n }\r\n\r\n skeletonData.animations.push(new Animation(name, timelines, duration));\r\n }\r\n\r\n readCurve(map: any, timeline: CurveTimeline, frameIndex: number) {\r\n if (!map.curve) return;\r\n if (map.curve === \"stepped\")\r\n timeline.setStepped(frameIndex);\r\n else if (Object.prototype.toString.call(map.curve) === '[object Array]') {\r\n let curve: Array = map.curve;\r\n timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]);\r\n }\r\n }\r\n\r\n getValue(map: any, prop: string, defaultValue: any) {\r\n return map[prop] !== undefined ? map[prop] : defaultValue;\r\n }\r\n\r\n static blendModeFromString(str: string): number {\r\n if (str === 'multiply') return PIXI.BLEND_MODES.MULTIPLY;\r\n if (str === 'additive') return PIXI.BLEND_MODES.ADD;\r\n if (str === 'screen') return PIXI.BLEND_MODES.SCREEN;\r\n if (str === 'normal') return PIXI.BLEND_MODES.NORMAL;\r\n throw new Error(`Unknown blend mode: ${str}`);\r\n }\r\n\r\n static positionModeFromString(str: string) {\r\n str = str.toLowerCase();\r\n if (str == \"fixed\") return PositionMode.Fixed;\r\n if (str == \"percent\") return PositionMode.Percent;\r\n throw new Error(`Unknown position mode: ${str}`);\r\n }\r\n\r\n static spacingModeFromString(str: string) {\r\n str = str.toLowerCase();\r\n if (str == \"length\") return SpacingMode.Length;\r\n if (str == \"fixed\") return SpacingMode.Fixed;\r\n if (str == \"percent\") return SpacingMode.Percent;\r\n throw new Error(`Unknown position mode: ${str}`);\r\n }\r\n\r\n static rotateModeFromString(str: string) {\r\n str = str.toLowerCase();\r\n if (str == \"tangent\") return RotateMode.Tangent;\r\n if (str == \"chain\") return RotateMode.Chain;\r\n if (str == \"chainscale\") return RotateMode.ChainScale;\r\n throw new Error(`Unknown rotate mode: ${str}`);\r\n }\r\n\r\n static transformModeFromString(str: string) {\r\n str = str.toLowerCase();\r\n if (str == \"normal\") return TransformMode.Normal;\r\n if (str == \"onlytranslation\") return TransformMode.OnlyTranslation;\r\n if (str == \"norotationorreflection\") return TransformMode.NoRotationOrReflection;\r\n if (str == \"noscale\") return TransformMode.NoScale;\r\n if (str == \"noscaleorreflection\") return TransformMode.NoScaleOrReflection;\r\n throw new Error(`Unknown transform mode: ${str}`);\r\n }\r\n\r\n static transformModeLegacy(inheritRotation: boolean, inheritScale: boolean) {\r\n console.log(\"Deprecation Warning: re-export your model with spine 3.5, or downgrade to pixi-spine 1.1 branch. There were many breaking changes, place breakpoint here if you want to know which model is broken\");\r\n if (inheritRotation && inheritScale) {\r\n return TransformMode.Normal;\r\n } else if (inheritRotation) {\r\n return TransformMode.NoScaleOrReflection;\r\n } else if (inheritScale) {\r\n return TransformMode.NoRotationOrReflection;\r\n } else {\r\n return TransformMode.OnlyTranslation;\r\n }\r\n }\r\n }\r\n\r\n class LinkedMesh {\r\n parent: string;\r\n skin: string;\r\n slotIndex: number;\r\n mesh: MeshAttachment;\r\n\r\n constructor(mesh: MeshAttachment, skin: string, slotIndex: number, parent: string) {\r\n this.mesh = mesh;\r\n this.skin = skin;\r\n this.slotIndex = slotIndex;\r\n this.parent = parent;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class Skin {\r\n name: string;\r\n attachments = new Array>();\r\n\r\n constructor(name: string) {\r\n if (name == null) throw new Error(\"name cannot be null.\");\r\n this.name = name;\r\n }\r\n\r\n addAttachment(slotIndex: number, name: string, attachment: Attachment) {\r\n if (attachment == null) throw new Error(\"attachment cannot be null.\");\r\n let attachments = this.attachments;\r\n if (slotIndex >= attachments.length) attachments.length = slotIndex + 1;\r\n if (!attachments[slotIndex]) attachments[slotIndex] = {};\r\n attachments[slotIndex][name] = attachment;\r\n }\r\n\r\n /** @return May be null. */\r\n getAttachment(slotIndex: number, name: string): Attachment {\r\n let dictionary = this.attachments[slotIndex];\r\n return dictionary ? dictionary[name] : null;\r\n }\r\n\r\n /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */\r\n attachAll(skeleton: Skeleton, oldSkin: Skin) {\r\n let slotIndex = 0;\r\n for (let i = 0; i < skeleton.slots.length; i++) {\r\n let slot = skeleton.slots[i];\r\n let slotAttachment = slot.getAttachment();\r\n if (slotAttachment && slotIndex < oldSkin.attachments.length) {\r\n let dictionary = oldSkin.attachments[slotIndex];\r\n for (let key in dictionary) {\r\n let skinAttachment: Attachment = dictionary[key];\r\n if (slotAttachment == skinAttachment) {\r\n let attachment = this.getAttachment(slotIndex, name);\r\n if (attachment != null) slot.setAttachment(attachment);\r\n break;\r\n }\r\n }\r\n }\r\n slotIndex++;\r\n }\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class Slot {\r\n //this is for PIXI\r\n currentMesh: any;\r\n currentSprite: any;\r\n meshes: any;\r\n currentMeshName: string;\r\n sprites: any;\r\n currentSpriteName: string;\r\n blendMode: number;\r\n //assign hack region a bit later\r\n tempRegion: TextureRegion;\r\n tempAttachment: Attachment;\r\n\r\n //canon\r\n data: SlotData;\r\n bone: Bone;\r\n color: Color;\r\n attachment: Attachment;\r\n private attachmentTime: number;\r\n attachmentVertices = new Array();\r\n\r\n constructor(data: SlotData, bone: Bone) {\r\n if (data == null) throw new Error(\"data cannot be null.\");\r\n if (bone == null) throw new Error(\"bone cannot be null.\");\r\n this.data = data;\r\n this.bone = bone;\r\n this.color = new Color();\r\n this.blendMode = data.blendMode;\r\n this.setToSetupPose();\r\n }\r\n\r\n /** @return May be null. */\r\n getAttachment(): Attachment {\r\n return this.attachment;\r\n }\r\n\r\n /** Sets the attachment and if it changed, resets {@link #getAttachmentTime()} and clears {@link #getAttachmentVertices()}.\r\n * @param attachment May be null. */\r\n setAttachment(attachment: Attachment) {\r\n if (this.attachment == attachment) return;\r\n this.attachment = attachment;\r\n this.attachmentTime = this.bone.skeleton.time;\r\n this.attachmentVertices.length = 0;\r\n }\r\n\r\n setAttachmentTime(time: number) {\r\n this.attachmentTime = this.bone.skeleton.time - time;\r\n }\r\n\r\n /** Returns the time since the attachment was set. */\r\n getAttachmentTime(): number {\r\n return this.bone.skeleton.time - this.attachmentTime;\r\n }\r\n\r\n setToSetupPose() {\r\n this.color.setFromColor(this.data.color);\r\n if (this.data.attachmentName == null)\r\n this.attachment = null;\r\n else {\r\n this.attachment = null;\r\n this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName));\r\n }\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class SlotData {\r\n index: number;\r\n name: string;\r\n boneData: BoneData;\r\n color = new Color(1, 1, 1, 1);\r\n attachmentName: string;\r\n blendMode: number;\r\n\r\n constructor(index: number, name: string, boneData: BoneData) {\r\n if (index < 0) throw new Error(\"index must be >= 0.\");\r\n if (name == null) throw new Error(\"name cannot be null.\");\r\n if (boneData == null) throw new Error(\"boneData cannot be null.\");\r\n this.index = index;\r\n this.name = name;\r\n this.boneData = boneData;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export abstract class Texture {\r\n protected _image: HTMLImageElement;\r\n\r\n constructor (image: HTMLImageElement) {\r\n this._image = image;\r\n }\r\n\r\n getImage (): HTMLImageElement {\r\n return this._image;\r\n }\r\n\r\n abstract setFilters (minFilter: TextureFilter, magFilter: TextureFilter): void;\r\n abstract setWraps (uWrap: TextureWrap, vWrap: TextureWrap): void;\r\n abstract dispose (): void;\r\n\r\n\r\n public static filterFromString (text: string): TextureFilter {\r\n switch (text.toLowerCase()) {\r\n case \"nearest\": return TextureFilter.Nearest;\r\n case \"linear\": return TextureFilter.Linear;\r\n case \"mipmap\": return TextureFilter.MipMap;\r\n case \"mipmapnearestnearest\": return TextureFilter.MipMapNearestNearest;\r\n case \"mipmaplinearnearest\": return TextureFilter.MipMapLinearNearest;\r\n case \"mipmapnearestlinear\": return TextureFilter.MipMapNearestLinear;\r\n case \"mipmaplinearlinear\": return TextureFilter.MipMapLinearLinear;\r\n default: throw new Error(`Unknown texture filter ${text}`);\r\n }\r\n }\r\n\r\n public static wrapFromString (text: string): TextureWrap {\r\n switch (text.toLowerCase()) {\r\n case \"mirroredtepeat\": return TextureWrap.MirroredRepeat;\r\n case \"clamptoedge\": return TextureWrap.ClampToEdge;\r\n case \"repeat\": return TextureWrap.Repeat;\r\n default: throw new Error(`Unknown texture wrap ${text}`);\r\n }\r\n }\r\n }\r\n\r\n export enum TextureFilter {\r\n Nearest = 9728, // WebGLRenderingContext.NEAREST\r\n Linear = 9729, // WebGLRenderingContext.LINEAR\r\n MipMap = 9987, // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR\r\n MipMapNearestNearest = 9984, // WebGLRenderingContext.NEAREST_MIPMAP_NEAREST\r\n MipMapLinearNearest = 9985, // WebGLRenderingContext.LINEAR_MIPMAP_NEAREST\r\n MipMapNearestLinear = 9986, // WebGLRenderingContext.NEAREST_MIPMAP_LINEAR\r\n MipMapLinearLinear = 9987 // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR\r\n }\r\n\r\n export enum TextureWrap {\r\n MirroredRepeat = 33648, // WebGLRenderingContext.MIRRORED_REPEAT\r\n ClampToEdge = 33071, // WebGLRenderingContext.CLAMP_TO_EDGE\r\n Repeat = 10497 // WebGLRenderingContext.REPEAT\r\n }\r\n\r\n export class TextureRegion {\r\n texture: PIXI.Texture;\r\n\r\n //thats for overrides\r\n size: PIXI.Rectangle = null;\r\n\r\n get width(): number {\r\n const tex = this.texture;\r\n if (PIXI.VERSION[0] == '3') {\r\n return (tex as any).crop.width;\r\n }\r\n if (tex.trim) {\r\n return tex.trim.width;\r\n }\r\n return tex.orig.width;\r\n }\r\n\r\n get height(): number {\r\n const tex = this.texture;\r\n if (PIXI.VERSION[0] == '3') {\r\n return (tex as any).crop.height;\r\n }\r\n if (tex.trim) {\r\n return tex.trim.height;\r\n }\r\n return tex.orig.height;\r\n }\r\n\r\n get u(): number {\r\n return (this.texture as any)._uvs.x0;\r\n }\r\n\r\n get v(): number {\r\n return (this.texture as any)._uvs.y0;\r\n }\r\n\r\n get u2(): number {\r\n return (this.texture as any)._uvs.x2;\r\n }\r\n\r\n get v2(): number {\r\n return (this.texture as any)._uvs.y2;\r\n }\r\n\r\n get offsetX(): number {\r\n const tex = this.texture;\r\n return tex.trim ? tex.trim.x : 0;\r\n }\r\n\r\n get offsetY(): number {\r\n console.warn(\"Deprecation Warning: @Hackerham: I guess, if you are using PIXI-SPINE ATLAS region.offsetY, you want a texture, right? Use region.texture from now on.\");\r\n return this.spineOffsetY;\r\n }\r\n\r\n get pixiOffsetY(): number {\r\n const tex = this.texture;\r\n return tex.trim ? tex.trim.y : 0;\r\n }\r\n\r\n get spineOffsetY(): number {\r\n var tex = this.texture;\r\n return this.originalHeight - this.height - (tex.trim ? tex.trim.y : 0);\r\n }\r\n\r\n get originalWidth(): number {\r\n var tex = this.texture;\r\n if (PIXI.VERSION[0] == '3') {\r\n if (tex.trim) {\r\n return tex.trim.width;\r\n }\r\n return (tex as any).crop.width;\r\n }\r\n return tex.orig.width;\r\n }\r\n\r\n get originalHeight(): number {\r\n const tex = this.texture;\r\n if (PIXI.VERSION[0] == '3') {\r\n if (tex.trim) {\r\n return tex.trim.height;\r\n }\r\n return (tex as any).crop.height;\r\n }\r\n return tex.orig.height;\r\n }\r\n\r\n get x(): number {\r\n return this.texture.frame.x;\r\n }\r\n\r\n get y(): number {\r\n return this.texture.frame.y;\r\n }\r\n\r\n get rotate(): boolean {\r\n return this.texture.rotate !== 0;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class TextureAtlas implements Disposable {\r\n pages = new Array();\r\n regions = new Array();\r\n\r\n constructor(atlasText?: string, textureLoader?: (path: string, loaderFunction: (tex: PIXI.BaseTexture) => any) => any, callback?: (obj: TextureAtlas) => any) {\r\n if (atlasText) {\r\n this.addSpineAtlas(atlasText, textureLoader, callback);\r\n }\r\n }\r\n\r\n addTexture(name: string, texture: PIXI.Texture) {\r\n let pages = this.pages;\r\n let page: TextureAtlasPage = null;\r\n for (var i = 0; i < pages.length; i++) {\r\n if (pages[i].baseTexture === texture.baseTexture) {\r\n page = pages[i];\r\n break;\r\n }\r\n }\r\n if (page === null) {\r\n page = new TextureAtlasPage();\r\n page.name = 'texturePage';\r\n var baseTexture = texture.baseTexture;\r\n page.width = baseTexture.realWidth;\r\n page.height = baseTexture.realHeight;\r\n page.baseTexture = baseTexture;\r\n //those fields are not relevant in Pixi\r\n page.minFilter = page.magFilter = TextureFilter.Nearest;\r\n page.uWrap = TextureWrap.ClampToEdge;\r\n page.vWrap = TextureWrap.ClampToEdge;\r\n pages.push(page);\r\n }\r\n var region = new TextureAtlasRegion();\r\n region.name = name;\r\n region.page = page;\r\n region.texture = texture;\r\n region.index = -1;\r\n this.regions.push(region);\r\n return region;\r\n }\r\n\r\n addTextureHash(textures: Map, stripExtension: boolean) {\r\n for (var key in textures) {\r\n if (textures.hasOwnProperty(key)) {\r\n this.addTexture(stripExtension && key.indexOf('.') !== -1 ? key.substr(0, key.lastIndexOf('.')) : key, textures[key]);\r\n }\r\n }\r\n }\r\n\r\n public addSpineAtlas(atlasText: string, textureLoader: (path: string, loaderFunction: (tex: PIXI.BaseTexture) => any) => any, callback: (obj: TextureAtlas) => any) {\r\n return this.load(atlasText, textureLoader, callback);\r\n }\r\n\r\n private load(atlasText: string, textureLoader: (path: string, loaderFunction: (tex: PIXI.BaseTexture) => any) => any, callback: (obj: TextureAtlas) => any) {\r\n if (textureLoader == null)\r\n throw new Error(\"textureLoader cannot be null.\");\r\n\r\n let reader = new TextureAtlasReader(atlasText);\r\n let tuple = new Array(4);\r\n let page: TextureAtlasPage = null;\r\n\r\n let iterateParser = () => {\r\n while (true) {\r\n let line = reader.readLine();\r\n if (line == null) {\r\n return callback && callback(this);\r\n }\r\n line = line.trim();\r\n if (line.length == 0)\r\n page = null;\r\n else if (!page) {\r\n page = new TextureAtlasPage();\r\n page.name = line;\r\n\r\n if (reader.readTuple(tuple) == 2) { // size is only optional for an atlas packed with an old TexturePacker.\r\n page.width = parseInt(tuple[0]);\r\n page.height = parseInt(tuple[1]);\r\n reader.readTuple(tuple);\r\n }\r\n // page.format = Format[tuple[0]]; we don't need format in WebGL\r\n\r\n reader.readTuple(tuple);\r\n page.minFilter = Texture.filterFromString(tuple[0]);\r\n page.magFilter = Texture.filterFromString(tuple[1]);\r\n\r\n let direction = reader.readValue();\r\n page.uWrap = TextureWrap.ClampToEdge;\r\n page.vWrap = TextureWrap.ClampToEdge;\r\n if (direction == \"x\")\r\n page.uWrap = TextureWrap.Repeat;\r\n else if (direction == \"y\")\r\n page.vWrap = TextureWrap.Repeat;\r\n else if (direction == \"xy\")\r\n page.uWrap = page.vWrap = TextureWrap.Repeat;\r\n\r\n textureLoader(line, (texture: PIXI.BaseTexture) => {\r\n page.baseTexture = texture;\r\n if (!texture.hasLoaded) {\r\n texture.width = page.width;\r\n texture.height = page.height;\r\n }\r\n this.pages.push(page);\r\n page.setFilters();\r\n\r\n if (!page.width || !page.height) {\r\n page.width = texture.realWidth;\r\n page.height = texture.realHeight;\r\n if (!page.width || !page.height) {\r\n console.log(\"ERROR spine atlas page \" + page.name + \": meshes wont work if you dont specify size in atlas (http://www.html5gamedevs.com/topic/18888-pixi-spines-and-meshes/?p=107121)\");\r\n }\r\n }\r\n iterateParser();\r\n });\r\n this.pages.push(page);\r\n break;\r\n } else {\r\n let region: TextureAtlasRegion = new TextureAtlasRegion();\r\n region.name = line;\r\n region.page = page;\r\n\r\n let rotate: number = reader.readValue() == \"true\" ? 6 : 0;\r\n\r\n reader.readTuple(tuple);\r\n let x = parseInt(tuple[0]);\r\n let y = parseInt(tuple[1]);\r\n\r\n reader.readTuple(tuple);\r\n let width = parseInt(tuple[0]);\r\n let height = parseInt(tuple[1]);\r\n\r\n let resolution = page.baseTexture.resolution;\r\n x /= resolution;\r\n y /= resolution;\r\n width /= resolution;\r\n height /= resolution;\r\n\r\n let frame = new PIXI.Rectangle(x, y, rotate ? height : width, rotate ? width : height);\r\n\r\n if (reader.readTuple(tuple) == 4) { // split is optional\r\n // region.splits = new Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3]));\r\n\r\n if (reader.readTuple(tuple) == 4) { // pad is optional, but only present with splits\r\n //region.pads = Vector.(parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3]));\r\n\r\n reader.readTuple(tuple);\r\n }\r\n }\r\n\r\n let originalWidth = parseInt(tuple[0]) / resolution;\r\n let originalHeight = parseInt(tuple[1]) / resolution;\r\n reader.readTuple(tuple);\r\n let offsetX = parseInt(tuple[0]) / resolution;\r\n let offsetY = parseInt(tuple[1]) / resolution;\r\n\r\n let orig = new PIXI.Rectangle(0, 0, originalWidth, originalHeight);\r\n let trim = new PIXI.Rectangle(offsetX, originalHeight - height - offsetY, width, height);\r\n\r\n //TODO: pixiv3 uses different frame/crop/trim\r\n\r\n if (PIXI.VERSION[0] == '4') {\r\n // pixi v4.0.0\r\n region.texture = new PIXI.Texture(region.page.baseTexture, frame, orig, trim, rotate);\r\n } else {\r\n // pixi v3.0.11\r\n var frame2 = new PIXI.Rectangle(x, y, width, height);\r\n var crop = frame2.clone();\r\n trim.width = originalWidth;\r\n trim.height = originalHeight;\r\n region.texture = new PIXI.Texture(region.page.baseTexture, frame2, crop, trim, rotate);\r\n }\r\n\r\n region.index = parseInt(reader.readValue());\r\n (region.texture as any)._updateUvs();\r\n\r\n this.regions.push(region);\r\n }\r\n }\r\n }\r\n\r\n iterateParser();\r\n }\r\n\r\n findRegion(name: string): TextureAtlasRegion {\r\n for (let i = 0; i < this.regions.length; i++) {\r\n if (this.regions[i].name == name) {\r\n return this.regions[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n dispose() {\r\n for (let i = 0; i < this.pages.length; i++) {\r\n this.pages[i].baseTexture.dispose();\r\n }\r\n }\r\n }\r\n\r\n class TextureAtlasReader {\r\n lines: Array;\r\n index: number = 0;\r\n\r\n constructor(text: string) {\r\n this.lines = text.split(/\\r\\n|\\r|\\n/);\r\n }\r\n\r\n readLine(): string {\r\n if (this.index >= this.lines.length)\r\n return null;\r\n return this.lines[this.index++];\r\n }\r\n\r\n readValue(): string {\r\n let line = this.readLine();\r\n let colon = line.indexOf(\":\");\r\n if (colon == -1)\r\n throw new Error(\"Invalid line: \" + line);\r\n return line.substring(colon + 1).trim();\r\n }\r\n\r\n readTuple(tuple: Array): number {\r\n let line = this.readLine();\r\n let colon = line.indexOf(\":\");\r\n if (colon == -1)\r\n throw new Error(\"Invalid line: \" + line);\r\n let i = 0, lastMatch = colon + 1;\r\n for (; i < 3; i++) {\r\n let comma = line.indexOf(\",\", lastMatch);\r\n if (comma == -1) break;\r\n tuple[i] = line.substr(lastMatch, comma - lastMatch).trim();\r\n lastMatch = comma + 1;\r\n }\r\n tuple[i] = line.substring(lastMatch).trim();\r\n return i + 1;\r\n }\r\n }\r\n\r\n export class TextureAtlasPage {\r\n name: string;\r\n minFilter: TextureFilter;\r\n magFilter: TextureFilter;\r\n uWrap: TextureWrap;\r\n vWrap: TextureWrap;\r\n baseTexture: PIXI.BaseTexture;\r\n width: number;\r\n height: number;\r\n\r\n public setFilters() {\r\n let tex = this.baseTexture;\r\n let filter = this.minFilter;\r\n if (filter == TextureFilter.Linear) {\r\n tex.scaleMode = PIXI.SCALE_MODES.LINEAR;\r\n } else if (this.minFilter == TextureFilter.Nearest) {\r\n tex.scaleMode = PIXI.SCALE_MODES.NEAREST;\r\n } else {\r\n tex.mipmap = true;\r\n if (filter == TextureFilter.MipMapNearestNearest) {\r\n tex.scaleMode = PIXI.SCALE_MODES.NEAREST;\r\n } else {\r\n tex.scaleMode = PIXI.SCALE_MODES.LINEAR;\r\n }\r\n }\r\n }\r\n }\r\n\r\n export class TextureAtlasRegion extends TextureRegion {\r\n page: TextureAtlasPage;\r\n name: string;\r\n index: number;\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class TransformConstraint implements Constraint {\r\n data: TransformConstraintData;\r\n bones: Array;\r\n target: Bone;\r\n rotateMix = 0;\r\n translateMix = 0;\r\n scaleMix = 0;\r\n shearMix = 0;\r\n temp = new Vector2();\r\n\r\n constructor(data: TransformConstraintData, skeleton: Skeleton) {\r\n if (data == null) throw new Error(\"data cannot be null.\");\r\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\r\n this.data = data;\r\n this.rotateMix = data.rotateMix;\r\n this.translateMix = data.translateMix;\r\n this.scaleMix = data.scaleMix;\r\n this.shearMix = data.shearMix;\r\n this.bones = new Array();\r\n for (let i = 0; i < data.bones.length; i++)\r\n this.bones.push(skeleton.findBone(data.bones[i].name));\r\n this.target = skeleton.findBone(data.target.name);\r\n }\r\n\r\n apply() {\r\n this.update();\r\n }\r\n\r\n update() {\r\n let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix;\r\n let target = this.target;\r\n let ta = target.matrix.a, tb = target.matrix.c, tc = target.matrix.b, td = target.matrix.d;\r\n let bones = this.bones;\r\n for (let i = 0, n = bones.length; i < n; i++) {\r\n let bone = bones[i];\r\n let m = bone.matrix;\r\n let modified = false;\r\n\r\n if (rotateMix != 0) {\r\n let a = m.a, b = m.c, c = m.b, d = m.d;\r\n let r = Math.atan2(tc, ta) - Math.atan2(c, a) + this.data.offsetRotation * MathUtils.degRad;\r\n if (r > MathUtils.PI)\r\n r -= MathUtils.PI2;\r\n else if (r < -MathUtils.PI)\r\n r += MathUtils.PI2;\r\n r *= rotateMix;\r\n let cos = Math.cos(r), sin = Math.sin(r);\r\n m.a = cos * a - sin * c;\r\n m.c = cos * b - sin * d;\r\n m.b = sin * a + cos * c;\r\n m.d = sin * b + cos * d;\r\n modified = true;\r\n }\r\n\r\n if (translateMix != 0) {\r\n let temp = this.temp;\r\n target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY));\r\n m.tx += (temp.x - m.tx) * translateMix;\r\n m.ty += (temp.y - m.ty) * translateMix;\r\n modified = true;\r\n }\r\n\r\n if (scaleMix > 0) {\r\n let s = Math.sqrt(m.a * m.a + m.b * m.b);\r\n let ts = Math.sqrt(ta * ta + tc * tc);\r\n if (s > 0.00001) s = (s + (ts - s + this.data.offsetScaleX) * scaleMix) / s;\r\n m.a *= s;\r\n m.b *= s;\r\n s = Math.sqrt(m.c * m.c + m.d * m.d);\r\n ts = Math.sqrt(tb * tb + td * td);\r\n if (s > 0.00001) s = (s + (ts - s + this.data.offsetScaleY) * scaleMix) / s;\r\n m.c *= s;\r\n m.d *= s;\r\n modified = true;\r\n }\r\n\r\n if (shearMix > 0) {\r\n let b = m.c, d = m.d;\r\n let by = Math.atan2(d, b);\r\n let r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(m.b, m.a));\r\n if (r > MathUtils.PI)\r\n r -= MathUtils.PI2;\r\n else if (r < -MathUtils.PI)\r\n r += MathUtils.PI2;\r\n r = by + (r + this.data.offsetShearY * MathUtils.degRad) * shearMix;\r\n let s = Math.sqrt(b * b + d * d);\r\n m.c = Math.cos(r) * s;\r\n m.d = Math.sin(r) * s;\r\n modified = true;\r\n }\r\n\r\n if (modified) bone.appliedValid = false;\r\n }\r\n }\r\n\r\n getOrder() {\r\n return this.data.order;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export class TransformConstraintData {\r\n name: string;\r\n order = 0;\r\n bones = new Array();\r\n target: BoneData;\r\n rotateMix = 0;\r\n translateMix = 0;\r\n scaleMix = 0;\r\n shearMix = 0;\r\n offsetRotation = 0;\r\n offsetX = 0;\r\n offsetY = 0;\r\n offsetScaleX = 0;\r\n offsetScaleY = 0;\r\n offsetShearY = 0;\r\n\r\n constructor(name: string) {\r\n if (name == null) throw new Error(\"name cannot be null.\");\r\n this.name = name;\r\n }\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License\r\n * Version 2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n export interface Updatable {\r\n update(): void;\r\n }\r\n}\r\n/******************************************************************************\r\n * Spine Runtimes Software License v2.5\r\n *\r\n * Copyright (c) 2013-2016, Esoteric Software\r\n * All rights reserved.\r\n *\r\n * You are granted a perpetual, non-exclusive, non-sublicensable, and\r\n * non-transferable license to use, install, execute, and perform the Spine\r\n * Runtimes software and derivative works solely for personal or internal\r\n * use. Without the written permission of Esoteric Software (see Section 2 of\r\n * the Spine Software License Agreement), you may not (a) modify, translate,\r\n * adapt, or develop new applications using the Spine Runtimes or otherwise\r\n * create derivative works or improvements of the Spine Runtimes or (b) remove,\r\n * delete, alter, or obscure any trademarks or any copyright, trademark, patent,\r\n * or other intellectual property or proprietary rights notices on or in the\r\n * Software, including any copy thereof. Redistributions in binary or source\r\n * form must include this license and terms.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\r\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF\r\n * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\r\n * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *****************************************************************************/\r\n\r\nnamespace pixi_spine.core {\r\n\texport interface Map {\r\n\t\t[key: string]: T;\r\n\t}\r\n\r\n\texport class IntSet {\r\n\t\tarray = new Array();\r\n\r\n\t\tadd (value: number): boolean {\r\n\t\t\tlet contains = this.contains(value);\r\n\t\t\tthis.array[value | 0] = value | 0;\r\n\t\t\treturn !contains;\r\n\t\t}\r\n\r\n\t\tcontains (value: number) {\r\n\t\t\treturn this.array[value | 0] != undefined;\r\n\t\t}\r\n\r\n\t\tremove (value: number) {\r\n\t\t\tthis.array[value | 0] = undefined;\r\n\t\t}\r\n\r\n\t\tclear () {\r\n\t\t\tthis.array.length = 0;\r\n\t\t}\r\n\t}\r\n\r\n\texport interface Disposable {\r\n\t\tdispose (): void;\r\n\t}\r\n\r\n\texport class Color {\r\n\t\tpublic static WHITE = new Color(1, 1, 1, 1);\r\n\t\tpublic static RED = new Color(1, 0, 0, 1);\r\n\t\tpublic static GREEN = new Color(0, 1, 0, 1);\r\n\t\tpublic static BLUE = new Color(0, 0, 1, 1);\r\n\t\tpublic static MAGENTA = new Color(1, 0, 1, 1);\r\n\r\n\t\tconstructor (public r: number = 0, public g: number = 0, public b: number = 0, public a: number = 0) {\r\n\t\t}\r\n\r\n\t\tset (r: number, g: number, b: number, a: number) {\r\n\t\t\tthis.r = r;\r\n\t\t\tthis.g = g;\r\n\t\t\tthis.b = b;\r\n\t\t\tthis.a = a;\r\n\t\t\tthis.clamp();\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tsetFromColor (c: Color) {\r\n\t\t\tthis.r = c.r;\r\n\t\t\tthis.g = c.g;\r\n\t\t\tthis.b = c.b;\r\n\t\t\tthis.a = c.a;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tsetFromString (hex: string) {\r\n\t\t\thex = hex.charAt(0) == '#' ? hex.substr(1) : hex;\r\n\t\t\tthis.r = parseInt(hex.substr(0, 2), 16) / 255.0;\r\n\t\t\tthis.g = parseInt(hex.substr(2, 2), 16) / 255.0;\r\n\t\t\tthis.b = parseInt(hex.substr(4, 2), 16) / 255.0;\r\n\t\t\tthis.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tadd (r: number, g: number, b: number, a: number) {\r\n\t\t\tthis.r += r;\r\n\t\t\tthis.g += g;\r\n\t\t\tthis.b += b;\r\n\t\t\tthis.a += a;\r\n\t\t\tthis.clamp();\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tclamp () {\r\n\t\t\tif (this.r < 0) this.r = 0;\r\n\t\t\telse if (this.r > 1) this.r = 1;\r\n\r\n\t\t\tif (this.g < 0) this.g = 0;\r\n\t\t\telse if (this.g > 1) this.g = 1;\r\n\r\n\t\t\tif (this.b < 0) this.b = 0;\r\n\t\t\telse if (this.b > 1) this.b = 1;\r\n\r\n\t\t\tif (this.a < 0) this.a = 0;\r\n\t\t\telse if (this.a > 1) this.a = 1;\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\texport class MathUtils {\r\n\t\tstatic PI = 3.1415927;\r\n\t\tstatic PI2 = MathUtils.PI * 2;\r\n\t\tstatic radiansToDegrees = 180 / MathUtils.PI;\r\n\t\tstatic radDeg = MathUtils.radiansToDegrees;\r\n\t\tstatic degreesToRadians = MathUtils.PI / 180;\r\n\t\tstatic degRad = MathUtils.degreesToRadians;\r\n\r\n\t\tstatic clamp (value: number, min: number, max: number) {\r\n\t\t\tif (value < min) return min;\r\n\t\t\tif (value > max) return max;\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tstatic cosDeg (degrees: number) {\r\n\t\t\treturn Math.cos(degrees * MathUtils.degRad);\r\n\t\t}\r\n\r\n\t\tstatic sinDeg (degrees: number) {\r\n\t\t\treturn Math.sin(degrees * MathUtils.degRad);\r\n\t\t}\r\n\r\n\t\tstatic signum (value: number): number {\r\n\t\t\treturn value > 0 ? 1 : value < 0 ? -1 : 0;\r\n\t\t}\r\n\r\n\t\tstatic toInt (x: number) {\r\n\t\t\treturn x > 0 ? Math.floor(x) : Math.ceil(x);\r\n\t\t}\r\n\r\n\t\tstatic cbrt (x: number) {\r\n\t\t\tvar y = Math.pow(Math.abs(x), 1/3);\r\n\t\t\treturn x < 0 ? -y : y;\r\n\t\t}\r\n\t}\r\n\r\n\texport class Utils {\r\n\t\tstatic SUPPORTS_TYPED_ARRAYS = typeof(Float32Array) !== \"undefined\";\r\n\r\n\t\tstatic arrayCopy (source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number) {\r\n\t\t\tfor (let i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) {\r\n\t\t\t\tdest[j] = source[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tstatic setArraySize (array: Array, size: number, value: any = 0): Array {\r\n\t\t\tlet oldSize = array.length;\r\n\t\t\tif (oldSize == size) return array;\r\n\t\t\tarray.length = size;\r\n\t\t\tif (oldSize < size) {\r\n\t\t\t\tfor (let i = oldSize; i < size; i++) array[i] = value;\r\n\t\t\t}\r\n\t\t\treturn array;\r\n\t\t}\r\n\r\n\t\tstatic ensureArrayCapacity (array: Array, size: number, value: any = 0): Array {\r\n\t\t\tif (array.length >= size) return array;\r\n\t\t\treturn Utils.setArraySize(array, size, value);\r\n\t\t}\r\n\r\n\t\tstatic newArray (size: number, defaultValue: T): Array {\r\n\t\t\tlet array = new Array(size);\r\n\t\t\tfor (let i = 0; i < size; i++) array[i] = defaultValue;\r\n\t\t\treturn array;\r\n\t\t}\r\n\r\n\t\tstatic newFloatArray (size: number): ArrayLike {\r\n\t\t\tif (Utils.SUPPORTS_TYPED_ARRAYS) {\r\n\t\t\t\treturn new Float32Array(size)\r\n\t\t\t} else {\r\n\t\t\t\t let array = new Array(size);\r\n\t\t\t\t for (let i = 0; i < array.length; i++) array[i] = 0;\r\n\t\t\t\t return array;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tstatic toFloatArray (array: Array) {\r\n\t\t\treturn Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array;\r\n\t\t}\r\n\t}\r\n\r\n\texport class DebugUtils {\r\n\t\tstatic logBones(skeleton: Skeleton) {\r\n\t\t\tfor (let i = 0; i < skeleton.bones.length; i++) {\r\n\t\t\t\tlet bone = skeleton.bones[i]\r\n let mat = bone.matrix\r\n\t\t\t\tconsole.log(bone.data.name + \", \" + mat.a + \", \" + mat.b + \", \" + mat.c + \", \" + mat.d + \", \" + mat.tx + \", \" + mat.ty);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport class Pool {\r\n\t\tprivate items = new Array();\r\n\t\tprivate instantiator: () => T;\r\n\r\n\t\tconstructor (instantiator: () => T) {\r\n\t\t\tthis.instantiator = instantiator;\r\n\t\t}\r\n\r\n\t\tobtain () {\r\n\t\t\treturn this.items.length > 0 ? this.items.pop() : this.instantiator();\r\n\t\t}\r\n\r\n\t\tfree (item: T) {\r\n\t\t\tif ((item as any).reset) (item as any).reset();\r\n\t\t\tthis.items.push(item);\r\n\t\t}\r\n\r\n\t\tfreeAll (items: ArrayLike) {\r\n\t\t\tfor (let i = 0; i < items.length; i++) {\r\n\t\t\t\tif ((items[i] as any).reset) (items[i] as any).reset();\r\n\t\t\t\tthis.items[i] = items[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tclear () {\r\n\t\t\tthis.items.length = 0;\r\n\t\t}\r\n\t}\r\n\r\n\texport class Vector2 {\r\n\t\tconstructor (public x = 0, public y = 0) {\r\n\t\t}\r\n\r\n\t\tset (x: number, y: number): Vector2 {\r\n\t\t\tthis.x = x;\r\n\t\t\tthis.y = y;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tlength () {\r\n\t\t\tlet x = this.x;\r\n\t\t\tlet y = this.y;\r\n\t\t\treturn Math.sqrt(x * x + y * y);\r\n\t\t}\r\n\r\n\t\tnormalize () {\r\n\t\t\tlet len = this.length();\r\n\t\t\tif (len != 0) {\r\n\t\t\t\tthis.x /= len;\r\n\t\t\t\tthis.y /= len;\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\texport class TimeKeeper {\r\n\t\tmaxDelta = 0.064;\r\n\t\tframesPerSecond = 0;\r\n\t\tdelta = 0;\r\n\t\ttotalTime = 0;\r\n\r\n\t\tprivate lastTime = Date.now() / 1000;\r\n\t\tprivate frameCount = 0;\r\n\t\tprivate frameTime = 0;\r\n\r\n\t\tupdate () {\r\n\t\t\tvar now = Date.now() / 1000;\r\n\t\t\tthis.delta = now - this.lastTime;\r\n\t\t\tthis.frameTime += this.delta;\r\n\t\t\tthis.totalTime += this.delta;\r\n\t\t\tif (this.delta > this.maxDelta) this.delta = this.maxDelta;\r\n\t\t\tthis.lastTime = now;\r\n\r\n\t\t\tthis.frameCount++;\r\n\t\t\tif (this.frameTime > 1) {\r\n\t\t\t\tthis.framesPerSecond = this.frameCount / this.frameTime;\r\n\t\t\t\tthis.frameTime = 0;\r\n\t\t\t\tthis.frameCount = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport interface ArrayLike {\r\n\t\tlength: number;\r\n\t\t[n: number]: T;\r\n\t}\r\n}\r\nnamespace pixi_spine {\r\n function isJson(resource: PIXI.loaders.Resource) {\r\n var TYPE = (PIXI.loaders.Resource as any).TYPE;\r\n if (TYPE) {\r\n return (resource as any).type === TYPE.JSON\r\n }\r\n return resource.isJson;\r\n }\r\n\r\n export function atlasParser() {\r\n return function (resource: PIXI.loaders.Resource, next: () => any) {\r\n // skip if no data, its not json, or it isn't atlas data\r\n if (!resource.data ||\r\n !isJson(resource) ||\r\n !resource.data.bones) {\r\n return next();\r\n }\r\n\r\n var metadataAtlas = resource.metadata ? resource.metadata.spineAtlas : null;\r\n if (metadataAtlas === false) {\r\n return next();\r\n }\r\n if (metadataAtlas && metadataAtlas.pages) {\r\n //its an atlas!\r\n var spineJsonParser = new core.SkeletonJson(new core.AtlasAttachmentLoader(metadataAtlas));\r\n var skeletonData = spineJsonParser.readSkeletonData(resource.data);\r\n\r\n resource.spineData = skeletonData;\r\n resource.spineAtlas = metadataAtlas;\r\n\r\n return next();\r\n }\r\n\r\n var metadataAtlasSuffix = '.atlas';\r\n if (resource.metadata && resource.metadata.spineAtlasSuffix) {\r\n metadataAtlasSuffix = resource.metadata.spineAtlasSuffix;\r\n }\r\n\r\n /**\r\n * use a bit of hackery to load the atlas file, here we assume that the .json, .atlas and .png files\r\n * that correspond to the spine file are in the same base URL and that the .json and .atlas files\r\n * have the same name\r\n */\r\n var atlasPath = resource.url.substr(0, resource.url.lastIndexOf('.')) + metadataAtlasSuffix;\r\n //remove the baseUrl\r\n atlasPath = atlasPath.replace(this.baseUrl, '');\r\n\r\n var atlasOptions = {\r\n crossOrigin: resource.crossOrigin,\r\n xhrType: PIXI.loaders.Resource.XHR_RESPONSE_TYPE.TEXT,\r\n metadata: resource.metadata ? resource.metadata.spineMetadata : null,\r\n parentResource: resource\r\n };\r\n var imageOptions = {\r\n crossOrigin: resource.crossOrigin,\r\n metadata: resource.metadata ? resource.metadata.imageMetadata : null,\r\n parentResource: resource\r\n };\r\n var baseUrl = resource.url.substr(0, resource.url.lastIndexOf('/') + 1);\r\n //remove the baseUrl\r\n baseUrl = baseUrl.replace(this.baseUrl, '');\r\n\r\n var adapter = imageLoaderAdapter(this, resource.name + '_atlas_page_', baseUrl, imageOptions);\r\n\r\n this.add(resource.name + '_atlas', atlasPath, atlasOptions, function (atlasResource: PIXI.loaders.Resource) {\r\n new core.TextureAtlas(atlasResource.xhr.responseText, adapter, function (spineAtlas) {\r\n var spineJsonParser = new core.SkeletonJson(new core.AtlasAttachmentLoader(spineAtlas));\r\n var skeletonData = spineJsonParser.readSkeletonData(resource.data);\r\n\r\n resource.spineData = skeletonData;\r\n resource.spineAtlas = spineAtlas;\r\n\r\n next();\r\n });\r\n });\r\n };\r\n }\r\n\r\n export function imageLoaderAdapter(loader: any, namePrefix: any, baseUrl: any, imageOptions: any) {\r\n if (baseUrl && baseUrl.lastIndexOf('/') !== (baseUrl.length - 1)) {\r\n baseUrl += '/';\r\n }\r\n return function (line: string, callback: (baseTexture: PIXI.BaseTexture) => any) {\r\n var name = namePrefix + line;\r\n var url = baseUrl + line;\r\n loader.add(name, url, imageOptions, (resource: PIXI.loaders.Resource) => {\r\n callback(resource.texture.baseTexture);\r\n });\r\n }\r\n }\r\n\r\n export function syncImageLoaderAdapter(baseUrl: any, crossOrigin: any) {\r\n if (baseUrl && baseUrl.lastIndexOf('/') !== (baseUrl.length - 1)) {\r\n baseUrl += '/';\r\n }\r\n return function (line: any, callback: any) {\r\n callback(PIXI.BaseTexture.fromImage(line, crossOrigin));\r\n }\r\n }\r\n\r\n PIXI.loaders.Loader.addPixiMiddleware(atlasParser);\r\n PIXI.loader.use(atlasParser());\r\n}\r\n/// \r\n\r\nnamespace pixi_spine {\r\n /* Esoteric Software SPINE wrapper for pixi.js */\r\n core.Bone.yDown = true;\r\n\r\n let tempRgb = [0, 0, 0];\r\n\r\n export class SpineSprite extends PIXI.Sprite {\r\n region: core.TextureRegion;\r\n\r\n constructor(tex: PIXI.Texture) {\r\n super(tex);\r\n }\r\n }\r\n\r\n export class SpineMesh extends PIXI.mesh.Mesh {\r\n region: core.TextureRegion;\r\n\r\n constructor(texture: PIXI.Texture, vertices?: Float32Array, uvs?: Float32Array, indices?: Uint16Array, drawMode?: number) {\r\n super(texture, vertices, uvs, indices, drawMode);\r\n }\r\n }\r\n\r\n /**\r\n * A class that enables the you to import and run your spine animations in pixi.\r\n * The Spine animation data needs to be loaded using either the Loader or a SpineLoader before it can be used by this class\r\n * See example 12 (http://www.goodboydigital.com/pixijs/examples/12/) to see a working example and check out the source\r\n *\r\n * ```js\r\n * var spineAnimation = new spine(spineData);\r\n * ```\r\n *\r\n * @class\r\n * @extends Container\r\n * @memberof spine\r\n * @param spineData {object} The spine data loaded from a spine atlas.\r\n */\r\n export class Spine extends PIXI.Container {\r\n static globalAutoUpdate: boolean = true;\r\n\r\n tintRgb: ArrayLike;\r\n spineData: core.SkeletonData;\r\n skeleton: core.Skeleton;\r\n stateData: core.AnimationStateData;\r\n state: core.AnimationState;\r\n slotContainers: Array;\r\n\r\n constructor(spineData: core.SkeletonData) {\r\n super();\r\n\r\n if (!spineData) {\r\n throw new Error('The spineData param is required.');\r\n }\r\n\r\n if ((typeof spineData) === \"string\") {\r\n throw new Error('spineData param cant be string. Please use spine.Spine.fromAtlas(\"YOUR_RESOURCE_NAME\") from now on.');\r\n }\r\n\r\n /**\r\n * The spineData object\r\n *\r\n * @member {object}\r\n */\r\n this.spineData = spineData;\r\n\r\n /**\r\n * A spine Skeleton object\r\n *\r\n * @member {object}\r\n */\r\n this.skeleton = new core.Skeleton(spineData);\r\n this.skeleton.updateWorldTransform();\r\n\r\n /**\r\n * A spine AnimationStateData object created from the spine data passed in the constructor\r\n *\r\n * @member {object}\r\n */\r\n this.stateData = new core.AnimationStateData(spineData);\r\n\r\n /**\r\n * A spine AnimationState object created from the spine AnimationStateData object\r\n *\r\n * @member {object}\r\n */\r\n this.state = new core.AnimationState(this.stateData);\r\n\r\n /**\r\n * An array of containers\r\n *\r\n * @member {Container[]}\r\n */\r\n this.slotContainers = [];\r\n\r\n for (var i = 0, n = this.skeleton.slots.length; i < n; i++) {\r\n var slot = this.skeleton.slots[i];\r\n var attachment: any = slot.attachment;\r\n var slotContainer = new PIXI.Container();\r\n this.slotContainers.push(slotContainer);\r\n this.addChild(slotContainer);\r\n\r\n if (attachment instanceof core.RegionAttachment) {\r\n var spriteName = (attachment.region as core.TextureAtlasRegion).name;\r\n var sprite = this.createSprite(slot, attachment, spriteName);\r\n slot.currentSprite = sprite;\r\n slot.currentSpriteName = spriteName;\r\n slotContainer.addChild(sprite);\r\n }\r\n else if (attachment instanceof core.MeshAttachment) {\r\n var mesh = this.createMesh(slot, attachment);\r\n slot.currentMesh = mesh;\r\n slot.currentMeshName = attachment.name;\r\n slotContainer.addChild(mesh);\r\n }\r\n else {\r\n continue;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Should the Spine object update its transforms\r\n *\r\n * @member {boolean}\r\n */\r\n this.autoUpdate = true;\r\n\r\n /**\r\n * The tint applied to all spine slots. This is a [r,g,b] value. A value of [1,1,1] will remove any tint effect.\r\n *\r\n * @member {number}\r\n * @memberof spine.Spine#\r\n */\r\n this.tintRgb = new Float32Array([1, 1, 1]);\r\n }\r\n\r\n /**\r\n * If this flag is set to true, the spine animation will be autoupdated every time\r\n * the object id drawn. The down side of this approach is that the delta time is\r\n * automatically calculated and you could miss out on cool effects like slow motion,\r\n * pause, skip ahead and the sorts. Most of these effects can be achieved even with\r\n * autoupdate enabled but are harder to achieve.\r\n *\r\n * @member {boolean}\r\n * @memberof spine.Spine#\r\n * @default true\r\n */\r\n get autoUpdate(): boolean {\r\n return (this.updateTransform === Spine.prototype.autoUpdateTransform);\r\n }\r\n\r\n set autoUpdate(value: boolean) {\r\n this.updateTransform = value ? Spine.prototype.autoUpdateTransform : PIXI.Container.prototype.updateTransform;\r\n }\r\n\r\n /**\r\n * The tint applied to the spine object. This is a hex value. A value of 0xFFFFFF will remove any tint effect.\r\n *\r\n * @member {number}\r\n * @memberof spine.Spine#\r\n * @default 0xFFFFFF\r\n */\r\n get tint(): number {\r\n return PIXI.utils.rgb2hex(this.tintRgb as any);\r\n }\r\n\r\n set tint(value: number) {\r\n this.tintRgb = PIXI.utils.hex2rgb(value, this.tintRgb as any);\r\n }\r\n\r\n /**\r\n * Update the spine skeleton and its animations by delta time (dt)\r\n *\r\n * @param dt {number} Delta time. Time by which the animation should be updated\r\n */\r\n update(dt: number) {\r\n this.state.update(dt);\r\n this.state.apply(this.skeleton);\r\n this.skeleton.updateWorldTransform();\r\n\r\n let drawOrder = this.skeleton.drawOrder;\r\n let slots = this.skeleton.slots;\r\n\r\n for (var i = 0, n = drawOrder.length; i < n; i++) {\r\n this.children[i] = this.slotContainers[drawOrder[i].data.index];\r\n }\r\n\r\n var r0 = this.tintRgb[0];\r\n var g0 = this.tintRgb[1];\r\n var b0 = this.tintRgb[2];\r\n\r\n for (i = 0, n = slots.length; i < n; i++) {\r\n var slot = slots[i];\r\n var attachment = slot.attachment;\r\n var slotContainer = this.slotContainers[i];\r\n\r\n if (!attachment) {\r\n slotContainer.visible = false;\r\n continue;\r\n }\r\n\r\n var attColor = (attachment as any).color;\r\n if (attachment instanceof core.RegionAttachment) {\r\n let region = (attachment as core.RegionAttachment).region;\r\n if (region) {\r\n if (slot.currentMesh) {\r\n slot.currentMesh.visible = false;\r\n slot.currentMesh = null;\r\n slot.currentMeshName = undefined;\r\n }\r\n let ar = region as core.TextureAtlasRegion;\r\n if (!slot.currentSpriteName || slot.currentSpriteName !== ar.name) {\r\n var spriteName = ar.name;\r\n if (slot.currentSprite) {\r\n slot.currentSprite.visible = false;\r\n }\r\n slot.sprites = slot.sprites || {};\r\n if (slot.sprites[spriteName] !== undefined) {\r\n slot.sprites[spriteName].visible = true;\r\n }\r\n else {\r\n var sprite = this.createSprite(slot, attachment, spriteName);\r\n slotContainer.addChild(sprite);\r\n }\r\n slot.currentSprite = slot.sprites[spriteName];\r\n slot.currentSpriteName = spriteName;\r\n }\r\n }\r\n\r\n if (slotContainer.transform) {\r\n //TODO: refactor this thing, switch it on and off for container\r\n let transform = slotContainer.transform;\r\n let transAny : any = transform;\r\n let lt: PIXI.Matrix;\r\n if (transAny.matrix2d) {\r\n //gameofbombs pixi fork, sorry for that, we really use it :)\r\n lt = transAny.matrix2d;\r\n transAny._dirtyVersion++;\r\n transAny.version = transAny._dirtyVersion;\r\n transAny.isStatic = true;\r\n transAny.operMode = 0;\r\n } else {\r\n if (transAny.position) {\r\n transform = new PIXI.TransformBase();\r\n slotContainer.transform = transform;\r\n }\r\n lt = transform.localTransform;\r\n }\r\n slot.bone.matrix.copy(lt);\r\n } else {\r\n //PIXI v3\r\n var lt = slotContainer.localTransform || new PIXI.Matrix();\r\n slot.bone.matrix.copy(lt);\r\n slotContainer.localTransform = lt;\r\n (slotContainer as any).displayObjectUpdateTransform = SlotContainerUpdateTransformV3;\r\n }\r\n tempRgb[0] = r0 * slot.color.r * attColor.r;\r\n tempRgb[1] = g0 * slot.color.g * attColor.g;\r\n tempRgb[2] = b0 * slot.color.b * attColor.b;\r\n slot.currentSprite.tint = PIXI.utils.rgb2hex(tempRgb);\r\n slot.currentSprite.blendMode = slot.blendMode;\r\n }\r\n else if (attachment instanceof core.MeshAttachment) {\r\n if (slot.currentSprite) {\r\n //TODO: refactor this thing, switch it on and off for container\r\n slot.currentSprite.visible = false;\r\n slot.currentSprite = null;\r\n slot.currentSpriteName = undefined;\r\n\r\n if (slotContainer.transform) {\r\n slotContainer.transform = new PIXI.TransformStatic();\r\n }\r\n else {\r\n slotContainer.localTransform = new PIXI.Matrix();\r\n (slotContainer as any).displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform;\r\n }\r\n }\r\n if (!slot.currentMeshName || slot.currentMeshName !== attachment.name) {\r\n var meshName = attachment.name;\r\n if (slot.currentMesh) {\r\n slot.currentMesh.visible = false;\r\n }\r\n\r\n slot.meshes = slot.meshes || {};\r\n\r\n if (slot.meshes[meshName] !== undefined) {\r\n slot.meshes[meshName].visible = true;\r\n }\r\n else {\r\n var mesh = this.createMesh(slot, attachment);\r\n slotContainer.addChild(mesh);\r\n }\r\n\r\n slot.currentMesh = slot.meshes[meshName];\r\n slot.currentMeshName = meshName;\r\n }\r\n (attachment as core.VertexAttachment).computeWorldVertices(slot, slot.currentMesh.vertices);\r\n if (PIXI.VERSION[0] !== '3') {\r\n // PIXI version 4\r\n // slot.currentMesh.dirty++;\r\n //only for PIXI v4\r\n var tintRgb = slot.currentMesh.tintRgb;\r\n tintRgb[0] = r0 * slot.color.r * attColor.r;\r\n tintRgb[1] = g0 * slot.color.g * attColor.g;\r\n tintRgb[2] = b0 * slot.color.b * attColor.b;\r\n }\r\n slot.currentMesh.blendMode = slot.blendMode;\r\n }\r\n else {\r\n slotContainer.visible = false;\r\n continue;\r\n }\r\n slotContainer.visible = true;\r\n\r\n slotContainer.alpha = slot.color.a;\r\n }\r\n };\r\n\r\n private setSpriteRegion(attachment: core.RegionAttachment, sprite: SpineSprite, region: core.TextureRegion) {\r\n sprite.region = region;\r\n sprite.texture = region.texture;\r\n if (!region.size) {\r\n sprite.scale.x = attachment.scaleX * attachment.width / region.originalWidth;\r\n sprite.scale.y = -attachment.scaleY * attachment.height / region.originalHeight;\r\n } else {\r\n //hacked!\r\n sprite.scale.x = region.size.width / region.originalWidth;\r\n sprite.scale.y = -region.size.height / region.originalHeight;\r\n }\r\n }\r\n\r\n private setMeshRegion(attachment: core.MeshAttachment, mesh: SpineMesh, region: core.TextureRegion) {\r\n mesh.region = region;\r\n mesh.texture = region.texture;\r\n attachment.updateUVs(region, mesh.uvs);\r\n // if (PIXI.VERSION[0] !== '3') {\r\n // PIXI version 4\r\n // mesh.indexDirty++;\r\n // } else {\r\n // PIXI version 3\r\n mesh.dirty++;\r\n // }\r\n }\r\n\r\n protected lastTime: number;\r\n\r\n /**\r\n * When autoupdate is set to yes this function is used as pixi's updateTransform function\r\n *\r\n * @private\r\n */\r\n autoUpdateTransform() {\r\n if (Spine.globalAutoUpdate) {\r\n this.lastTime = this.lastTime || Date.now();\r\n var timeDelta = (Date.now() - this.lastTime) * 0.001;\r\n this.lastTime = Date.now();\r\n this.update(timeDelta);\r\n } else {\r\n this.lastTime = 0;\r\n }\r\n\r\n PIXI.Container.prototype.updateTransform.call(this);\r\n };\r\n\r\n /**\r\n * Create a new sprite to be used with core.RegionAttachment\r\n *\r\n * @param slot {spine.Slot} The slot to which the attachment is parented\r\n * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent\r\n * @private\r\n */\r\n createSprite(slot: core.Slot, attachment: core.RegionAttachment, defName: string) {\r\n let region = attachment.region;\r\n if (slot.tempAttachment === attachment) {\r\n region = slot.tempRegion;\r\n slot.tempAttachment = null;\r\n slot.tempRegion = null;\r\n }\r\n var texture = region.texture;\r\n var sprite = new SpineSprite(texture);\r\n sprite.rotation = attachment.rotation * core.MathUtils.degRad;\r\n sprite.anchor.x = 0.5;\r\n sprite.anchor.y = 0.5;\r\n sprite.position.x = attachment.x;\r\n sprite.position.y = attachment.y;\r\n sprite.alpha = attachment.color.a;\r\n\r\n sprite.region = attachment.region;\r\n this.setSpriteRegion(attachment, sprite, attachment.region);\r\n\r\n slot.sprites = slot.sprites || {};\r\n slot.sprites[defName] = sprite;\r\n return sprite;\r\n };\r\n\r\n /**\r\n * Creates a Strip from the spine data\r\n * @param slot {spine.Slot} The slot to which the attachment is parented\r\n * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent\r\n * @private\r\n */\r\n createMesh(slot: core.Slot, attachment: core.MeshAttachment) {\r\n let region = attachment.region;\r\n if (slot.tempAttachment === attachment) {\r\n region = slot.tempRegion;\r\n slot.tempAttachment = null;\r\n slot.tempRegion = null;\r\n }\r\n let strip = new SpineMesh(\r\n region.texture,\r\n new Float32Array(attachment.regionUVs.length),\r\n new Float32Array(attachment.regionUVs.length),\r\n new Uint16Array(attachment.triangles),\r\n PIXI.mesh.Mesh.DRAW_MODES.TRIANGLES);\r\n\r\n strip.canvasPadding = 1.5;\r\n\r\n strip.alpha = attachment.color.a;\r\n\r\n strip.region = attachment.region;\r\n this.setMeshRegion(attachment, strip, region);\r\n\r\n slot.meshes = slot.meshes || {};\r\n slot.meshes[attachment.name] = strip;\r\n return strip;\r\n };\r\n\r\n /**\r\n * Changes texture in attachment in specific slot.\r\n *\r\n * PIXI runtime feature, it was made to satisfy our users.\r\n *\r\n * @param slotIndex {number}\r\n * @param [texture = null] {PIXI.Texture} If null, take default (original) texture\r\n * @param [size = null] {PIXI.Point} sometimes we need new size for region attachment, you can pass 'texture.orig' there\r\n * @returns {boolean} Success flag\r\n */\r\n hackTextureBySlotIndex(slotIndex: number, texture: PIXI.Texture = null, size: PIXI.Rectangle = null) {\r\n var slot = this.skeleton.slots[slotIndex];\r\n if (!slot) {\r\n return false;\r\n }\r\n var attachment: any = slot.attachment;\r\n var region: core.TextureRegion = attachment.region;\r\n if (texture) {\r\n region = new core.TextureRegion();\r\n region.texture = texture;\r\n region.size = size;\r\n }\r\n if (slot.currentSprite && slot.currentSprite.region != region) {\r\n this.setSpriteRegion(attachment, slot.currentSprite, region);\r\n slot.currentSprite.region = region;\r\n } else if (slot.currentMesh && slot.currentMesh.region != region) {\r\n this.setMeshRegion(attachment, slot.currentMesh, region);\r\n } else {\r\n slot.tempRegion = region;\r\n slot.tempAttachment = attachment;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Changes texture in attachment in specific slot.\r\n *\r\n * PIXI runtime feature, it was made to satisfy our users.\r\n *\r\n * @param slotName {string}\r\n * @param [texture = null] {PIXI.Texture} If null, take default (original) texture\r\n * @param [size = null] {PIXI.Point} sometimes we need new size for region attachment, you can pass 'texture.orig' there\r\n * @returns {boolean} Success flag\r\n */\r\n hackTextureBySlotName = function (slotName: string, texture: PIXI.Texture = null, size: PIXI.Rectangle = null) {\r\n var index = this.skeleton.findSlotIndex(slotName);\r\n if (index == -1) {\r\n return false;\r\n }\r\n return this.hackTextureBySlotIndex(index, texture, size);\r\n }\r\n }\r\n\r\n function SlotContainerUpdateTransformV3() {\r\n var pt = this.parent.worldTransform;\r\n var wt = this.worldTransform;\r\n var lt = this.localTransform;\r\n wt.a = lt.a * pt.a + lt.b * pt.c;\r\n wt.b = lt.a * pt.b + lt.b * pt.d;\r\n wt.c = lt.c * pt.a + lt.d * pt.c;\r\n wt.d = lt.c * pt.b + lt.d * pt.d;\r\n wt.tx = lt.tx * pt.a + lt.ty * pt.c + pt.tx;\r\n wt.ty = lt.tx * pt.b + lt.ty * pt.d + pt.ty;\r\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\r\n this._currentBounds = null;\r\n }\r\n}\r\n(PIXI as any).spine = pixi_spine;\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 136d855f..2d2cb30e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pixi-spine", - "version": "1.3.8", + "version": "1.4.0", "description": "Spine implementation for pixi v^3 and v^4", "author": "Mat Groves", "contributors": [