pixi_spine 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixi-spine.js","sourceRoot":"","sources":["../src/core/Animation.ts","../src/core/AnimationState.ts","../src/core/AnimationStateData.ts","../src/core/AtlasAttachmentLoader.ts","../src/core/BlendMode.ts","../src/core/Bone.ts","../src/core/BoneData.ts","../src/core/Constraint.ts","../src/core/Event.ts","../src/core/EventData.ts","../src/core/IkConstraint.ts","../src/core/IkConstraintData.ts","../src/core/PathConstraint.ts","../src/core/PathConstraintData.ts","../src/core/Skeleton.ts","../src/core/SkeletonBounds.ts","../src/core/SkeletonClipping.ts","../src/core/SkeletonData.ts","../src/core/SkeletonJson.ts","../src/core/Skin.ts","../src/core/Slot.ts","../src/core/SlotData.ts","../src/core/Texture.ts","../src/core/TextureAtlas.ts","../src/core/TransformConstraint.ts","../src/core/TransformConstraintData.ts","../src/core/Triangulator.ts","../src/core/Updatable.ts","../src/core/Utils.ts","../src/core/VertexEffect.ts","../src/core/attachments/Attachment.ts","../src/core/attachments/AttachmentLoader.ts","../src/core/attachments/AttachmentType.ts","../src/core/attachments/BoundingBoxAttachment.ts","../src/core/attachments/ClippingAttachment.ts","../src/core/attachments/MeshAttachment.ts","../src/core/attachments/PathAttachment.ts","../src/core/attachments/PointAttachment.ts","../src/core/attachments/RegionAttachment.ts","../src/core/vertexeffects/JitterEffect.ts","../src/core/vertexeffects/SwirlEffect.ts","../src/polyfills.ts","../src/Spine.ts","../src/exporter.ts","../src/loaders.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 export class Animation {\n name: string;\n timelines: Array<Timeline>;\n duration: number;\n\n constructor (name: string, timelines: Array<Timeline>, duration: number) {\n if (name == null) throw new Error(\"name cannot be null.\");\n if (timelines == null) throw new Error(\"timelines cannot be null.\");\n this.name = name;\n this.timelines = timelines;\n this.duration = duration;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n\n if (loop && this.duration != 0) {\n time %= this.duration;\n if (lastTime > 0) lastTime %= this.duration;\n }\n\n let timelines = this.timelines;\n for (let i = 0, n = timelines.length; i < n; i++)\n timelines[i].apply(skeleton, lastTime, time, events, alpha, pose, direction);\n }\n\n static binarySearch (values: ArrayLike<number>, target: number, step: number = 1) {\n let low = 0;\n let high = values.length / step - 2;\n if (high == 0) return step;\n let current = high >>> 1;\n while (true) {\n if (values[(current + 1) * step] <= target)\n low = current + 1;\n else\n high = current;\n if (low == high) return (low + 1) * step;\n current = (low + high) >>> 1;\n }\n }\n\n static linearSearch (values: ArrayLike<number>, target: number, step: number) {\n for (let i = 0, last = values.length - step; i <= last; i += step)\n if (values[i] > target) return i;\n return -1;\n }\n }\n\n export interface Timeline {\n apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection): void;\n getPropertyId (): number;\n }\n\n export enum MixPose {\n setup,\n current,\n currentLayered\n }\n\n export enum MixDirection {\n in, out\n }\n\n export enum TimelineType {\n rotate, translate, scale, shear,\n attachment, color, deform,\n event, drawOrder,\n ikConstraint, transformConstraint,\n pathConstraintPosition, pathConstraintSpacing, pathConstraintMix,\n twoColor\n }\n\n export abstract class CurveTimeline implements Timeline {\n static LINEAR = 0; static STEPPED = 1; static BEZIER = 2;\n static BEZIER_SIZE = 10 * 2 - 1;\n\n private curves: ArrayLike<number>; // type, x, y, ...\n\n abstract getPropertyId(): number;\n\n constructor (frameCount: number) {\n if (frameCount <= 0) throw new Error(\"frameCount must be > 0: \" + frameCount);\n this.curves = Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE);\n }\n\n getFrameCount () {\n return this.curves.length / CurveTimeline.BEZIER_SIZE + 1;\n }\n\n setLinear (frameIndex: number) {\n this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR;\n }\n\n setStepped (frameIndex: number) {\n this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED;\n }\n\n getCurveType (frameIndex: number): number {\n let index = frameIndex * CurveTimeline.BEZIER_SIZE;\n if (index == this.curves.length) return CurveTimeline.LINEAR;\n let type = this.curves[index];\n if (type == CurveTimeline.LINEAR) return CurveTimeline.LINEAR;\n if (type == CurveTimeline.STEPPED) return CurveTimeline.STEPPED;\n return CurveTimeline.BEZIER;\n }\n\n /** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next.\n * 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 * the difference between the keyframe's values. */\n setCurve (frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number) {\n let tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03;\n let dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006;\n let ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy;\n let dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667;\n\n let i = frameIndex * CurveTimeline.BEZIER_SIZE;\n let curves = this.curves;\n curves[i++] = CurveTimeline.BEZIER;\n\n let x = dfx, y = dfy;\n for (let n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dfx += ddfx;\n dfy += ddfy;\n ddfx += dddfx;\n ddfy += dddfy;\n x += dfx;\n y += dfy;\n }\n }\n\n getCurvePercent (frameIndex: number, percent: number) {\n percent = MathUtils.clamp(percent, 0, 1);\n let curves = this.curves;\n let i = frameIndex * CurveTimeline.BEZIER_SIZE;\n let type = curves[i];\n if (type == CurveTimeline.LINEAR) return percent;\n if (type == CurveTimeline.STEPPED) return 0;\n i++;\n let x = 0;\n for (let start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) {\n x = curves[i];\n if (x >= percent) {\n let prevX: number, prevY: number;\n if (i == start) {\n prevX = 0;\n prevY = 0;\n } else {\n prevX = curves[i - 2];\n prevY = curves[i - 1];\n }\n return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX);\n }\n }\n let y = curves[i - 1];\n return y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1.\n }\n\n abstract apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection): void;\n }\n\n export class RotateTimeline extends CurveTimeline {\n static ENTRIES = 2;\n static PREV_TIME = -2; static PREV_ROTATION = -1;\n static ROTATION = 1;\n\n boneIndex: number;\n frames: ArrayLike<number>; // time, degrees, ...\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount << 1);\n }\n\n getPropertyId () {\n return (TimelineType.rotate << 24) + this.boneIndex;\n }\n\n /** Sets the time and angle of the specified keyframe. */\n setFrame (frameIndex: number, time: number, degrees: number) {\n frameIndex <<= 1;\n this.frames[frameIndex] = time;\n this.frames[frameIndex + RotateTimeline.ROTATION] = degrees;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n\n let bone = skeleton.bones[this.boneIndex];\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n bone.rotation = bone.data.rotation;\n return;\n case MixPose.current:\n let r = bone.data.rotation - bone.rotation;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n bone.rotation += r * alpha;\n }\n return;\n }\n\n if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { // Time is after last frame.\n if (pose == MixPose.setup)\n bone.rotation = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] * alpha;\n else {\n let r = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; // Wrap within -180 and 180.\n bone.rotation += r * alpha;\n }\n return;\n }\n\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES);\n let prevRotation = frames[frame + RotateTimeline.PREV_ROTATION];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent((frame >> 1) - 1,\n 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime));\n\n let r = frames[frame + RotateTimeline.ROTATION] - prevRotation;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n r = prevRotation + r * percent;\n if (pose == MixPose.setup) {\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n bone.rotation = bone.data.rotation + r * alpha;\n } else {\n r = bone.data.rotation + r - bone.rotation;\n r -= (16384 - ((16384.499999999996 - r / 360) |0)) * 360;\n bone.rotation += r * alpha;\n }\n }\n }\n\n export class TranslateTimeline extends CurveTimeline {\n static ENTRIES = 3;\n static PREV_TIME = -3; static PREV_X = -2; static PREV_Y = -1;\n static X = 1; static Y = 2;\n\n boneIndex: number;\n frames: ArrayLike<number>; // time, x, y, ...\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES);\n }\n\n getPropertyId () {\n return (TimelineType.translate << 24) + this.boneIndex;\n }\n\n /** Sets the time and value of the specified keyframe. */\n setFrame (frameIndex: number, time: number, x: number, y: number) {\n frameIndex *= TranslateTimeline.ENTRIES;\n this.frames[frameIndex] = time;\n this.frames[frameIndex + TranslateTimeline.X] = x;\n this.frames[frameIndex + TranslateTimeline.Y] = y;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n\n let bone = skeleton.bones[this.boneIndex];\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n bone.x = bone.data.x;\n bone.y = bone.data.y;\n return;\n case MixPose.current:\n bone.x += (bone.data.x - bone.x) * alpha;\n bone.y += (bone.data.y - bone.y) * alpha;\n }\n return;\n }\n\n let x = 0, y = 0;\n if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { // Time is after last frame.\n x = frames[frames.length + TranslateTimeline.PREV_X];\n y = frames[frames.length + TranslateTimeline.PREV_Y];\n } else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES);\n x = frames[frame + TranslateTimeline.PREV_X];\n y = frames[frame + TranslateTimeline.PREV_Y];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime));\n\n x += (frames[frame + TranslateTimeline.X] - x) * percent;\n y += (frames[frame + TranslateTimeline.Y] - y) * percent;\n }\n if (pose == MixPose.setup) {\n bone.x = bone.data.x + x * alpha;\n bone.y = bone.data.y + y * alpha;\n } else {\n bone.x += (bone.data.x + x - bone.x) * alpha;\n bone.y += (bone.data.y + y - bone.y) * alpha;\n }\n }\n }\n\n export class ScaleTimeline extends TranslateTimeline {\n constructor (frameCount: number) {\n super(frameCount);\n }\n\n getPropertyId () {\n return (TimelineType.scale << 24) + this.boneIndex;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n\n let bone = skeleton.bones[this.boneIndex];\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n bone.scaleX = bone.data.scaleX;\n bone.scaleY = bone.data.scaleY;\n return;\n case MixPose.current:\n bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha;\n bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha;\n }\n return;\n }\n\n let x = 0, y = 0;\n if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { // Time is after last frame.\n x = frames[frames.length + ScaleTimeline.PREV_X] * bone.data.scaleX;\n y = frames[frames.length + ScaleTimeline.PREV_Y] * bone.data.scaleY;\n } else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES);\n x = frames[frame + ScaleTimeline.PREV_X];\n y = frames[frame + ScaleTimeline.PREV_Y];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime));\n\n x = (x + (frames[frame + ScaleTimeline.X] - x) * percent) * bone.data.scaleX;\n y = (y + (frames[frame + ScaleTimeline.Y] - y) * percent) * bone.data.scaleY;\n }\n if (alpha == 1) {\n bone.scaleX = x;\n bone.scaleY = y;\n } else {\n let bx = 0, by = 0;\n if (pose == MixPose.setup) {\n bx = bone.data.scaleX;\n by = bone.data.scaleY;\n } else {\n bx = bone.scaleX;\n by = bone.scaleY;\n }\n // Mixing out uses sign of setup or current pose, else use sign of key.\n if (direction == MixDirection.out) {\n x = Math.abs(x) * MathUtils.signum(bx);\n y = Math.abs(y) * MathUtils.signum(by);\n } else {\n bx = Math.abs(bx) * MathUtils.signum(x);\n by = Math.abs(by) * MathUtils.signum(y);\n }\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n }\n }\n }\n\n export class ShearTimeline extends TranslateTimeline {\n constructor (frameCount: number) {\n super(frameCount);\n }\n\n getPropertyId () {\n return (TimelineType.shear << 24) + this.boneIndex;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n\n let bone = skeleton.bones[this.boneIndex];\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n bone.shearX = bone.data.shearX;\n bone.shearY = bone.data.shearY;\n return;\n case MixPose.current:\n bone.shearX += (bone.data.shearX - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY - bone.shearY) * alpha;\n }\n return;\n }\n\n let x = 0, y = 0;\n if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { // Time is after last frame.\n x = frames[frames.length + ShearTimeline.PREV_X];\n y = frames[frames.length + ShearTimeline.PREV_Y];\n } else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES);\n x = frames[frame + ShearTimeline.PREV_X];\n y = frames[frame + ShearTimeline.PREV_Y];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime));\n\n x = x + (frames[frame + ShearTimeline.X] - x) * percent;\n y = y + (frames[frame + ShearTimeline.Y] - y) * percent;\n }\n if (pose == MixPose.setup) {\n bone.shearX = bone.data.shearX + x * alpha;\n bone.shearY = bone.data.shearY + y * alpha;\n } else {\n bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n }\n }\n }\n\n export class ColorTimeline extends CurveTimeline {\n static ENTRIES = 5;\n static PREV_TIME = -5; static PREV_R = -4; static PREV_G = -3; static PREV_B = -2; static PREV_A = -1;\n static R = 1; static G = 2; static B = 3; static A = 4;\n\n slotIndex: number;\n frames: ArrayLike<number>; // time, r, g, b, a, ...\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES);\n }\n\n getPropertyId () {\n return (TimelineType.color << 24) + this.slotIndex;\n }\n\n /** Sets the time and value of the specified keyframe. */\n setFrame (frameIndex: number, time: number, r: number, g: number, b: number, a: number) {\n frameIndex *= ColorTimeline.ENTRIES;\n this.frames[frameIndex] = time;\n this.frames[frameIndex + ColorTimeline.R] = r;\n this.frames[frameIndex + ColorTimeline.G] = g;\n this.frames[frameIndex + ColorTimeline.B] = b;\n this.frames[frameIndex + ColorTimeline.A] = a;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let slot = skeleton.slots[this.slotIndex];\n let frames = this.frames;\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n slot.color.setFromColor(slot.data.color);\n return;\n case MixPose.current:\n let color = slot.color, setup = slot.data.color;\n color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha,\n (setup.a - color.a) * alpha);\n }\n return;\n }\n\n let r = 0, g = 0, b = 0, a = 0;\n if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { // Time is after last frame.\n let i = frames.length;\n r = frames[i + ColorTimeline.PREV_R];\n g = frames[i + ColorTimeline.PREV_G];\n b = frames[i + ColorTimeline.PREV_B];\n a = frames[i + ColorTimeline.PREV_A];\n } else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES);\n r = frames[frame + ColorTimeline.PREV_R];\n g = frames[frame + ColorTimeline.PREV_G];\n b = frames[frame + ColorTimeline.PREV_B];\n a = frames[frame + ColorTimeline.PREV_A];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime));\n\n r += (frames[frame + ColorTimeline.R] - r) * percent;\n g += (frames[frame + ColorTimeline.G] - g) * percent;\n b += (frames[frame + ColorTimeline.B] - b) * percent;\n a += (frames[frame + ColorTimeline.A] - a) * percent;\n }\n if (alpha == 1)\n slot.color.set(r, g, b, a);\n else {\n let color = slot.color;\n if (pose == MixPose.setup) color.setFromColor(slot.data.color);\n color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha);\n }\n }\n }\n\n export class TwoColorTimeline extends CurveTimeline {\n static ENTRIES = 8;\n static PREV_TIME = -8; static PREV_R = -7; static PREV_G = -6; static PREV_B = -5; static PREV_A = -4;\n static PREV_R2 = -3; static PREV_G2 = -2; static PREV_B2 = -1;\n static R = 1; static G = 2; static B = 3; static A = 4; static R2 = 5; static G2 = 6; static B2 = 7;\n\n slotIndex: number;\n frames: ArrayLike<number>; // time, r, g, b, a, r2, g2, b2, ...\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount * TwoColorTimeline.ENTRIES);\n }\n\n getPropertyId () {\n return (TimelineType.twoColor << 24) + this.slotIndex;\n }\n\n /** Sets the time and value of the specified keyframe. */\n setFrame (frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number) {\n frameIndex *= TwoColorTimeline.ENTRIES;\n this.frames[frameIndex] = time;\n this.frames[frameIndex + TwoColorTimeline.R] = r;\n this.frames[frameIndex + TwoColorTimeline.G] = g;\n this.frames[frameIndex + TwoColorTimeline.B] = b;\n this.frames[frameIndex + TwoColorTimeline.A] = a;\n this.frames[frameIndex + TwoColorTimeline.R2] = r2;\n this.frames[frameIndex + TwoColorTimeline.G2] = g2;\n this.frames[frameIndex + TwoColorTimeline.B2] = b2;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let slot = skeleton.slots[this.slotIndex];\n let frames = this.frames;\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n slot.color.setFromColor(slot.data.color);\n slot.darkColor.setFromColor(slot.data.darkColor);\n return;\n case MixPose.current:\n let light = slot.color, dark = slot.darkColor, setupLight = slot.data.color, setupDark = slot.data.darkColor;\n light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha,\n (setupLight.a - light.a) * alpha);\n dark.add((setupDark.r - dark.r) * alpha, (setupDark.g - dark.g) * alpha, (setupDark.b - dark.b) * alpha, 0);\n }\n return;\n }\n\n let r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n if (time >= frames[frames.length - TwoColorTimeline.ENTRIES]) { // Time is after last frame.\n let i = frames.length;\n r = frames[i + TwoColorTimeline.PREV_R];\n g = frames[i + TwoColorTimeline.PREV_G];\n b = frames[i + TwoColorTimeline.PREV_B];\n a = frames[i + TwoColorTimeline.PREV_A];\n r2 = frames[i + TwoColorTimeline.PREV_R2];\n g2 = frames[i + TwoColorTimeline.PREV_G2];\n b2 = frames[i + TwoColorTimeline.PREV_B2];\n } else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, TwoColorTimeline.ENTRIES);\n r = frames[frame + TwoColorTimeline.PREV_R];\n g = frames[frame + TwoColorTimeline.PREV_G];\n b = frames[frame + TwoColorTimeline.PREV_B];\n a = frames[frame + TwoColorTimeline.PREV_A];\n r2 = frames[frame + TwoColorTimeline.PREV_R2];\n g2 = frames[frame + TwoColorTimeline.PREV_G2];\n b2 = frames[frame + TwoColorTimeline.PREV_B2];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / TwoColorTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + TwoColorTimeline.PREV_TIME] - frameTime));\n\n r += (frames[frame + TwoColorTimeline.R] - r) * percent;\n g += (frames[frame + TwoColorTimeline.G] - g) * percent;\n b += (frames[frame + TwoColorTimeline.B] - b) * percent;\n a += (frames[frame + TwoColorTimeline.A] - a) * percent;\n r2 += (frames[frame + TwoColorTimeline.R2] - r2) * percent;\n g2 += (frames[frame + TwoColorTimeline.G2] - g2) * percent;\n b2 += (frames[frame + TwoColorTimeline.B2] - b2) * percent;\n }\n if (alpha == 1) {\n slot.color.set(r, g, b, a);\n slot.darkColor.set(r2, g2, b2, 1);\n } else {\n let light = slot.color, dark = slot.darkColor;\n if (pose == MixPose.setup) {\n light.setFromColor(slot.data.color);\n dark.setFromColor(slot.data.darkColor);\n }\n light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha);\n dark.add((r2 - dark.r) * alpha, (g2 - dark.g) * alpha, (b2 - dark.b) * alpha, 0);\n }\n }\n }\n\n export class AttachmentTimeline implements Timeline {\n slotIndex: number;\n frames: ArrayLike<number> // time, ...\n attachmentNames: Array<string>;\n\n constructor (frameCount: number) {\n this.frames = Utils.newFloatArray(frameCount);\n this.attachmentNames = new Array<string>(frameCount);\n }\n\n getPropertyId () {\n return (TimelineType.attachment << 24) + this.slotIndex;\n }\n\n getFrameCount () {\n return this.frames.length;\n }\n\n /** Sets the time and value of the specified keyframe. */\n setFrame (frameIndex: number, time: number, attachmentName: string) {\n this.frames[frameIndex] = time;\n this.attachmentNames[frameIndex] = attachmentName;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let slot = skeleton.slots[this.slotIndex];\n if (direction == MixDirection.out && pose == MixPose.setup) {\n let attachmentName = slot.data.attachmentName;\n slot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n return;\n }\n\n let frames = this.frames;\n if (time < frames[0]) {\n if (pose == MixPose.setup) {\n let attachmentName = slot.data.attachmentName;\n slot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n }\n return;\n }\n\n let frameIndex = 0;\n if (time >= frames[frames.length - 1]) // Time is after last frame.\n frameIndex = frames.length - 1;\n else\n frameIndex = Animation.binarySearch(frames, time, 1) - 1;\n\n let attachmentName = this.attachmentNames[frameIndex];\n skeleton.slots[this.slotIndex]\n .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n }\n }\n\n let zeros : ArrayLike<number> = null;\n\n export class DeformTimeline extends CurveTimeline {\n slotIndex: number;\n attachment: VertexAttachment;\n frames: ArrayLike<number>; // time, ...\n frameVertices: Array<ArrayLike<number>>;\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount);\n this.frameVertices = new Array<ArrayLike<number>>(frameCount);\n if (zeros == null) zeros = Utils.newFloatArray(64);\n }\n\n getPropertyId () {\n return (TimelineType.deform << 27) + + this.attachment.id + this.slotIndex;\n }\n\n /** Sets the time of the specified keyframe. */\n setFrame (frameIndex: number, time: number, vertices: ArrayLike<number>) {\n this.frames[frameIndex] = time;\n this.frameVertices[frameIndex] = vertices;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let slot: Slot = skeleton.slots[this.slotIndex];\n let slotAttachment: Attachment = slot.getAttachment();\n if (!(slotAttachment instanceof VertexAttachment) || !(<VertexAttachment>slotAttachment).applyDeform(this.attachment)) return;\n\n let verticesArray: Array<number> = slot.attachmentVertices;\n if (verticesArray.length == 0) alpha = 1;\n\n let frameVertices = this.frameVertices;\n let vertexCount = frameVertices[0].length;\n\n let frames = this.frames;\n if (time < frames[0]) {\n let vertexAttachment = <VertexAttachment>slotAttachment;\n switch (pose) {\n case MixPose.setup:\n verticesArray.length = 0;\n return;\n case MixPose.current:\n if (alpha == 1) {\n verticesArray.length = 0;\n break;\n }\n let vertices: Array<number> = Utils.setArraySize(verticesArray, vertexCount);\n if (vertexAttachment.bones == null) {\n // Unweighted vertex positions.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++)\n vertices[i] += (setupVertices[i] - vertices[i]) * alpha;\n } else {\n // Weighted deform offsets.\n alpha = 1 - alpha;\n for (let i = 0; i < vertexCount; i++)\n vertices[i] *= alpha;\n }\n }\n return;\n }\n\n let vertices = Utils.setArraySize(verticesArray, vertexCount);\n if (time >= frames[frames.length - 1]) { // Time is after last frame.\n let lastVertices = frameVertices[frames.length - 1];\n if (alpha == 1) {\n Utils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount);\n } else if (pose == MixPose.setup) {\n let vertexAttachment = slotAttachment as VertexAttachment;\n if (vertexAttachment.bones == null) {\n // Unweighted vertex positions, with alpha.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++) {\n let setup = setupVertices[i];\n vertices[i] = setup + (lastVertices[i] - setup) * alpha;\n }\n } else {\n // Weighted deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++)\n vertices[i] = lastVertices[i] * alpha;\n }\n } else {\n for (let i = 0; i < vertexCount; i++)\n vertices[i] += (lastVertices[i] - vertices[i]) * alpha;\n }\n return;\n }\n\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time);\n let prevVertices = frameVertices[frame - 1];\n let nextVertices = frameVertices[frame];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime));\n\n if (alpha == 1) {\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n vertices[i] = prev + (nextVertices[i] - prev) * percent;\n }\n } else if (pose == MixPose.setup) {\n let vertexAttachment = slotAttachment as VertexAttachment;\n if (vertexAttachment.bones == null) {\n // Unweighted vertex positions, with alpha.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i], setup = setupVertices[i];\n vertices[i] = setup + (prev + (nextVertices[i] - prev) * percent - setup) * alpha;\n }\n } else {\n // Weighted deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n vertices[i] = (prev + (nextVertices[i] - prev) * percent) * alpha;\n }\n }\n } else {\n // Vertex positions or deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n vertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha;\n }\n }\n }\n }\n\n export class EventTimeline implements Timeline {\n frames: ArrayLike<number>; // time, ...\n events: Array<Event>;\n\n constructor (frameCount: number) {\n this.frames = Utils.newFloatArray(frameCount);\n this.events = new Array<Event>(frameCount);\n }\n\n getPropertyId () {\n return TimelineType.event << 24;\n }\n\n getFrameCount () {\n return this.frames.length;\n }\n\n /** Sets the time of the specified keyframe. */\n setFrame (frameIndex: number, event: Event) {\n this.frames[frameIndex] = event.time;\n this.events[frameIndex] = event;\n }\n\n /** Fires events for frames > lastTime and <= time. */\n apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n if (firedEvents == null) return;\n let frames = this.frames;\n let frameCount = this.frames.length;\n\n if (lastTime > time) { // Fire events after last time for looped animations.\n this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, pose, direction);\n lastTime = -1;\n } else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame.\n return;\n if (time < frames[0]) return; // Time is before first frame.\n\n let frame = 0;\n if (lastTime < frames[0])\n frame = 0;\n else {\n frame = Animation.binarySearch(frames, lastTime);\n let frameTime = frames[frame];\n while (frame > 0) { // Fire multiple events with the same frame.\n if (frames[frame - 1] != frameTime) break;\n frame--;\n }\n }\n for (; frame < frameCount && time >= frames[frame]; frame++)\n firedEvents.push(this.events[frame]);\n }\n }\n\n export class DrawOrderTimeline implements Timeline {\n frames: ArrayLike<number>; // time, ...\n drawOrders: Array<Array<number>>;\n\n constructor (frameCount: number) {\n this.frames = Utils.newFloatArray(frameCount);\n this.drawOrders = new Array<Array<number>>(frameCount);\n }\n\n getPropertyId () {\n return TimelineType.drawOrder << 24;\n }\n\n getFrameCount () {\n return this.frames.length;\n }\n\n /** Sets the time of the specified keyframe.\n * @param drawOrder May be null to use bind pose draw order. */\n setFrame (frameIndex: number, time: number, drawOrder: Array<number>) {\n this.frames[frameIndex] = time;\n this.drawOrders[frameIndex] = drawOrder;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let drawOrder: Array<Slot> = skeleton.drawOrder;\n let slots: Array<Slot> = skeleton.slots;\n if (direction == MixDirection.out && pose == MixPose.setup) {\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n\n let frames = this.frames;\n if (time < frames[0]) {\n if (pose == MixPose.setup) Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n\n let frame = 0;\n if (time >= frames[frames.length - 1]) // Time is after last frame.\n frame = frames.length - 1;\n else\n frame = Animation.binarySearch(frames, time) - 1;\n\n let drawOrderToSetupIndex = this.drawOrders[frame];\n if (drawOrderToSetupIndex == null)\n Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length);\n else {\n for (let i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\n drawOrder[i] = slots[drawOrderToSetupIndex[i]];\n }\n }\n }\n\n export class IkConstraintTimeline extends CurveTimeline {\n static ENTRIES = 3;\n static PREV_TIME = -3; static PREV_MIX = -2; static PREV_BEND_DIRECTION = -1;\n static MIX = 1; static BEND_DIRECTION = 2;\n\n ikConstraintIndex: number;\n frames: ArrayLike<number>; // time, mix, bendDirection, ...\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES);\n }\n\n getPropertyId () {\n return (TimelineType.ikConstraint << 24) + this.ikConstraintIndex;\n }\n\n /** Sets the time, mix and bend direction of the specified keyframe. */\n setFrame (frameIndex: number, time: number, mix: number, bendDirection: number) {\n frameIndex *= IkConstraintTimeline.ENTRIES;\n this.frames[frameIndex] = time;\n this.frames[frameIndex + IkConstraintTimeline.MIX] = mix;\n this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n let constraint: IkConstraint = skeleton.ikConstraints[this.ikConstraintIndex];\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n constraint.mix = constraint.data.mix;\n constraint.bendDirection = constraint.data.bendDirection;\n return;\n case MixPose.current:\n constraint.mix += (constraint.data.mix - constraint.mix) * alpha;\n constraint.bendDirection = constraint.data.bendDirection;\n }\n return;\n }\n\n if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { // Time is after last frame.\n if (pose == MixPose.setup) {\n constraint.mix = constraint.data.mix + (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.data.mix) * alpha;\n constraint.bendDirection = direction == MixDirection.out ? constraint.data.bendDirection\n : frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION];\n } else {\n constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha;\n if (direction == MixDirection.in) constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION];\n }\n return;\n }\n\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES);\n let mix = frames[frame + IkConstraintTimeline.PREV_MIX];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime));\n\n if (pose == MixPose.setup) {\n constraint.mix = constraint.data.mix + (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.data.mix) * alpha;\n constraint.bendDirection = direction == MixDirection.out ? constraint.data.bendDirection : frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION];\n } else {\n constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha;\n if (direction == MixDirection.in) constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION];\n }\n }\n }\n\n export class TransformConstraintTimeline extends CurveTimeline {\n static ENTRIES = 5;\n static PREV_TIME = -5; static PREV_ROTATE = -4; static PREV_TRANSLATE = -3; static PREV_SCALE = -2; static PREV_SHEAR = -1;\n static ROTATE = 1; static TRANSLATE = 2; static SCALE = 3; static SHEAR = 4;\n\n transformConstraintIndex: number;\n frames: ArrayLike<number>; // time, rotate mix, translate mix, scale mix, shear mix, ...\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES);\n }\n\n getPropertyId () {\n return (TimelineType.transformConstraint << 24) + this.transformConstraintIndex;\n }\n\n /** Sets the time and mixes of the specified keyframe. */\n setFrame (frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number) {\n frameIndex *= TransformConstraintTimeline.ENTRIES;\n this.frames[frameIndex] = time;\n this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix;\n this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix;\n this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix;\n this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n\n let constraint: TransformConstraint = skeleton.transformConstraints[this.transformConstraintIndex];\n if (time < frames[0]) {\n let data = constraint.data;\n switch (pose) {\n case MixPose.setup:\n constraint.rotateMix = data.rotateMix;\n constraint.translateMix = data.translateMix;\n constraint.scaleMix = data.scaleMix;\n constraint.shearMix = data.shearMix;\n return;\n case MixPose.current:\n constraint.rotateMix += (data.rotateMix - constraint.rotateMix) * alpha;\n constraint.translateMix += (data.translateMix - constraint.translateMix) * alpha;\n constraint.scaleMix += (data.scaleMix - constraint.scaleMix) * alpha;\n constraint.shearMix += (data.shearMix - constraint.shearMix) * alpha;\n }\n return;\n }\n\n let rotate = 0, translate = 0, scale = 0, shear = 0;\n if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { // Time is after last frame.\n let i = frames.length;\n rotate = frames[i + TransformConstraintTimeline.PREV_ROTATE];\n translate = frames[i + TransformConstraintTimeline.PREV_TRANSLATE];\n scale = frames[i + TransformConstraintTimeline.PREV_SCALE];\n shear = frames[i + TransformConstraintTimeline.PREV_SHEAR];\n } else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES);\n rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE];\n translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE];\n scale = frames[frame + TransformConstraintTimeline.PREV_SCALE];\n shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime));\n\n rotate += (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent;\n translate += (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent;\n scale += (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent;\n shear += (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent;\n }\n if (pose == MixPose.setup) {\n let data = constraint.data;\n constraint.rotateMix = data.rotateMix + (rotate - data.rotateMix) * alpha;\n constraint.translateMix = data.translateMix + (translate - data.translateMix) * alpha;\n constraint.scaleMix = data.scaleMix + (scale - data.scaleMix) * alpha;\n constraint.shearMix = data.shearMix + (shear - data.shearMix) * alpha;\n } else {\n constraint.rotateMix += (rotate - constraint.rotateMix) * alpha;\n constraint.translateMix += (translate - constraint.translateMix) * alpha;\n constraint.scaleMix += (scale - constraint.scaleMix) * alpha;\n constraint.shearMix += (shear - constraint.shearMix) * alpha;\n }\n }\n }\n\n export class PathConstraintPositionTimeline extends CurveTimeline {\n static ENTRIES = 2;\n static PREV_TIME = -2; static PREV_VALUE = -1;\n static VALUE = 1;\n\n pathConstraintIndex: number;\n\n frames: ArrayLike<number>; // time, position, ...\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES);\n }\n\n getPropertyId () {\n return (TimelineType.pathConstraintPosition << 24) + this.pathConstraintIndex;\n }\n\n /** Sets the time and value of the specified keyframe. */\n setFrame (frameIndex: number, time: number, value: number) {\n frameIndex *= PathConstraintPositionTimeline.ENTRIES;\n this.frames[frameIndex] = time;\n this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n let constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n constraint.position = constraint.data.position;\n return;\n case MixPose.current:\n constraint.position += (constraint.data.position - constraint.position) * alpha;\n }\n return;\n }\n\n let position = 0;\n if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) // Time is after last frame.\n position = frames[frames.length + PathConstraintPositionTimeline.PREV_VALUE];\n else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES);\n position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime));\n\n position += (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent;\n }\n if (pose == MixPose.setup)\n constraint.position = constraint.data.position + (position - constraint.data.position) * alpha;\n else\n constraint.position += (position - constraint.position) * alpha;\n }\n }\n\n export class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline {\n constructor (frameCount: number) {\n super(frameCount);\n }\n\n getPropertyId () {\n return (TimelineType.pathConstraintSpacing << 24) + this.pathConstraintIndex;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n let constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n constraint.spacing = constraint.data.spacing;\n return;\n case MixPose.current:\n constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha;\n }\n return;\n }\n\n let spacing = 0;\n if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) // Time is after last frame.\n spacing = frames[frames.length + PathConstraintSpacingTimeline.PREV_VALUE];\n else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES);\n spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime));\n\n spacing += (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent;\n }\n\n if (pose == MixPose.setup)\n constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha;\n else\n constraint.spacing += (spacing - constraint.spacing) * alpha;\n }\n }\n\n export class PathConstraintMixTimeline extends CurveTimeline {\n static ENTRIES = 3;\n static PREV_TIME = -3; static PREV_ROTATE = -2; static PREV_TRANSLATE = -1;\n static ROTATE = 1; static TRANSLATE = 2;\n\n pathConstraintIndex: number;\n\n frames: ArrayLike<number>; // time, rotate mix, translate mix, ...\n\n constructor (frameCount: number) {\n super(frameCount);\n this.frames = Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES);\n }\n\n getPropertyId () {\n return (TimelineType.pathConstraintMix << 24) + this.pathConstraintIndex;\n }\n\n /** Sets the time and mixes of the specified keyframe. */\n setFrame (frameIndex: number, time: number, rotateMix: number, translateMix: number) {\n frameIndex *= PathConstraintMixTimeline.ENTRIES;\n this.frames[frameIndex] = time;\n this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix;\n this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix;\n }\n\n apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, pose: MixPose, direction: MixDirection) {\n let frames = this.frames;\n let constraint: PathConstraint = skeleton.pathConstraints[this.pathConstraintIndex];\n\n if (time < frames[0]) {\n switch (pose) {\n case MixPose.setup:\n constraint.rotateMix = constraint.data.rotateMix;\n constraint.translateMix = constraint.data.translateMix;\n return;\n case MixPose.current:\n constraint.rotateMix += (constraint.data.rotateMix - constraint.rotateMix) * alpha;\n constraint.translateMix += (constraint.data.translateMix - constraint.translateMix) * alpha;\n }\n return;\n }\n\n let rotate = 0, translate = 0;\n if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { // Time is after last frame.\n rotate = frames[frames.length + PathConstraintMixTimeline.PREV_ROTATE];\n translate = frames[frames.length + PathConstraintMixTimeline.PREV_TRANSLATE];\n } else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES);\n rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE];\n translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE];\n let frameTime = frames[frame];\n let percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1,\n 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime));\n\n rotate += (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent;\n translate += (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent;\n }\n\n if (pose == MixPose.setup) {\n constraint.rotateMix = constraint.data.rotateMix + (rotate - constraint.data.rotateMix) * alpha;\n constraint.translateMix = constraint.data.translateMix + (translate - constraint.data.translateMix) * alpha;\n } else {\n constraint.rotateMix += (rotate - constraint.rotateMix) * alpha;\n constraint.translateMix += (translate - constraint.translateMix) * alpha;\n }\n }\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 class AnimationState {\n static emptyAnimation = new Animation(\"<empty>\", [], 0);\n static SUBSEQUENT = 0;\n static FIRST = 1;\n static DIP = 2;\n static DIP_MIX = 3;\n\n data: AnimationStateData;\n tracks = new Array<TrackEntry>();\n events = new Array<Event>();\n listeners = new Array<AnimationStateListener2>();\n queue = new EventQueue(this);\n propertyIDs = new IntSet();\n mixingTo = new Array<TrackEntry>();\n animationsChanged = false;\n timeScale = 1;\n\n trackEntryPool = new Pool<TrackEntry>(() => new TrackEntry());\n\n constructor (data: AnimationStateData) {\n this.data = data;\n }\n\n update (delta: number) {\n delta *= this.timeScale;\n let tracks = this.tracks;\n for (let i = 0, n = tracks.length; i < n; i++) {\n let current = tracks[i];\n if (current == null) continue;\n\n current.animationLast = current.nextAnimationLast;\n current.trackLast = current.nextTrackLast;\n\n let currentDelta = delta * current.timeScale;\n\n if (current.delay > 0) {\n current.delay -= currentDelta;\n if (current.delay > 0) continue;\n currentDelta = -current.delay;\n current.delay = 0;\n }\n\n let next = current.next;\n if (next != null) {\n // When the next entry's delay is passed, change to the next entry, preserving leftover time.\n let nextTime = current.trackLast - next.delay;\n if (nextTime >= 0) {\n next.delay = 0;\n next.trackTime = nextTime + delta * next.timeScale;\n current.trackTime += currentDelta;\n this.setCurrent(i, next, true);\n while (next.mixingFrom != null) {\n next.mixTime += currentDelta;\n next = next.mixingFrom;\n }\n continue;\n }\n } else if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {\n tracks[i] = null;\n this.queue.end(current);\n this.disposeNext(current);\n continue;\n }\n if (current.mixingFrom != null && this.updateMixingFrom(current, delta)) {\n // End mixing from entries once all have completed.\n let from = current.mixingFrom;\n current.mixingFrom = null;\n while (from != null) {\n this.queue.end(from);\n from = from.mixingFrom;\n }\n }\n\n current.trackTime += currentDelta;\n }\n\n this.queue.drain();\n }\n\n updateMixingFrom (to: TrackEntry, delta: number): boolean {\n let from = to.mixingFrom;\n if (from == null) return true;\n\n let finished = this.updateMixingFrom(from, delta);\n\n // Require mixTime > 0 to ensure the mixing from entry was applied at least once.\n if (to.mixTime > 0 && (to.mixTime >= to.mixDuration || to.timeScale == 0)) {\n if (from.totalAlpha == 0) {\n to.mixingFrom = from.mixingFrom;\n to.interruptAlpha = from.interruptAlpha;\n this.queue.end(from);\n }\n return finished;\n }\n\n from.animationLast = from.nextAnimationLast;\n from.trackLast = from.nextTrackLast;\n from.trackTime += delta * from.timeScale;\n to.mixTime += delta * to.timeScale;\n return false;\n }\n\n apply (skeleton: Skeleton) : boolean {\n if (skeleton == null) throw new Error(\"skeleton cannot be null.\");\n if (this.animationsChanged) this._animationsChanged();\n\n let events = this.events;\n let tracks = this.tracks;\n let applied = false;\n\n for (let i = 0, n = tracks.length; i < n; i++) {\n let current = tracks[i];\n if (current == null || current.delay > 0) continue;\n applied = true;\n let currentPose = i == 0 ? MixPose.current : MixPose.currentLayered;\n\n // Apply mixing from entries first.\n let mix = current.alpha;\n if (current.mixingFrom != null)\n mix *= this.applyMixingFrom(current, skeleton, currentPose);\n else if (current.trackTime >= current.trackEnd && current.next == null)\n mix = 0;\n\n // Apply current entry.\n let animationLast = current.animationLast, animationTime = current.getAnimationTime();\n let timelineCount = current.animation.timelines.length;\n let timelines = current.animation.timelines;\n if (mix == 1) {\n for (let ii = 0; ii < timelineCount; ii++)\n timelines[ii].apply(skeleton, animationLast, animationTime, events, 1, MixPose.setup, MixDirection.in);\n } else {\n let timelineData = current.timelineData;\n\n let firstFrame = current.timelinesRotation.length == 0;\n if (firstFrame) Utils.setArraySize(current.timelinesRotation, timelineCount << 1, null);\n let timelinesRotation = current.timelinesRotation;\n\n for (let ii = 0; ii < timelineCount; ii++) {\n let timeline = timelines[ii];\n let pose = timelineData[ii] >= AnimationState.FIRST ? MixPose.setup : currentPose;\n if (timeline instanceof RotateTimeline) {\n this.applyRotateTimeline(timeline, skeleton, animationTime, mix, pose, timelinesRotation, ii << 1, firstFrame);\n } else {\n // This fixes the WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109\n Utils.webkit602BugfixHelper(mix, pose);\n timeline.apply(skeleton, animationLast, animationTime, events, mix, pose, MixDirection.in);\n }\n }\n }\n this.queueEvents(current, animationTime);\n events.length = 0;\n current.nextAnimationLast = animationTime;\n current.nextTrackLast = current.trackTime;\n }\n\n this.queue.drain();\n return applied;\n }\n\n applyMixingFrom (to: TrackEntry, skeleton: Skeleton, currentPose: MixPose) {\n let from = to.mixingFrom;\n if (from.mixingFrom != null) this.applyMixingFrom(from, skeleton, currentPose);\n\n let mix = 0;\n if (to.mixDuration == 0) { // Single frame mix to undo mixingFrom changes.\n mix = 1;\n currentPose = MixPose.setup;\n } else {\n mix = to.mixTime / to.mixDuration;\n if (mix > 1) mix = 1;\n }\n\n let events = mix < from.eventThreshold ? this.events : null;\n let attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold;\n let animationLast = from.animationLast, animationTime = from.getAnimationTime();\n let timelineCount = from.animation.timelines.length;\n let timelines = from.animation.timelines;\n let timelineData = from.timelineData;\n let timelineDipMix = from.timelineDipMix;\n\n let firstFrame = from.timelinesRotation.length == 0;\n if (firstFrame) Utils.setArraySize(from.timelinesRotation, timelineCount << 1, null);\n let timelinesRotation = from.timelinesRotation;\n\n let pose: MixPose;\n let alphaDip = from.alpha * to.interruptAlpha, alphaMix = alphaDip * (1 - mix), alpha = 0;\n from.totalAlpha = 0;\n for (var i = 0; i < timelineCount; i++) {\n let timeline = timelines[i];\n switch (timelineData[i]) {\n case AnimationState.SUBSEQUENT:\n if (!attachments && timeline instanceof AttachmentTimeline) continue;\n if (!drawOrder && timeline instanceof DrawOrderTimeline) continue;\n pose = currentPose;\n alpha = alphaMix;\n break;\n case AnimationState.FIRST:\n pose = MixPose.setup\n alpha = alphaMix;\n break;\n case AnimationState.DIP:\n pose = MixPose.setup;\n alpha = alphaDip;\n break;\n default:\n pose = MixPose.setup;\n alpha = alphaDip;\n let dipMix = timelineDipMix[i];\n alpha *= Math.max(0, 1 - dipMix.mixTime / dipMix.mixDuration);\n break;\n }\n from.totalAlpha += alpha;\n if (timeline instanceof RotateTimeline)\n this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, pose, timelinesRotation, i << 1, firstFrame);\n else {\n timeline.apply(skeleton, animationLast, animationTime, events, alpha, pose, MixDirection.out);\n }\n }\n\n if (to.mixDuration > 0) this.queueEvents(from, animationTime);\n this.events.length = 0;\n from.nextAnimationLast = animationTime;\n from.nextTrackLast = from.trackTime;\n\n return mix;\n }\n\n applyRotateTimeline (timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, pose: MixPose,\n timelinesRotation: Array<number>, i: number, firstFrame: boolean) {\n\n if (firstFrame) timelinesRotation[i] = 0;\n\n if (alpha == 1) {\n timeline.apply(skeleton, 0, time, null, 1, pose, MixDirection.in);\n return;\n }\n\n let rotateTimeline = timeline as RotateTimeline;\n let frames = rotateTimeline.frames;\n let bone = skeleton.bones[rotateTimeline.boneIndex];\n if (time < frames[0]) {\n if (pose == MixPose.setup) bone.rotation = bone.data.rotation;\n return;\n }\n\n let r2 = 0;\n if (time >= frames[frames.length - RotateTimeline.ENTRIES]) // Time is after last frame.\n r2 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION];\n else {\n // Interpolate between the previous frame and the current frame.\n let frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES);\n let prevRotation = frames[frame + RotateTimeline.PREV_ROTATION];\n let frameTime = frames[frame];\n let percent = rotateTimeline.getCurvePercent((frame >> 1) - 1,\n 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime));\n\n r2 = frames[frame + RotateTimeline.ROTATION] - prevRotation;\n r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360;\n r2 = prevRotation + r2 * percent + bone.data.rotation;\n r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360;\n }\n\n // Mix between rotations using the direction of the shortest route on the first frame while detecting crosses.\n let r1 = pose == MixPose.setup ? bone.data.rotation : bone.rotation;\n let total = 0, diff = r2 - r1;\n if (diff == 0) {\n total = timelinesRotation[i];\n } else {\n diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360;\n let lastTotal = 0, lastDiff = 0;\n if (firstFrame) {\n lastTotal = 0;\n lastDiff = diff;\n } else {\n lastTotal = timelinesRotation[i]; // Angle and direction of mix, including loops.\n lastDiff = timelinesRotation[i + 1]; // Difference between bones.\n }\n let current = diff > 0, dir = lastTotal >= 0;\n // Detect cross at 0 (not 180).\n if (MathUtils.signum(lastDiff) != MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) {\n // A cross after a 360 rotation is a loop.\n if (Math.abs(lastTotal) > 180) lastTotal += 360 * MathUtils.signum(lastTotal);\n dir = current;\n }\n total = diff + lastTotal - lastTotal % 360; // Store loops as part of lastTotal.\n if (dir != current) total += 360 * MathUtils.signum(lastTotal);\n timelinesRotation[i] = total;\n }\n timelinesRotation[i + 1] = diff;\n r1 += total * alpha;\n bone.rotation = r1 - (16384 - ((16384.499999999996 - r1 / 360) | 0)) * 360;\n }\n\n queueEvents (entry: TrackEntry, animationTime: number) {\n let animationStart = entry.animationStart, animationEnd = entry.animationEnd;\n let duration = animationEnd - animationStart;\n let trackLastWrapped = entry.trackLast % duration;\n\n // Queue events before complete.\n let events = this.events;\n let i = 0, n = events.length;\n for (; i < n; i++) {\n let event = events[i];\n if (event.time < trackLastWrapped) break;\n if (event.time > animationEnd) continue; // Discard events outside animation start/end.\n this.queue.event(entry, event);\n }\n\n // Queue complete if completed a loop iteration or the animation.\n if (entry.loop ? (trackLastWrapped > entry.trackTime % duration)\n : (animationTime >= animationEnd && entry.animationLast < animationEnd)) {\n this.queue.complete(entry);\n }\n\n // Queue events after complete.\n for (; i < n; i++) {\n let event = events[i];\n if (event.time < animationStart) continue; // Discard events outside animation start/end.\n this.queue.event(entry, events[i]);\n }\n }\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 clearTrack (trackIndex: number) {\n if (trackIndex >= this.tracks.length) return;\n let current = this.tracks[trackIndex];\n if (current == null) return;\n\n this.queue.end(current);\n\n this.disposeNext(current);\n\n let entry = current;\n while (true) {\n let from = entry.mixingFrom;\n if (from == null) break;\n this.queue.end(from);\n entry.mixingFrom = null;\n entry = from;\n }\n\n this.tracks[current.trackIndex] = null;\n\n this.queue.drain();\n }\n\n setCurrent (index: number, current: TrackEntry, interrupt: boolean) {\n let from = this.expandToIndex(index);\n this.tracks[index] = current;\n\n if (from != null) {\n if (interrupt) this.queue.interrupt(from);\n current.mixingFrom = from;\n current.mixTime = 0;\n\n // Store the interrupted mix percentage.\n if (from.mixingFrom != null && from.mixDuration > 0)\n current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration);\n\n from.timelinesRotation.length = 0; // Reset rotation for mixing out, in case entry was mixed in.\n }\n\n this.queue.start(current);\n }\n\n setAnimation (trackIndex: number, animationName: string, loop: boolean) {\n let animation = this.data.skeletonData.findAnimation(animationName);\n if (animation == null) throw new Error(\"Animation not found: \" + animationName);\n return this.setAnimationWith(trackIndex, animation, loop);\n }\n\n setAnimationWith (trackIndex: number, animation: Animation, loop: boolean) {\n if (animation == null) throw new Error(\"animation cannot be null.\");\n let interrupt = true;\n let current = this.expandToIndex(trackIndex);\n if (current != null) {\n if (current.nextTrackLast == -1) {\n // Don't mix from an entry that was never applied.\n this.tracks[trackIndex] = current.mixingFrom;\n this.queue.interrupt(current);\n this.queue.end(current);\n this.disposeNext(current);\n current = current.mixingFrom;\n interrupt = false;\n } else\n this.disposeNext(current);\n }\n let entry = this.trackEntry(trackIndex, animation, loop, current);\n this.setCurrent(trackIndex, entry, interrupt);\n this.queue.drain();\n return entry;\n }\n\n addAnimation (trackIndex: number, animationName: string, loop: boolean, delay: number) {\n let animation = this.data.skeletonData.findAnimation(animationName);\n if (animation == null) throw new Error(\"Animation not found: \" + animationName);\n return this.addAnimationWith(trackIndex, animation, loop, delay);\n }\n\n addAnimationWith (trackIndex: number, animation: Animation, loop: boolean, delay: number) {\n if (animation == null) throw new Error(\"animation cannot be null.\");\n\n let last = this.expandToIndex(trackIndex);\n if (last != null) {\n while (last.next != null)\n last = last.next;\n }\n\n let entry = this.trackEntry(trackIndex, animation, loop, last);\n\n if (last == null) {\n this.setCurrent(trackIndex, entry, true);\n this.queue.drain();\n } else {\n last.next = entry;\n if (delay <= 0) {\n let duration = last.animationEnd - last.animationStart;\n if (duration != 0) {\n if (last.loop)\n delay += duration * (1 + ((last.trackTime / duration) | 0));\n else\n delay += duration;\n delay -= this.data.getMix(last.animation, animation);\n } else\n delay = 0;\n }\n }\n\n entry.delay = delay;\n return entry;\n }\n\n setEmptyAnimation (trackIndex: number, mixDuration: number) {\n let entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation, false);\n entry.mixDuration = mixDuration;\n entry.trackEnd = mixDuration;\n return entry;\n }\n\n addEmptyAnimation (trackIndex: number, mixDuration: number, delay: number) {\n if (delay <= 0) delay -= mixDuration;\n let entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation, false, delay);\n entry.mixDuration = mixDuration;\n entry.trackEnd = mixDuration;\n return entry;\n }\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 expandToIndex (index: number) {\n if (index < this.tracks.length) return this.tracks[index];\n Utils.ensureArrayCapacity(this.tracks, index - this.tracks.length + 1, null);\n this.tracks.length = index + 1;\n return null;\n }\n\n trackEntry (trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry) {\n let entry = this.trackEntryPool.obtain();\n entry.trackIndex = trackIndex;\n entry.animation = animation;\n entry.loop = loop;\n\n entry.eventThreshold = 0;\n entry.attachmentThreshold = 0;\n entry.drawOrderThreshold = 0;\n\n entry.animationStart = 0;\n entry.animationEnd = animation.duration;\n entry.animationLast = -1;\n entry.nextAnimationLast = -1;\n\n entry.delay = 0;\n entry.trackTime = 0;\n entry.trackLast = -1;\n entry.nextTrackLast = -1;\n entry.trackEnd = Number.MAX_VALUE;\n entry.timeScale = 1;\n\n entry.alpha = 1;\n entry.interruptAlpha = 1;\n entry.mixTime = 0;\n entry.mixDuration = last == null ? 0 : this.data.getMix(last.animation, animation);\n return entry;\n }\n\n disposeNext (entry: TrackEntry) {\n let next = entry.next;\n while (next != null) {\n this.queue.dispose(next);\n next = next.next;\n }\n entry.next = null;\n }\n\n _animationsChanged () {\n this.animationsChanged = false;\n\n let propertyIDs = this.propertyIDs;\n propertyIDs.clear();\n let mixingTo = this.mixingTo;\n\n let lastEntry: TrackEntry = null;\n for (let i = 0, n = this.tracks.length; i < n; i++) {\n let entry = this.tracks[i];\n if (entry != null) entry.setTimelineData(null, mixingTo, propertyIDs);\n }\n }\n\n getCurrent (trackIndex: number) {\n if (trackIndex >= this.tracks.length) return null;\n return this.tracks[trackIndex];\n }\n\n addListener (listener: AnimationStateListener2) {\n if (listener == null) throw new Error(\"listener cannot be null.\");\n this.listeners.push(listener);\n }\n\n /** Removes the listener added with {@link #addListener(AnimationStateListener)}. */\n removeListener (listener: AnimationStateListener2) {\n let index = this.listeners.indexOf(listener);\n if (index >= 0) this.listeners.splice(index, 1);\n }\n\n clearListeners () {\n this.listeners.length = 0;\n }\n\n clearListenerNotifications () {\n this.queue.clear();\n }\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 }\n\n export class TrackEntry {\n animation: Animation;\n next: TrackEntry; mixingFrom: TrackEntry;\n listener: AnimationStateListener2;\n trackIndex: number;\n loop: boolean;\n eventThreshold: number; attachmentThreshold: number; drawOrderThreshold: number;\n animationStart: number; animationEnd: number; animationLast: number; nextAnimationLast: number;\n delay: number; trackTime: number; trackLast: number; nextTrackLast: number; trackEnd: number; timeScale: number;\n alpha: number; mixTime: number; mixDuration: number; interruptAlpha: number; totalAlpha: number;\n timelineData = new Array<number>();\n timelineDipMix = new Array<TrackEntry>();\n timelinesRotation = new Array<number>();\n\n reset () {\n this.next = null;\n this.mixingFrom = null;\n this.animation = null;\n this.listener = null;\n this.timelineData.length = 0;\n this.timelineDipMix.length = 0;\n this.timelinesRotation.length = 0;\n }\n\n setTimelineData (to: TrackEntry, mixingToArray: Array<TrackEntry>, propertyIDs: IntSet) : TrackEntry {\n if (to != null) mixingToArray.push(to);\n let lastEntry = this.mixingFrom != null ? this.mixingFrom.setTimelineData(this, mixingToArray, propertyIDs) : this;\n if (to != null) mixingToArray.pop();\n\n let mixingTo = mixingToArray;\n let mixingToLast = mixingToArray.length - 1;\n let timelines = this.animation.timelines;\n let timelinesCount = this.animation.timelines.length;\n let timelineData = Utils.setArraySize(this.timelineData, timelinesCount);\n this.timelineDipMix.length = 0;\n let timelineDipMix = Utils.setArraySize(this.timelineDipMix, timelinesCount);\n\n outer:\n for (var i = 0; i < timelinesCount; i++) {\n let id = timelines[i].getPropertyId();\n if (!propertyIDs.add(id))\n timelineData[i] = AnimationState.SUBSEQUENT;\n else if (to == null || !to.hasTimeline(id))\n timelineData[i] = AnimationState.FIRST;\n else {\n for (var ii = mixingToLast; ii >= 0; ii--) {\n let entry = mixingTo[ii];\n if (!entry.hasTimeline(id)) {\n if (entry.mixDuration > 0) {\n timelineData[i] = AnimationState.DIP_MIX;\n timelineDipMix[i] = entry;\n continue outer;\n }\n }\n }\n timelineData[i] = AnimationState.DIP;\n }\n }\n return lastEntry;\n }\n\n hasTimeline (id: number) : boolean {\n let timelines = this.animation.timelines;\n for (var i = 0, n = timelines.length; i < n; i++)\n if (timelines[i].getPropertyId() == id) return true;\n return false;\n }\n\n getAnimationTime () {\n if (this.loop) {\n let duration = this.animationEnd - this.animationStart;\n if (duration == 0) return this.animationStart;\n return (this.trackTime % duration) + this.animationStart;\n }\n return Math.min(this.trackTime + this.animationStart, this.animationEnd);\n }\n\n setAnimationLast(animationLast: number) {\n this.animationLast = animationLast;\n this.nextAnimationLast = animationLast;\n }\n\n isComplete () {\n return this.trackTime >= this.animationEnd - this.animationStart;\n }\n\n resetRotationDirections () {\n this.timelinesRotation.length = 0;\n }\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 }\n\n export class EventQueue {\n objects: Array<any> = [];\n drainDisabled = false;\n animState: AnimationState;\n\n constructor(animState: AnimationState) {\n this.animState = animState;\n }\n\n start (entry: TrackEntry) {\n this.objects.push(EventType.start);\n this.objects.push(entry);\n this.animState.animationsChanged = true;\n }\n\n interrupt (entry: TrackEntry) {\n this.objects.push(EventType.interrupt);\n this.objects.push(entry);\n }\n\n end (entry: TrackEntry) {\n this.objects.push(EventType.end);\n this.objects.push(entry);\n this.animState.animationsChanged = true;\n }\n\n dispose (entry: TrackEntry) {\n this.objects.push(EventType.dispose);\n this.objects.push(entry);\n }\n\n complete (entry: TrackEntry) {\n this.objects.push(EventType.complete);\n this.objects.push(entry);\n }\n\n event (entry: TrackEntry, event: Event) {\n this.objects.push(EventType.event);\n this.objects.push(entry);\n this.objects.push(event);\n }\n\n private static deprecatedWarning1: Boolean = false;\n\n deprecateStuff() {\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 drain () {\n if (this.drainDisabled) return;\n this.drainDisabled = true;\n\n let objects = this.objects;\n let listeners = this.animState.listeners;\n\n for (let i = 0; i < objects.length; i += 2) {\n let type = objects[i] as EventType;\n let entry = objects[i + 1] as TrackEntry;\n switch (type) {\n case EventType.start:\n if (entry.listener != null && entry.listener.start) entry.listener.start(entry);\n for (let ii = 0; ii < listeners.length; ii++)\n if (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 break;\n case EventType.interrupt:\n if (entry.listener != null && entry.listener.interrupt) entry.listener.interrupt(entry);\n for (let ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].interrupt) listeners[ii].interrupt(entry);\n break;\n case EventType.end:\n if (entry.listener != null && entry.listener.end) entry.listener.end(entry);\n for (let ii = 0; ii < listeners.length; ii++)\n if (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 // Fall through.\n case EventType.dispose:\n if (entry.listener != null && entry.listener.dispose) entry.listener.dispose(entry);\n for (let ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].dispose) listeners[ii].dispose(entry);\n this.animState.trackEntryPool.free(entry);\n break;\n case EventType.complete:\n if (entry.listener != null && entry.listener.complete) entry.listener.complete(entry);\n for (let ii = 0; ii < listeners.length; ii++)\n if (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 break;\n case EventType.event:\n let event = objects[i++ + 2] as Event;\n if (entry.listener != null && entry.listener.event) entry.listener.event(entry, event);\n for (let ii = 0; ii < listeners.length; ii++)\n if (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 break;\n }\n }\n this.clear();\n\n this.drainDisabled = false;\n }\n\n clear () {\n this.objects.length = 0;\n }\n }\n\n export enum EventType {\n start, interrupt, end, dispose, complete, event\n }\n\n export interface AnimationStateListener2 {\n /** Invoked when this entry has been set as the current entry. */\n start? (entry: TrackEntry): void;\n\n /** Invoked when another entry has replaced this entry as the current entry. This entry may continue being applied for\n * mixing. */\n interrupt? (entry: TrackEntry): void;\n\n /** Invoked when this entry is no longer the current entry and will never be applied again. */\n end? (entry: TrackEntry): void;\n\n /** Invoked when this entry will be disposed. This may occur without the entry ever being set as the current entry.\n * References to the entry should not be kept after dispose is called, as it may be destroyed or reused. */\n dispose? (entry: TrackEntry): void;\n\n /** Invoked every time this entry's animation completes a loop. */\n complete? (entry: TrackEntry): void;\n\n /** Invoked when this entry's animation triggers an event. */\n event? (entry: TrackEntry, event: Event): void;\n }\n\n export abstract class AnimationStateAdapter2 implements AnimationStateListener2 {\n start (entry: TrackEntry) {\n }\n\n interrupt (entry: TrackEntry) {\n }\n\n end (entry: TrackEntry) {\n }\n\n dispose (entry: TrackEntry) {\n }\n\n complete (entry: TrackEntry) {\n }\n\n event (entry: TrackEntry, event: Event) {\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 AnimationStateData {\n skeletonData: SkeletonData;\n animationToMixTime: Map<number> = {};\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 newPointAttachment(skin: Skin, name: string): PointAttachment {\n return new PointAttachment(name);\n }\n\n newClippingAttachment(skin: Skin, name: string): ClippingAttachment {\n return new ClippingAttachment(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 enum BlendMode {\n Normal = 0,\n Additive = 1,\n Multiply = 2,\n Screen = 3\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<Bone>();\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 /** 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 * <p>\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 worldToLocalRotation (worldRotation: number) {\n let sin = MathUtils.sinDeg(worldRotation), cos = MathUtils.cosDeg(worldRotation);\n let mat = this.matrix;\n return Math.atan2(mat.a * sin - mat.b * cos, mat.d * cos - mat.c * sin) * MathUtils.radDeg;\n }\n\n localToWorldRotation (localRotation: number) {\n let sin = MathUtils.sinDeg(localRotation), cos = MathUtils.cosDeg(localRotation);\n let mat = this.matrix;\n return Math.atan2(cos * mat.b + sin * mat.d, cos * mat.a + sin * mat.c) * MathUtils.radDeg;\n }\n\n rotateWorld (degrees: number) {\n let mat = this.matrix;\n let a = mat.a, b = mat.c, c = mat.b, d = mat.d;\n let cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees);\n mat.a = cos * a - sin * c;\n mat.c = cos * b - sin * d;\n mat.b = sin * a + cos * c;\n mat.d = sin * b + cos * d;\n this.appliedValid = false;\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 audio: 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<Bone>;\n target: Bone;\n mix = 1;\n bendDirection = 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<Bone>();\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 p = bone.parent.matrix;\n let id = 1 / (p.a * p.d - p.b * p.c);\n let x = targetX - p.tx, y = targetY - p.ty;\n let tx = (x * p.d - y * p.c) * id - bone.ax, ty = (y * p.a - x * p.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 let pmat = parent.matrix;\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 cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = pmat.a, b = pmat.c, c = pmat.b, d = pmat.d;\n let u = Math.abs(psx - psy) <= 0.0001;\n if (!u) {\n cy = 0;\n cwx = a * cx + pmat.tx;\n cwy = c * cx + pmat.ty;\n } else {\n cy = child.ay;\n cwx = a * cx + b * cy + pmat.tx;\n cwy = c * cx + d * cy + pmat.ty;\n }\n let pp = parent.parent.matrix;\n a = pp.a;\n b = pp.c;\n c = pp.b;\n d = pp.d;\n let id = 1 / (a * d - b * c), x = targetX - pp.tx, y = targetY - pp.ty;\n let tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py;\n x = cwx - pp.tx;\n y = cwy - pp.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 = MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;\n let maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;\n c = -a * l1 / (aa - bb);\n if (c >= -1 && c <= 1) {\n c = Math.acos(c);\n x = a * Math.cos(c) + l1;\n y = b * Math.sin(c);\n d = x * x + y * y;\n if (d < minDist) {\n minAngle = c;\n minDist = d;\n minX = x;\n minY = y;\n }\n if (d > maxDist) {\n maxAngle = c;\n maxDist = d;\n maxX = x;\n maxY = y;\n }\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<BoneData>();\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; static BEFORE = -2; static AFTER = -3;\n static epsilon = 0.00001;\n\n data: PathConstraintData;\n bones: Array<Bone>;\n target: Slot;\n position = 0; spacing = 0; rotateMix = 0; translateMix = 0;\n\n spaces = new Array<number>(); positions = new Array<number>();\n world = new Array<number>(); curves = new Array<number>(); lengths = new Array<number>();\n segments = new Array<number>();\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<Bone>();\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<number> = 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 setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon) {\n if (scale) lengths[i] = 0;\n spaces[++i] = 0;\n } else {\n let x = setupLength * bone.matrix.a, y = setupLength * bone.matrix.b;\n let length = Math.sqrt(x * x + y * y);\n if (scale) lengths[i] = length;\n spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;\n }\n }\n } else {\n for (let i = 1; i < spacesCount; i++)\n spaces[i] = spacing;\n }\n\n let positions = this.computeWorldPositions(<PathAttachment>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 p = this.target.bone.matrix;\n offsetRotation *= p.a * p.d - p.b * p.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 mat = bone.matrix;\n mat.tx += (boneX - mat.tx) * translateMix;\n mat.ty += (boneY - mat.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 mat.a *= s;\n mat.b *= s;\n }\n }\n boneX = x;\n boneY = y;\n if (rotate) {\n let a = mat.a, b = mat.c, c = mat.b, d = mat.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 mat.a = cos * a - sin * c;\n mat.c = cos * b - sin * d;\n mat.b = sin * a + cos * c;\n mat.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<number> = 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.computeWorldVertices(target, 2, 4, world, 0, 2);\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.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2);\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.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2);\n path.computeWorldVertices(target, 0, 4, world, 4, 2);\n } else\n path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2);\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.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2);\n path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2);\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.computeWorldVertices(target, 2, verticesLength, world, 0, 2);\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<number>, i: number, out: Array<number>, 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<number>, i: number, out: Array<number>, 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<number>, 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<BoneData>();\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<Bone>;\n slots: Array<Slot>;\n drawOrder: Array<Slot>;\n ikConstraints: Array<IkConstraint>;\n transformConstraints: Array<TransformConstraint>;\n pathConstraints: Array<PathConstraint>;\n _updateCache = new Array<Updatable>();\n updateCacheReset = new Array<Updatable>();\n skin: Skin;\n color: Color;\n time = 0;\n flipX = false; flipY = false;\n x = 0; 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<Bone>();\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<Slot>();\n this.drawOrder = new Array<Slot>();\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<IkConstraint>();\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<TransformConstraint>();\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<PathConstraint>();\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 // IK first, lowest hierarchy depth first.\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 i = 0, n = this.data.skins.length; i < n; i++)\n this.sortPathConstraintAttachment(this.data.skins[i], 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 i = 0; i < boneCount; i++)\n this.sortBone(constrained[i]);\n\n this._updateCache.push(constraint);\n\n for (let i = 0; i < boneCount; i++)\n this.sortReset(constrained[i].children);\n for (let i = 0; i < boneCount; i++)\n constrained[i].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 if (constraint.data.local) {\n for (let i = 0; i < boneCount; i++) {\n let child = constrained[i];\n this.sortBone(child.parent);\n if (!(this._updateCache.indexOf(child) > -1)) this.updateCacheReset.push(child);\n }\n } else {\n for (let i = 0; i < boneCount; i++) {\n this.sortBone(constrained[i]);\n }\n }\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 = (<PathAttachment>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<Bone>) {\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 | null) {\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 * @param temp Working memory */\n getBounds (offset: Vector2, size: Vector2, temp: Array<number>) {\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 verticesLength = 0;\n let vertices: ArrayLike<number> = null;\n let attachment = slot.getAttachment();\n if (attachment instanceof RegionAttachment) {\n verticesLength = 8;\n vertices = Utils.setArraySize(temp, verticesLength, 0);\n (<RegionAttachment>attachment).computeWorldVertices(slot.bone, vertices, 0, 2);\n } else if (attachment instanceof MeshAttachment) {\n let mesh = (<MeshAttachment>attachment);\n verticesLength = mesh.worldVerticesLength;\n vertices = Utils.setArraySize(temp, verticesLength, 0);\n mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2);\n }\n if (vertices != null) {\n for (let ii = 0, nn = vertices.length; ii < nn; ii += 2) {\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; minY = 0; maxX = 0; maxY = 0;\n boundingBoxes = new Array<BoundingBoxAttachment>();\n polygons = new Array<ArrayLike<number>>();\n private polygonPool = new Pool<ArrayLike<number>>(() => {\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, 0, boundingBox.worldVerticesLength, polygon, 0, 2);\n }\n }\n\n if (updateAabb) {\n this.aabbCompute();\n } else {\n this.minX = Number.POSITIVE_INFINITY;\n this.minY = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.maxY = Number.NEGATIVE_INFINITY;\n }\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<number>, 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<number>, 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 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 SkeletonClipping {\n\t\tprivate triangulator = new Triangulator();\n\t\tprivate clippingPolygon = new Array<number>();\n\t\tprivate clipOutput = new Array<number>();\n\t\tclippedVertices = new Array<number>();\n\t\tclippedTriangles = new Array<number>();\n\t\tprivate scratch = new Array<number>();\n\n\t\tprivate clipAttachment: ClippingAttachment;\n\t\tprivate clippingPolygons: Array<Array<number>>;\n\n\t\tclipStart (slot: Slot, clip: ClippingAttachment): number {\n\t\t\tif (this.clipAttachment != null) return 0;\n\t\t\tthis.clipAttachment = clip;\n\n\t\t\tlet n = clip.worldVerticesLength;\n\t\t\tlet vertices = Utils.setArraySize(this.clippingPolygon, n);\n\t\t\tclip.computeWorldVertices(slot, 0, n, vertices, 0, 2);\n\t\t\tlet clippingPolygon = this.clippingPolygon;\n\t\t\tSkeletonClipping.makeClockwise(clippingPolygon);\n\t\t\tlet clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon));\n\t\t\tfor (let i = 0, n = clippingPolygons.length; i < n; i++) {\n\t\t\t\tlet polygon = clippingPolygons[i];\n\t\t\t\tSkeletonClipping.makeClockwise(polygon);\n\t\t\t\tpolygon.push(polygon[0]);\n\t\t\t\tpolygon.push(polygon[1]);\n\t\t\t}\n\n\t\t\treturn clippingPolygons.length;\n\t\t}\n\n\t\tclipEndWithSlot (slot: Slot) {\n\t\t\tif (this.clipAttachment != null && this.clipAttachment.endSlot == slot.data) this.clipEnd();\n\t\t}\n\n\t\tclipEnd () {\n\t\t\tif (this.clipAttachment == null) return;\n\t\t\tthis.clipAttachment = null;\n\t\t\tthis.clippingPolygons = null;\n\t\t\tthis.clippedVertices.length = 0;\n\t\t\tthis.clippedTriangles.length = 0;\n\t\t\tthis.clippingPolygon.length = 0;\n\t\t}\n\n\t\tisClipping (): boolean {\n\t\t\treturn this.clipAttachment != null;\n\t\t}\n\n\t\tclipTriangles (vertices: ArrayLike<number>, verticesLength: number, triangles: ArrayLike<number>, trianglesLength: number, uvs: ArrayLike<number>,\n\t\t\tlight: Color, dark: Color, twoColor: boolean) {\n\n\t\t\tlet clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;\n\t\t\tlet clippedTriangles = this.clippedTriangles;\n\t\t\tlet polygons = this.clippingPolygons;\n\t\t\tlet polygonsCount = this.clippingPolygons.length;\n\t\t\tlet vertexSize = twoColor ? 12 : 8;\n\n\t\t\tlet index = 0;\n\t\t\tclippedVertices.length = 0;\n\t\t\tclippedTriangles.length = 0;\n\t\t\touter:\n\t\t\tfor (let i = 0; i < trianglesLength; i += 3) {\n\t\t\t\tlet vertexOffset = triangles[i] << 1;\n\t\t\t\tlet x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];\n\t\t\t\tlet u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1];\n\n\t\t\t\tvertexOffset = triangles[i + 1] << 1;\n\t\t\t\tlet x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1];\n\t\t\t\tlet u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1];\n\n\t\t\t\tvertexOffset = triangles[i + 2] << 1;\n\t\t\t\tlet x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1];\n\t\t\t\tlet u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1];\n\n\t\t\t\tfor (let p = 0; p < polygonsCount; p++) {\n\t\t\t\t\tlet s = clippedVertices.length;\n\t\t\t\t\tif (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) {\n\t\t\t\t\t\tlet clipOutputLength = clipOutput.length;\n\t\t\t\t\t\tif (clipOutputLength == 0) continue;\n\t\t\t\t\t\tlet d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1;\n\t\t\t\t\t\tlet d = 1 / (d0 * d2 + d1 * (y1 - y3));\n\n\t\t\t\t\t\tlet clipOutputCount = clipOutputLength >> 1;\n\t\t\t\t\t\tlet clipOutputItems = this.clipOutput;\n\t\t\t\t\t\tlet clippedVerticesItems = Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize);\n\t\t\t\t\t\tfor (let ii = 0; ii < clipOutputLength; ii += 2) {\n\t\t\t\t\t\t\tlet x = clipOutputItems[ii], y = clipOutputItems[ii + 1];\n\t\t\t\t\t\t\tclippedVerticesItems[s] = x;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 1] = y;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 2] = light.r;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 3] = light.g;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 4] = light.b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 5] = light.a;\n\t\t\t\t\t\t\tlet c0 = x - x3, c1 = y - y3;\n\t\t\t\t\t\t\tlet a = (d0 * c0 + d1 * c1) * d;\n\t\t\t\t\t\t\tlet b = (d4 * c0 + d2 * c1) * d;\n\t\t\t\t\t\t\tlet c = 1 - a - b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c;\n\t\t\t\t\t\t\tif (twoColor) {\n\t\t\t\t\t\t\t\tclippedVerticesItems[s + 8] = dark.r;\n\t\t\t\t\t\t\t\tclippedVerticesItems[s + 9] = dark.g;\n\t\t\t\t\t\t\t\tclippedVerticesItems[s + 10] = dark.b;\n\t\t\t\t\t\t\t\tclippedVerticesItems[s + 11] = dark.a;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ts += vertexSize;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ts = clippedTriangles.length;\n\t\t\t\t\t\tlet clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2));\n\t\t\t\t\t\tclipOutputCount--;\n\t\t\t\t\t\tfor (let ii = 1; ii < clipOutputCount; ii++) {\n\t\t\t\t\t\t\tclippedTrianglesItems[s] = index;\n\t\t\t\t\t\t\tclippedTrianglesItems[s + 1] = (index + ii);\n\t\t\t\t\t\t\tclippedTrianglesItems[s + 2] = (index + ii + 1);\n\t\t\t\t\t\t\ts += 3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex += clipOutputCount + 1;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet clippedVerticesItems = Utils.setArraySize(clippedVertices, s + 3 * vertexSize);\n\t\t\t\t\t\tclippedVerticesItems[s] = x1;\n\t\t\t\t\t\tclippedVerticesItems[s + 1] = y1;\n\t\t\t\t\t\tclippedVerticesItems[s + 2] = light.r;\n\t\t\t\t\t\tclippedVerticesItems[s + 3] = light.g;\n\t\t\t\t\t\tclippedVerticesItems[s + 4] = light.b;\n\t\t\t\t\t\tclippedVerticesItems[s + 5] = light.a;\n\t\t\t\t\t\tif (!twoColor) {\n\t\t\t\t\t\t\tclippedVerticesItems[s + 6] = u1;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 7] = v1;\n\n\t\t\t\t\t\t\tclippedVerticesItems[s + 8] = x2;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 9] = y2;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 10] = light.r;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 11] = light.g;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 12] = light.b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 13] = light.a;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 14] = u2;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 15] = v2;\n\n\t\t\t\t\t\t\tclippedVerticesItems[s + 16] = x3;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 17] = y3;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 18] = light.r;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 19] = light.g;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 20] = light.b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 21] = light.a;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 22] = u3;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 23] = v3;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclippedVerticesItems[s + 6] = u1;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 7] = v1;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 8] = dark.r;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 9] = dark.g;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 10] = dark.b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 11] = dark.a;\n\n\t\t\t\t\t\t\tclippedVerticesItems[s + 12] = x2;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 13] = y2;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 14] = light.r;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 15] = light.g;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 16] = light.b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 17] = light.a;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 18] = u2;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 19] = v2;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 20] = dark.r;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 21] = dark.g;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 22] = dark.b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 23] = dark.a;\n\n\t\t\t\t\t\t\tclippedVerticesItems[s + 24] = x3;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 25] = y3;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 26] = light.r;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 27] = light.g;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 28] = light.b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 29] = light.a;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 30] = u3;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 31] = v3;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 32] = dark.r;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 33] = dark.g;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 34] = dark.b;\n\t\t\t\t\t\t\tclippedVerticesItems[s + 35] = dark.a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ts = clippedTriangles.length;\n\t\t\t\t\t\tlet clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3);\n\t\t\t\t\t\tclippedTrianglesItems[s] = index;\n\t\t\t\t\t\tclippedTrianglesItems[s + 1] = (index + 1);\n\t\t\t\t\t\tclippedTrianglesItems[s + 2] = (index + 2);\n\t\t\t\t\t\tindex += 3;\n\t\t\t\t\t\tcontinue outer;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping\n\t\t * area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */\n\t\tclip (x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array<number>, output: Array<number>) {\n\t\t\tlet originalOutput = output;\n\t\t\tlet clipped = false;\n\n\t\t\t// Avoid copy at the end.\n\t\t\tlet input: Array<number> = null;\n\t\t\tif (clippingArea.length % 4 >= 2) {\n\t\t\t\tinput = output;\n\t\t\t\toutput = this.scratch;\n\t\t\t} else\n\t\t\t\tinput = this.scratch;\n\n\t\t\tinput.length = 0;\n\t\t\tinput.push(x1);\n\t\t\tinput.push(y1);\n\t\t\tinput.push(x2);\n\t\t\tinput.push(y2);\n\t\t\tinput.push(x3);\n\t\t\tinput.push(y3);\n\t\t\tinput.push(x1);\n\t\t\tinput.push(y1);\n\t\t\toutput.length = 0;\n\n\t\t\tlet clippingVertices = clippingArea;\n\t\t\tlet clippingVerticesLast = clippingArea.length - 4;\n\t\t\tfor (let i = 0;; i += 2) {\n\t\t\t\tlet edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1];\n\t\t\t\tlet edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3];\n\t\t\t\tlet deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2;\n\n\t\t\t\tlet inputVertices = input;\n\t\t\t\tlet inputVerticesLength = input.length - 2, outputStart = output.length;\n\t\t\t\tfor (let ii = 0; ii < inputVerticesLength; ii += 2) {\n\t\t\t\t\tlet inputX = inputVertices[ii], inputY = inputVertices[ii + 1];\n\t\t\t\t\tlet inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3];\n\t\t\t\t\tlet side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0;\n\t\t\t\t\tif (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) {\n\t\t\t\t\t\tif (side2) { // v1 inside, v2 inside\n\t\t\t\t\t\t\toutput.push(inputX2);\n\t\t\t\t\t\t\toutput.push(inputY2);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// v1 inside, v2 outside\n\t\t\t\t\t\tlet c0 = inputY2 - inputY, c2 = inputX2 - inputX;\n\t\t\t\t\t\tlet ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY));\n\t\t\t\t\t\toutput.push(edgeX + (edgeX2 - edgeX) * ua);\n\t\t\t\t\t\toutput.push(edgeY + (edgeY2 - edgeY) * ua);\n\t\t\t\t\t} else if (side2) { // v1 outside, v2 inside\n\t\t\t\t\t\tlet c0 = inputY2 - inputY, c2 = inputX2 - inputX;\n\t\t\t\t\t\tlet ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY));\n\t\t\t\t\t\toutput.push(edgeX + (edgeX2 - edgeX) * ua);\n\t\t\t\t\t\toutput.push(edgeY + (edgeY2 - edgeY) * ua);\n\t\t\t\t\t\toutput.push(inputX2);\n\t\t\t\t\t\toutput.push(inputY2);\n\t\t\t\t\t}\n\t\t\t\t\tclipped = true;\n\t\t\t\t}\n\n\t\t\t\tif (outputStart == output.length) { // All edges outside.\n\t\t\t\t\toriginalOutput.length = 0;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\toutput.push(output[0]);\n\t\t\t\toutput.push(output[1]);\n\n\t\t\t\tif (i == clippingVerticesLast) break;\n\t\t\t\tlet temp = output;\n\t\t\t\toutput = input;\n\t\t\t\toutput.length = 0;\n\t\t\t\tinput = temp;\n\t\t\t}\n\n\t\t\tif (originalOutput != output) {\n\t\t\t\toriginalOutput.length = 0;\n\t\t\t\tfor (let i = 0, n = output.length - 2; i < n; i++)\n\t\t\t\t\toriginalOutput[i] = output[i];\n\t\t\t} else\n\t\t\t\toriginalOutput.length = originalOutput.length - 2;\n\n\t\t\treturn clipped;\n\t\t}\n\n\t\tpublic static makeClockwise (polygon: ArrayLike<number>) {\n\t\t\tlet vertices = polygon;\n\t\t\tlet verticeslength = polygon.length;\n\n\t\t\tlet area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0;\n\t\t\tfor (let i = 0, n = verticeslength - 3; i < n; i += 2) {\n\t\t\t\tp1x = vertices[i];\n\t\t\t\tp1y = vertices[i + 1];\n\t\t\t\tp2x = vertices[i + 2];\n\t\t\t\tp2y = vertices[i + 3];\n\t\t\t\tarea += p1x * p2y - p2x * p1y;\n\t\t\t}\n\t\t\tif (area < 0) return;\n\n\t\t\tfor (let i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) {\n\t\t\t\tlet x = vertices[i], y = vertices[i + 1];\n\t\t\t\tlet other = lastX - i;\n\t\t\t\tvertices[i] = vertices[other];\n\t\t\t\tvertices[i + 1] = vertices[other + 1];\n\t\t\t\tvertices[other] = x;\n\t\t\t\tvertices[other + 1] = y;\n\t\t\t}\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 SkeletonData {\n name: string;\n bones = new Array<BoneData>(); // Ordered parents first.\n slots = new Array<SlotData>(); // Setup pose draw order.\n skins = new Array<Skin>();\n defaultSkin: Skin;\n events = new Array<EventData>();\n animations = new Array<Animation>();\n ikConstraints = new Array<IkConstraintData>();\n transformConstraints = new Array<TransformConstraintData>();\n pathConstraints = new Array<PathConstraintData>();\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<LinkedMesh>();\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 data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, \"transform\", \"normal\"));\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 let dark: string = this.getValue(slotMap, \"dark\", null);\n if (dark != null) {\n data.darkColor = new Color(1, 1, 1, 1);\n data.darkColor.setFromString(dark);\n }\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.local = this.getValue(constraintMap, \"local\", false);\n data.relative = this.getValue(constraintMap, \"relative\", false);\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, skeletonData);\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(<MeshAttachment> 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 data.audio = this.getValue(eventMap, \"audio\", null);\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, skeletonData: SkeletonData): 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 //region.updateOffset();\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 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, <string> this.getValue(map, \"skin\", null), slotIndex, parent));\n return mesh;\n }\n\n let uvs: Array<number> = 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<number> = 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 case \"point\": {\n let point = this.attachmentLoader.newPointAttachment(skin, name);\n if (point == null) return null;\n point.x = this.getValue(map, \"x\", 0) * scale;\n point.y = this.getValue(map, \"y\", 0) * scale;\n point.rotation = this.getValue(map, \"rotation\", 0);\n\n let color = this.getValue(map, \"color\", null);\n if (color != null) point.color.setFromString(color);\n return point;\n }\n case \"clipping\": {\n let clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (clip == null) return null;\n\n let end = this.getValue(map, \"end\", null);\n if (end != null) {\n let slot = skeletonData.findSlot(end);\n if (slot == null) throw new Error(\"Clipping end slot not found: \" + end);\n clip.endSlot = slot;\n }\n\n let vertexCount = map.vertexCount;\n this.readVertices(map, clip, vertexCount << 1);\n\n let color: string = this.getValue(map, \"color\", null);\n if (color != null) clip.color.setFromString(color);\n return clip;\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<number> = map.vertices;\n if (verticesLength == vertices.length) {\n let scaledVertices = Utils.toFloatArray(vertices);\n if (scale != 1) {\n for (let i = 0, n = vertices.length; i < n; i++)\n scaledVertices[i] *= scale;\n }\n attachment.vertices = scaledVertices;\n return;\n }\n let weights = new Array<number>();\n let bones = new Array<number>();\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<Timeline>();\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 == \"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 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 || \"ffffffff\");\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 == \"twoColor\") {\n let timeline = new TwoColorTimeline(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 light = new Color();\n let dark = new Color();\n light.setFromString(valueMap.light);\n dark.setFromString(valueMap.dark);\n timeline.setFrame(frameIndex, valueMap.time, light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b);\n this.readCurve(valueMap, timeline, frameIndex);\n frameIndex++;\n }\n timelines.push(timeline);\n duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * TwoColorTimeline.ENTRIES]);\n\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 = <VertexAttachment>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<number>;\n let verticesValue: Array<Number> = 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 = <number>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<number> = null;\n let offsets = this.getValue(drawOrderMap, \"offsets\", null);\n if (offsets != null) {\n drawOrder = Utils.newArray<number>(slotCount, -1);\n let unchanged = Utils.newArray<number>(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(Utils.toSinglePrecision(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<number> = 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) {\n str = str.toLowerCase();\n if (str == \"normal\") return BlendMode.Normal;\n if (str == \"additive\") return BlendMode.Additive;\n if (str == \"multiply\") return BlendMode.Multiply;\n if (str == \"screen\") return BlendMode.Screen;\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\n class LinkedMesh {\n parent: string; 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<Map<Attachment>>();\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, key);\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 currentGraphics: any;\n clippingContainer: any;\n\n meshes: any;\n currentMeshName: string;\n sprites: any;\n currentSpriteName: string;\n\n blendMode: number;\n //assign hack region a bit later\n tempRegion: TextureRegion;\n tempAttachment: Attachment;\n\n //this is canon\n data: SlotData;\n bone: Bone;\n color: Color;\n darkColor: Color;\n attachment: Attachment;\n private attachmentTime: number;\n attachmentVertices = new Array<number>();\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.darkColor = data.darkColor == null ? null : new Color();\n this.setToSetupPose();\n\n this.blendMode = this.data.blendMode;\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.darkColor != null) this.darkColor.setFromColor(this.data.darkColor);\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 darkColor: Color;\n attachmentName: string;\n blendMode: BlendMode;\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<TextureAtlasPage>();\n regions = new Array<TextureAtlasRegion>();\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<PIXI.Texture>, 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<string>(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.<int>(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.<int>(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] != '3') {\n // pixi v4 or v5\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<string>;\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<string>): 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<Bone>;\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<Bone>();\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 if (this.data.local) {\n if (this.data.relative)\n this.applyRelativeLocal();\n else\n this.applyAbsoluteLocal();\n\n } else {\n if (this.data.relative)\n this.applyRelativeWorld();\n else\n this.applyAbsoluteWorld();\n }\n }\n\n applyAbsoluteWorld() {\n let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix,\n shearMix = this.shearMix;\n let target = this.target;\n let targetMat = target.matrix;\n let ta = targetMat.a, tb = targetMat.c, tc = targetMat.b, td = targetMat.d;\n let degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;\n let offsetRotation = this.data.offsetRotation * degRadReflect;\n let offsetShearY = this.data.offsetShearY * degRadReflect;\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n let modified = false;\n let mat = bone.matrix;\n\n if (rotateMix != 0) {\n let a = mat.a, b = mat.c, c = mat.b, d = mat.d;\n let r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation;\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 mat.a = cos * a - sin * c;\n mat.c = cos * b - sin * d;\n mat.b = sin * a + cos * c;\n mat.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 mat.tx += (temp.x - mat.tx) * translateMix;\n mat.ty += (temp.y - mat.ty) * translateMix;\n modified = true;\n }\n\n if (scaleMix > 0) {\n let s = Math.sqrt(mat.a * mat.a + mat.b * mat.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 mat.a *= s;\n mat.b *= s;\n s = Math.sqrt(mat.c * mat.c + mat.d * mat.d);\n ts = Math.sqrt(tb * tb + td * td);\n if (s > 0.00001) s = (s + (ts - s + this.data.offsetScaleY) * scaleMix) / s;\n mat.c *= s;\n mat.d *= s;\n modified = true;\n }\n\n if (shearMix > 0) {\n let b = mat.c, d = mat.d;\n let by = Math.atan2(d, b);\n let r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(mat.b, mat.a));\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI)\n r += MathUtils.PI2;\n r = by + (r + offsetShearY) * shearMix;\n let s = Math.sqrt(b * b + d * d);\n mat.c = Math.cos(r) * s;\n mat.d = Math.sin(r) * s;\n modified = true;\n }\n\n if (modified) bone.appliedValid = false;\n }\n }\n\n applyRelativeWorld() {\n let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix,\n shearMix = this.shearMix;\n let target = this.target;\n let targetMat = target.matrix;\n let ta = targetMat.a, tb = targetMat.c, tc = targetMat.b, td = targetMat.d;\n let degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;\n let offsetRotation = this.data.offsetRotation * degRadReflect,\n offsetShearY = this.data.offsetShearY * degRadReflect;\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n let modified = false;\n let mat = bone.matrix;\n\n if (rotateMix != 0) {\n let a = mat.a, b = mat.c, c = mat.b, d = mat.d;\n let r = Math.atan2(tc, ta) + offsetRotation;\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI) r += MathUtils.PI2;\n r *= rotateMix;\n let cos = Math.cos(r), sin = Math.sin(r);\n mat.a = cos * a - sin * c;\n mat.c = cos * b - sin * d;\n mat.b = sin * a + cos * c;\n mat.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 mat.tx += temp.x * translateMix;\n mat.ty += temp.y * translateMix;\n modified = true;\n }\n\n if (scaleMix > 0) {\n let s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * scaleMix + 1;\n mat.a *= s;\n mat.b *= s;\n s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * scaleMix + 1;\n mat.c *= s;\n mat.d *= s;\n modified = true;\n }\n\n if (shearMix > 0) {\n let r = Math.atan2(td, tb) - Math.atan2(tc, ta);\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI) r += MathUtils.PI2;\n let b = mat.c, d = mat.d;\n r = Math.atan2(d, b) + (r - MathUtils.PI / 2 + offsetShearY) * shearMix;\n let s = Math.sqrt(b * b + d * d);\n mat.c = Math.cos(r) * s;\n mat.d = Math.sin(r) * s;\n modified = true;\n }\n\n if (modified) bone.appliedValid = false;\n }\n }\n\n applyAbsoluteLocal() {\n let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix,\n shearMix = this.shearMix;\n let target = this.target;\n if (!target.appliedValid) target.updateAppliedTransform();\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n if (!bone.appliedValid) bone.updateAppliedTransform();\n\n let rotation = bone.arotation;\n if (rotateMix != 0) {\n let r = target.arotation - rotation + this.data.offsetRotation;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n rotation += r * rotateMix;\n }\n\n let x = bone.ax, y = bone.ay;\n if (translateMix != 0) {\n x += (target.ax - x + this.data.offsetX) * translateMix;\n y += (target.ay - y + this.data.offsetY) * translateMix;\n }\n\n let scaleX = bone.ascaleX, scaleY = bone.ascaleY;\n if (scaleMix > 0) {\n if (scaleX > 0.00001) scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * scaleMix) / scaleX;\n if (scaleY > 0.00001) scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * scaleMix) / scaleY;\n }\n\n let shearY = bone.ashearY;\n if (shearMix > 0) {\n let r = target.ashearY - shearY + this.data.offsetShearY;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n bone.shearY += r * shearMix;\n }\n\n bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);\n }\n }\n\n applyRelativeLocal() {\n let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix,\n shearMix = this.shearMix;\n let target = this.target;\n if (!target.appliedValid) target.updateAppliedTransform();\n let bones = this.bones;\n for (let i = 0, n = bones.length; i < n; i++) {\n let bone = bones[i];\n if (!bone.appliedValid) bone.updateAppliedTransform();\n\n let rotation = bone.arotation;\n if (rotateMix != 0) rotation += (target.arotation + this.data.offsetRotation) * rotateMix;\n\n let x = bone.ax, y = bone.ay;\n if (translateMix != 0) {\n x += (target.ax + this.data.offsetX) * translateMix;\n y += (target.ay + this.data.offsetY) * translateMix;\n }\n\n let scaleX = bone.ascaleX, scaleY = bone.ascaleY;\n if (scaleMix > 0) {\n if (scaleX > 0.00001) scaleX *= ((target.ascaleX - 1 + this.data.offsetScaleX) * scaleMix) + 1;\n if (scaleY > 0.00001) scaleY *= ((target.ascaleY - 1 + this.data.offsetScaleY) * scaleMix) + 1;\n }\n\n let shearY = bone.ashearY;\n if (shearMix > 0) shearY += (target.ashearY + this.data.offsetShearY) * shearMix;\n\n bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);\n }\n }\n\n getOrder() {\n return this.data.order;\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 TransformConstraintData {\n name: string;\n order = 0;\n bones = new Array<BoneData>();\n target: BoneData;\n rotateMix = 0; translateMix = 0; scaleMix = 0; shearMix = 0;\n offsetRotation = 0; offsetX = 0; offsetY = 0; offsetScaleX = 0; offsetScaleY = 0; offsetShearY = 0;\n relative = false;\n local = false;\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 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 Triangulator {\n\t\tprivate convexPolygons = new Array<Array<number>>();\n\t\tprivate convexPolygonsIndices = new Array<Array<number>>();\n\n\t\tprivate indicesArray = new Array<number>();\n\t\tprivate isConcaveArray = new Array<boolean>();\n\t\tprivate triangles = new Array<number>();\n\n\t\tprivate polygonPool = new Pool<Array<number>>(() => {\n\t\t\treturn new Array<number>();\n\t\t});\n\n\t\tprivate polygonIndicesPool = new Pool<Array<number>>(() => {\n\t\t\treturn new Array<number>();\n\t\t});\n\n\t\tpublic triangulate (verticesArray: ArrayLike<number>): Array<number> {\n\t\t\tlet vertices = verticesArray;\n\t\t\tlet vertexCount = verticesArray.length >> 1;\n\n\t\t\tlet indices = this.indicesArray;\n\t\t\tindices.length = 0;\n\t\t\tfor (let i = 0; i < vertexCount; i++)\n\t\t\t\tindices[i] = i;\n\n\t\t\tlet isConcave = this.isConcaveArray;\n\t\t\tisConcave.length = 0;\n\t\t\tfor (let i = 0, n = vertexCount; i < n; ++i)\n\t\t\t\tisConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices);\n\n\t\t\tlet triangles = this.triangles;\n\t\t\ttriangles.length = 0;\n\n\t\t\twhile (vertexCount > 3) {\n\t\t\t\t// Find ear tip.\n\t\t\t\tlet previous = vertexCount - 1, i = 0, next = 1;\n\t\t\t\twhile (true) {\n\t\t\t\t\touter:\n\t\t\t\t\tif (!isConcave[i]) {\n\t\t\t\t\t\tlet p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1;\n\t\t\t\t\t\tlet p1x = vertices[p1], p1y = vertices[p1 + 1];\n\t\t\t\t\t\tlet p2x = vertices[p2], p2y = vertices[p2 + 1];\n\t\t\t\t\t\tlet p3x = vertices[p3], p3y = vertices[p3 + 1];\n\t\t\t\t\t\tfor (let ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) {\n\t\t\t\t\t\t\tif (!isConcave[ii]) continue;\n\t\t\t\t\t\t\tlet v = indices[ii] << 1;\n\t\t\t\t\t\t\tlet vx = vertices[v], vy = vertices[v + 1];\n\t\t\t\t\t\t\tif (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) {\n\t\t\t\t\t\t\t\tif (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) {\n\t\t\t\t\t\t\t\t\tif (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) break outer;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (next == 0) {\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif (!isConcave[i]) break;\n\t\t\t\t\t\t\ti--;\n\t\t\t\t\t\t} while (i > 0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tprevious = i;\n\t\t\t\t\ti = next;\n\t\t\t\t\tnext = (next + 1) % vertexCount;\n\t\t\t\t}\n\n\t\t\t\t// Cut ear tip.\n\t\t\t\ttriangles.push(indices[(vertexCount + i - 1) % vertexCount]);\n\t\t\t\ttriangles.push(indices[i]);\n\t\t\t\ttriangles.push(indices[(i + 1) % vertexCount]);\n\t\t\t\tindices.splice(i, 1);\n\t\t\t\tisConcave.splice(i, 1);\n\t\t\t\tvertexCount--;\n\n\t\t\t\tlet previousIndex = (vertexCount + i - 1) % vertexCount;\n\t\t\t\tlet nextIndex = i == vertexCount ? 0 : i;\n\t\t\t\tisConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices);\n\t\t\t\tisConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices);\n\t\t\t}\n\n\t\t\tif (vertexCount == 3) {\n\t\t\t\ttriangles.push(indices[2]);\n\t\t\t\ttriangles.push(indices[0]);\n\t\t\t\ttriangles.push(indices[1]);\n\t\t\t}\n\n\t\t\treturn triangles;\n\t\t}\n\n\t\tdecompose (verticesArray: Array<number>, triangles: Array<number>) : Array<Array<number>> {\n\t\t\tlet vertices = verticesArray;\n\t\t\tlet convexPolygons = this.convexPolygons;\n\t\t\tthis.polygonPool.freeAll(convexPolygons);\n\t\t\tconvexPolygons.length = 0;\n\n\t\t\tlet convexPolygonsIndices = this.convexPolygonsIndices;\n\t\t\tthis.polygonIndicesPool.freeAll(convexPolygonsIndices);\n\t\t\tconvexPolygonsIndices.length = 0;\n\n\t\t\tlet polygonIndices = this.polygonIndicesPool.obtain();\n\t\t\tpolygonIndices.length = 0;\n\n\t\t\tlet polygon = this.polygonPool.obtain();\n\t\t\tpolygon.length = 0;\n\n\t\t\t// Merge subsequent triangles if they form a triangle fan.\n\t\t\tlet fanBaseIndex = -1, lastWinding = 0;\n\t\t\tfor (let i = 0, n = triangles.length; i < n; i += 3) {\n\t\t\t\tlet t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1;\n\t\t\t\tlet x1 = vertices[t1], y1 = vertices[t1 + 1];\n\t\t\t\tlet x2 = vertices[t2], y2 = vertices[t2 + 1];\n\t\t\t\tlet x3 = vertices[t3], y3 = vertices[t3 + 1];\n\n\t\t\t\t// If the base of the last triangle is the same as this triangle, check if they form a convex polygon (triangle fan).\n\t\t\t\tlet merged = false;\n\t\t\t\tif (fanBaseIndex == t1) {\n\t\t\t\t\tlet o = polygon.length - 4;\n\t\t\t\t\tlet winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3);\n\t\t\t\t\tlet winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]);\n\t\t\t\t\tif (winding1 == lastWinding && winding2 == lastWinding) {\n\t\t\t\t\t\tpolygon.push(x3);\n\t\t\t\t\t\tpolygon.push(y3);\n\t\t\t\t\t\tpolygonIndices.push(t3);\n\t\t\t\t\t\tmerged = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Otherwise make this triangle the new base.\n\t\t\t\tif (!merged) {\n\t\t\t\t\tif (polygon.length > 0) {\n\t\t\t\t\t\tconvexPolygons.push(polygon);\n\t\t\t\t\t\tconvexPolygonsIndices.push(polygonIndices);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.polygonPool.free(polygon)\n\t\t\t\t\t\tthis.polygonIndicesPool.free(polygonIndices);\n\t\t\t\t\t}\n\t\t\t\t\tpolygon = this.polygonPool.obtain();\n\t\t\t\t\tpolygon.length = 0;\n\t\t\t\t\tpolygon.push(x1);\n\t\t\t\t\tpolygon.push(y1);\n\t\t\t\t\tpolygon.push(x2);\n\t\t\t\t\tpolygon.push(y2);\n\t\t\t\t\tpolygon.push(x3);\n\t\t\t\t\tpolygon.push(y3);\n\t\t\t\t\tpolygonIndices = this.polygonIndicesPool.obtain();\n\t\t\t\t\tpolygonIndices.length = 0;\n\t\t\t\t\tpolygonIndices.push(t1);\n\t\t\t\t\tpolygonIndices.push(t2);\n\t\t\t\t\tpolygonIndices.push(t3);\n\t\t\t\t\tlastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3);\n\t\t\t\t\tfanBaseIndex = t1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (polygon.length > 0) {\n\t\t\t\tconvexPolygons.push(polygon);\n\t\t\t\tconvexPolygonsIndices.push(polygonIndices);\n\t\t\t}\n\n\t\t\t// Go through the list of polygons and try to merge the remaining triangles with the found triangle fans.\n\t\t\tfor (let i = 0, n = convexPolygons.length; i < n; i++) {\n\t\t\t\tpolygonIndices = convexPolygonsIndices[i];\n\t\t\t\tif (polygonIndices.length == 0) continue;\n\t\t\t\tlet firstIndex = polygonIndices[0];\n\t\t\t\tlet lastIndex = polygonIndices[polygonIndices.length - 1];\n\n\t\t\t\tpolygon = convexPolygons[i];\n\t\t\t\tlet o = polygon.length - 4;\n\t\t\t\tlet prevPrevX = polygon[o], prevPrevY = polygon[o + 1];\n\t\t\t\tlet prevX = polygon[o + 2], prevY = polygon[o + 3];\n\t\t\t\tlet firstX = polygon[0], firstY = polygon[1];\n\t\t\t\tlet secondX = polygon[2], secondY = polygon[3];\n\t\t\t\tlet winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY);\n\n\t\t\t\tfor (let ii = 0; ii < n; ii++) {\n\t\t\t\t\tif (ii == i) continue;\n\t\t\t\t\tlet otherIndices = convexPolygonsIndices[ii];\n\t\t\t\t\tif (otherIndices.length != 3) continue;\n\t\t\t\t\tlet otherFirstIndex = otherIndices[0];\n\t\t\t\t\tlet otherSecondIndex = otherIndices[1];\n\t\t\t\t\tlet otherLastIndex = otherIndices[2];\n\n\t\t\t\t\tlet otherPoly = convexPolygons[ii];\n\t\t\t\t\tlet x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1];\n\n\t\t\t\t\tif (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) continue;\n\t\t\t\t\tlet winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3);\n\t\t\t\t\tlet winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY);\n\t\t\t\t\tif (winding1 == winding && winding2 == winding) {\n\t\t\t\t\t\totherPoly.length = 0;\n\t\t\t\t\t\totherIndices.length = 0;\n\t\t\t\t\t\tpolygon.push(x3);\n\t\t\t\t\t\tpolygon.push(y3);\n\t\t\t\t\t\tpolygonIndices.push(otherLastIndex);\n\t\t\t\t\t\tprevPrevX = prevX;\n\t\t\t\t\t\tprevPrevY = prevY;\n\t\t\t\t\t\tprevX = x3;\n\t\t\t\t\t\tprevY = y3;\n\t\t\t\t\t\tii = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove empty polygons that resulted from the merge step above.\n\t\t\tfor (let i = convexPolygons.length - 1; i >= 0; i--) {\n\t\t\t\tpolygon = convexPolygons[i];\n\t\t\t\tif (polygon.length == 0) {\n\t\t\t\t\tconvexPolygons.splice(i, 1);\n\t\t\t\t\tthis.polygonPool.free(polygon);\n\t\t\t\t\tpolygonIndices = convexPolygonsIndices[i]\n\t\t\t\t\tconvexPolygonsIndices.splice(i, 1)\n\t\t\t\t\tthis.polygonIndicesPool.free(polygonIndices);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn convexPolygons;\n\t\t}\n\n\t\tprivate static isConcave (index: number, vertexCount: number, vertices: ArrayLike<number>, indices: ArrayLike<number>): boolean {\n\t\t\tlet previous = indices[(vertexCount + index - 1) % vertexCount] << 1;\n\t\t\tlet current = indices[index] << 1;\n\t\t\tlet next = indices[(index + 1) % vertexCount] << 1;\n\t\t\treturn !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next],\n\t\t\t\tvertices[next + 1]);\n\t\t}\n\n\t\tprivate static positiveArea (p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number): boolean {\n\t\t\treturn p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0;\n\t\t}\n\n\t\tprivate static winding (p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number): number {\n\t\t\tlet px = p2x - p1x, py = p2y - p1y;\n\t\t\treturn p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;\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 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 export interface Map<T> {\n [key: string]: T;\n }\n\n export class IntSet {\n array = new Array<number>();\n\n add (value: number): boolean {\n let contains = this.contains(value);\n this.array[value | 0] = value | 0;\n return !contains;\n }\n\n contains (value: number) {\n return this.array[value | 0] != undefined;\n }\n\n remove (value: number) {\n this.array[value | 0] = undefined;\n }\n\n clear () {\n this.array.length = 0;\n }\n }\n\n export interface Disposable {\n dispose (): void;\n }\n\n export interface Restorable {\n restore (): void;\n }\n\n export class Color {\n public static WHITE = new Color(1, 1, 1, 1);\n public static RED = new Color(1, 0, 0, 1);\n public static GREEN = new Color(0, 1, 0, 1);\n public static BLUE = new Color(0, 0, 1, 1);\n public static MAGENTA = new Color(1, 0, 1, 1);\n\n constructor (public r: number = 0, public g: number = 0, public b: number = 0, public a: number = 0) {\n }\n\n set (r: number, g: number, b: number, a: number) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n this.clamp();\n return this;\n }\n\n setFromColor (c: Color) {\n this.r = c.r;\n this.g = c.g;\n this.b = c.b;\n this.a = c.a;\n return this;\n }\n\n setFromString (hex: string) {\n hex = hex.charAt(0) == '#' ? hex.substr(1) : hex;\n this.r = parseInt(hex.substr(0, 2), 16) / 255.0;\n this.g = parseInt(hex.substr(2, 2), 16) / 255.0;\n this.b = parseInt(hex.substr(4, 2), 16) / 255.0;\n this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0;\n return this;\n }\n\n add (r: number, g: number, b: number, a: number) {\n this.r += r;\n this.g += g;\n this.b += b;\n this.a += a;\n this.clamp();\n return this;\n }\n\n clamp () {\n if (this.r < 0) this.r = 0;\n else if (this.r > 1) this.r = 1;\n\n if (this.g < 0) this.g = 0;\n else if (this.g > 1) this.g = 1;\n\n if (this.b < 0) this.b = 0;\n else if (this.b > 1) this.b = 1;\n\n if (this.a < 0) this.a = 0;\n else if (this.a > 1) this.a = 1;\n return this;\n }\n }\n\n export class MathUtils {\n static PI = 3.1415927;\n static PI2 = MathUtils.PI * 2;\n static radiansToDegrees = 180 / MathUtils.PI;\n static radDeg = MathUtils.radiansToDegrees;\n static degreesToRadians = MathUtils.PI / 180;\n static degRad = MathUtils.degreesToRadians;\n\n static clamp (value: number, min: number, max: number) {\n if (value < min) return min;\n if (value > max) return max;\n return value;\n }\n\n static cosDeg (degrees: number) {\n return Math.cos(degrees * MathUtils.degRad);\n }\n\n static sinDeg (degrees: number) {\n return Math.sin(degrees * MathUtils.degRad);\n }\n\n static signum (value: number): number {\n return value > 0 ? 1 : value < 0 ? -1 : 0;\n }\n\n static toInt (x: number) {\n return x > 0 ? Math.floor(x) : Math.ceil(x);\n }\n\n static cbrt (x: number) {\n let y = Math.pow(Math.abs(x), 1/3);\n return x < 0 ? -y : y;\n }\n\n static randomTriangular (min: number, max: number): number {\n return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5);\n }\n\n static randomTriangularWith (min: number, max: number, mode: number): number {\n let u = Math.random();\n let d = max - min;\n if (u <= (mode - min) / d) return min + Math.sqrt(u * d * (mode - min));\n return max - Math.sqrt((1 - u) * d * (max - mode));\n }\n }\n\n export abstract class Interpolation {\n protected abstract applyInternal (a: number): number;\n apply(start: number, end: number, a: number): number {\n return start + (end - start) * this.applyInternal(a);\n }\n }\n\n export class Pow extends Interpolation {\n protected power = 2;\n\n constructor (power: number) {\n super();\n this.power = power;\n }\n\n applyInternal (a: number): number {\n if (a <= 0.5) return Math.pow(a * 2, this.power) / 2;\n return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1;\n }\n }\n\n export class PowOut extends Pow {\n constructor (power: number) {\n super(power);\n }\n\n applyInternal (a: number) : number {\n return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1;\n }\n }\n\n export class Utils {\n static SUPPORTS_TYPED_ARRAYS = typeof(Float32Array) !== \"undefined\";\n\n static arrayCopy<T> (source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number) {\n for (let i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) {\n dest[j] = source[i];\n }\n }\n\n static setArraySize<T> (array: Array<T>, size: number, value: any = 0): Array<T> {\n let oldSize = array.length;\n if (oldSize == size) return array;\n array.length = size;\n if (oldSize < size) {\n for (let i = oldSize; i < size; i++) array[i] = value;\n }\n return array;\n }\n\n static ensureArrayCapacity<T> (array: Array<T>, size: number, value: any = 0): Array<T> {\n if (array.length >= size) return array;\n return Utils.setArraySize(array, size, value);\n }\n\n static newArray<T> (size: number, defaultValue: T): Array<T> {\n let array = new Array<T>(size);\n for (let i = 0; i < size; i++) array[i] = defaultValue;\n return array;\n }\n\n static newFloatArray (size: number): ArrayLike<number> {\n if (Utils.SUPPORTS_TYPED_ARRAYS) {\n return new Float32Array(size)\n } else {\n let array = new Array<number>(size);\n for (let i = 0; i < array.length; i++) array[i] = 0;\n return array;\n }\n }\n\n static newShortArray (size: number): ArrayLike<number> {\n if (Utils.SUPPORTS_TYPED_ARRAYS) {\n return new Int16Array(size)\n } else {\n let array = new Array<number>(size);\n for (let i = 0; i < array.length; i++) array[i] = 0;\n return array;\n }\n }\n\n static toFloatArray (array: Array<number>) {\n return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array;\n }\n\n static toSinglePrecision (value: number) {\n return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value;\n }\n\n // This function is used to fix WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109\n static webkit602BugfixHelper (alpha: number, pose: MixPose) {\n\n }\n }\n\n export class DebugUtils {\n static logBones(skeleton: Skeleton) {\n for (let i = 0; i < skeleton.bones.length; i++) {\n let bone = skeleton.bones[i];\n let mat = bone.matrix;\n console.log(bone.data.name + \", \" + mat.a + \", \" + mat.b + \", \" + mat.c + \", \" + mat.d + \", \" + mat.tx + \", \" + mat.ty);\n }\n }\n }\n\n export class Pool<T> {\n private items = new Array<T>();\n private instantiator: () => T;\n\n constructor (instantiator: () => T) {\n this.instantiator = instantiator;\n }\n\n obtain () {\n return this.items.length > 0 ? this.items.pop() : this.instantiator();\n }\n\n free (item: T) {\n if ((item as any).reset) (item as any).reset();\n this.items.push(item);\n }\n\n freeAll (items: ArrayLike<T>) {\n for (let i = 0; i < items.length; i++) {\n if ((items[i] as any).reset) (items[i] as any).reset();\n this.items[i] = items[i];\n }\n }\n\n clear () {\n this.items.length = 0;\n }\n }\n\n export class Vector2 {\n constructor (public x = 0, public y = 0) {\n }\n\n set (x: number, y: number): Vector2 {\n this.x = x;\n this.y = y;\n return this;\n }\n\n length () {\n let x = this.x;\n let y = this.y;\n return Math.sqrt(x * x + y * y);\n }\n\n normalize () {\n let len = this.length();\n if (len != 0) {\n this.x /= len;\n this.y /= len;\n }\n return this;\n }\n }\n\n export class TimeKeeper {\n maxDelta = 0.064;\n framesPerSecond = 0;\n delta = 0;\n totalTime = 0;\n\n private lastTime = Date.now() / 1000;\n private frameCount = 0;\n private frameTime = 0;\n\n update () {\n var now = Date.now() / 1000;\n this.delta = now - this.lastTime;\n this.frameTime += this.delta;\n this.totalTime += this.delta;\n if (this.delta > this.maxDelta) this.delta = this.maxDelta;\n this.lastTime = now;\n\n this.frameCount++;\n if (this.frameTime > 1) {\n this.framesPerSecond = this.frameCount / this.frameTime;\n this.frameTime = 0;\n this.frameCount = 0;\n }\n }\n }\n\n export interface ArrayLike<T> {\n length: number;\n [n: number]: T;\n }\n\n export class WindowedMean {\n values: Array<number>;\n addedValues = 0;\n lastValue = 0;\n mean = 0;\n dirty = true;\n\n constructor (windowSize: number = 32) {\n this.values = new Array<number>(windowSize);\n }\n\n hasEnoughData () {\n return this.addedValues >= this.values.length;\n }\n\n addValue (value: number) {\n if (this.addedValues < this.values.length)\n this.addedValues++;\n this.values[this.lastValue++] = value;\n if (this.lastValue > this.values.length - 1) this.lastValue = 0;\n this.dirty = true;\n }\n\n getMean () {\n if (this.hasEnoughData()) {\n if (this.dirty) {\n let mean = 0;\n for (let i = 0; i < this.values.length; i++) {\n mean += this.values[i];\n }\n this.mean = mean / this.values.length;\n this.dirty = false;\n }\n return this.mean;\n } else {\n return 0;\n }\n }\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 VertexEffect {\n\t\tbegin(skeleton: Skeleton): void;\n\t\ttransform(position: Vector2, uv: Vector2, light: Color, dark: Color): void;\n\t\tend(): void;\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 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 private static nextID = 0;\n\n id = (VertexAttachment.nextID++ & 65535) << 11;\n bones: Array<number>;\n vertices: ArrayLike<number>;\n worldVerticesLength = 0;\n\n constructor(name: string) {\n super(name);\n }\n\n computeWorldVerticesOld(slot: Slot, worldVertices: ArrayLike<number>) {\n this.computeWorldVertices(slot, 0, this.worldVerticesLength, worldVertices, 0, 2);\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 computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike<number>, offset: number, stride: number) {\n count = offset + (count >> 1) * stride;\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 mat = slot.bone.matrix;\n let x = mat.tx;\n let y = mat.ty;\n let a = mat.a, b = mat.c, c = mat.b, d = mat.d;\n for (let v = start, w = offset; w < count; v += 2, w += stride) {\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 += stride) {\n let wx = 0, wy = 0;\n let n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3) {\n let mat = skeletonBones[bones[v]].matrix;\n let vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2];\n wx += (vx * mat.a + vy * mat.c + mat.tx) * weight;\n wy += (vx * mat.b + vy * mat.d + mat.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 += stride) {\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 mat = skeletonBones[bones[v]].matrix;\n let vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1],\n weight = vertices[b + 2];\n wx += (vx * mat.a + vy * mat.c + mat.tx) * weight;\n wy += (vx * mat.b + vy * mat.d + mat.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 /** @return May be null to not load an attachment */\n newPointAttachment(skin: Skin, name: string): PointAttachment;\n\n /** @return May be null to not load an attachment */\n newClippingAttachment(skin: Skin, name: string): ClippingAttachment;\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, Point\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 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 class ClippingAttachment extends VertexAttachment {\n endSlot: SlotData;\n\n // Nonessential.\n color = new Color(0.2275, 0.2275, 0.8078, 1); // ce3a3aff\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<number>; uvs: ArrayLike<number>;\n triangles: Array<number>;\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 updateUVs(region: TextureRegion, uvs: ArrayLike<number>): ArrayLike<number> {\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.worldVerticesLength = parentMesh.worldVerticesLength;\n this.regionUVs = parentMesh.regionUVs;\n this.triangles = parentMesh.triangles;\n this.hullLength = parentMesh.hullLength;\n this.worldVerticesLength = parentMesh.worldVerticesLength\n }\n }\n\n //computeWorldVerticesWith(slot, 0, this.worldVerticesLength, worldVertices, 0);\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<number>;\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 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 class PointAttachment extends VertexAttachment {\n x: number;\n y: number;\n rotation: number;\n color = new Color(0.38, 0.94, 0, 1);\n\n constructor(name: string) {\n super(name);\n }\n\n computeWorldPosition(bone: Bone, point: Vector2) {\n const mat = bone.matrix;\n point.x = this.x * mat.a + this.y * mat.c + bone.worldX;\n point.y = this.x * mat.b + this.y * mat.d + bone.worldY;\n return point;\n }\n\n computeWorldRotation(bone: Bone) {\n const mat = bone.matrix;\n let cos = MathUtils.cosDeg(this.rotation), sin = MathUtils.sinDeg(this.rotation);\n let x = cos * mat.a + sin * mat.c;\n let y = cos * mat.b + sin * mat.d;\n return Math.atan2(y, x) * MathUtils.radDeg;\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 static OX1 = 0;\n static OY1 = 1;\n static OX2 = 2;\n static OY2 = 3;\n static OX3 = 4;\n static OY3 = 5;\n static OX4 = 6;\n static OY4 = 7;\n\n static X1 = 0;\n static Y1 = 1;\n static C1R = 2;\n static C1G = 3;\n static C1B = 4;\n static C1A = 5;\n static U1 = 6;\n static V1 = 7;\n\n static X2 = 8;\n static Y2 = 9;\n static C2R = 10;\n static C2G = 11;\n static C2B = 12;\n static C2A = 13;\n static U2 = 14;\n static V2 = 15;\n\n static X3 = 16;\n static Y3 = 17;\n static C3R = 18;\n static C3G = 19;\n static C3B = 20;\n static C3A = 21;\n static U3 = 22;\n static V3 = 23;\n\n static X4 = 24;\n static Y4 = 25;\n static C4R = 26;\n static C4G = 27;\n static C4B = 28;\n static C4A = 29;\n static U4 = 30;\n static V4 = 31;\n\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 rendererObject: any;\n region: TextureRegion;\n\n offset = Utils.newFloatArray(8);\n uvs = Utils.newFloatArray(8);\n\n tempColor = new Color(1, 1, 1, 1);\n\n constructor(name: string) {\n super(name);\n }\n\n updateOffset(): void {\n let regionScaleX = this.width / this.region.originalWidth * this.scaleX;\n let regionScaleY = this.height / this.region.originalHeight * this.scaleY;\n let localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX;\n let localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY;\n let localX2 = localX + this.region.width * regionScaleX;\n let localY2 = localY + this.region.height * regionScaleY;\n let radians = this.rotation * Math.PI / 180;\n let cos = Math.cos(radians);\n let sin = Math.sin(radians);\n let localXCos = localX * cos + this.x;\n let localXSin = localX * sin;\n let localYCos = localY * cos + this.y;\n let localYSin = localY * sin;\n let localX2Cos = localX2 * cos + this.x;\n let localX2Sin = localX2 * sin;\n let localY2Cos = localY2 * cos + this.y;\n let localY2Sin = localY2 * sin;\n let offset = this.offset;\n offset[RegionAttachment.OX1] = localXCos - localYSin;\n offset[RegionAttachment.OY1] = localYCos + localXSin;\n offset[RegionAttachment.OX2] = localXCos - localY2Sin;\n offset[RegionAttachment.OY2] = localY2Cos + localXSin;\n offset[RegionAttachment.OX3] = localX2Cos - localY2Sin;\n offset[RegionAttachment.OY3] = localY2Cos + localX2Sin;\n offset[RegionAttachment.OX4] = localX2Cos - localYSin;\n offset[RegionAttachment.OY4] = localYCos + localX2Sin;\n }\n\n setRegion(region: TextureRegion): void {\n this.region = region;\n let uvs = this.uvs;\n if (region.rotate) {\n uvs[2] = region.u;\n uvs[3] = region.v2;\n uvs[4] = region.u;\n uvs[5] = region.v;\n uvs[6] = region.u2;\n uvs[7] = region.v;\n uvs[0] = region.u2;\n uvs[1] = region.v2;\n } else {\n uvs[0] = region.u;\n uvs[1] = region.v2;\n uvs[2] = region.u;\n uvs[3] = region.v;\n uvs[4] = region.u2;\n uvs[5] = region.v;\n uvs[6] = region.u2;\n uvs[7] = region.v2;\n }\n }\n\n computeWorldVertices(bone: Bone, worldVertices: ArrayLike<number>, offset: number, stride: number) {\n let vertexOffset = this.offset;\n let mat = bone.matrix;\n let x = mat.tx, y = mat.ty;\n let a = mat.a, b = mat.c, c = mat.b, d = mat.d;\n let offsetX = 0, offsetY = 0;\n\n offsetX = vertexOffset[RegionAttachment.OX1];\n offsetY = vertexOffset[RegionAttachment.OY1];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // br\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n\n offsetX = vertexOffset[RegionAttachment.OX2];\n offsetY = vertexOffset[RegionAttachment.OY2];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // bl\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n\n offsetX = vertexOffset[RegionAttachment.OX3];\n offsetY = vertexOffset[RegionAttachment.OY3];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // ul\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n\n offsetX = vertexOffset[RegionAttachment.OX4];\n offsetY = vertexOffset[RegionAttachment.OY4];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // ur\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n }\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 class JitterEffect implements VertexEffect {\n\t\tjitterX = 0;\n\t\tjitterY = 0;\n\n\t\tconstructor (jitterX: number, jitterY: number) {\n\t\t\tthis.jitterX = jitterX;\n\t\t\tthis.jitterY = jitterY;\n\t\t}\n\n\t\tbegin(skeleton: Skeleton): void {\n\t\t}\n\n\t\ttransform(position: Vector2, uv: Vector2, light: Color, dark: Color): void {\n\t\t\tposition.x += MathUtils.randomTriangular(-this.jitterX, this.jitterY);\n\t\t\tposition.y += MathUtils.randomTriangular(-this.jitterX, this.jitterY);\n\t\t}\n\n\t\tend(): void {\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 SwirlEffect implements VertexEffect {\n\t\tstatic interpolation = new PowOut(2);\n\t\tcenterX = 0;\n\t\tcenterY = 0;\n\t\tradius = 0;\n\t\tangle = 0;\n\t\tprivate worldX = 0;\n\t\tprivate worldY = 0;\n\n\t\tconstructor (radius: number) {\n\t\t\tthis.radius = radius;\n\t\t}\n\n\t\tbegin(skeleton: Skeleton): void {\n\t\t\tthis.worldX = skeleton.x + this.centerX;\n\t\t\tthis.worldY = skeleton.y + this.centerY;\n\t\t}\n\n\t\ttransform(position: Vector2, uv: Vector2, light: Color, dark: Color): void {\n\t\t\tlet radAngle = this.angle * MathUtils.degreesToRadians;\n\t\t\tlet x = position.x - this.worldX;\n\t\t\tlet y = position.y - this.worldY;\n\t\t\tlet dist = Math.sqrt(x * x + y * y);\n\t\t\tif (dist < this.radius) {\n\t\t\t\tlet theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius);\n\t\t\t\tlet cos = Math.cos(theta);\n\t\t\t\tlet sin = Math.sin(theta);\n\t\t\t\tposition.x = cos * x - sin * y + this.worldX;\n\t\t\t\tposition.y = sin * x + cos * y + this.worldY;\n\t\t\t}\n\t\t}\n\n\t\tend(): void {\n\t\t}\n\t}\n}\n","interface Math {\n fround(n: number): number;\n}\n\n(() => {\n if (!Math.fround) {\n Math.fround = Math.fround = (function(array) {\n return function(x: number) {\n return array[0] = x, array[0];\n };\n })(new Float32Array(1));\n }\n})();\n","/// <reference types=\"pixi.js\" />\n/// <reference path=\"polyfills.ts\" />\n/// <reference path=\"core/Bone.ts\" />\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 = null;\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 * let 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<number>;\n spineData: core.SkeletonData;\n skeleton: core.Skeleton;\n stateData: core.AnimationStateData;\n state: core.AnimationState;\n slotContainers: Array<PIXI.Container>;\n tempClipContainers: Array<PIXI.Container>;\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 this.tempClipContainers = [];\n\n for (let i = 0, n = this.skeleton.slots.length; i < n; i++) {\n let slot = this.skeleton.slots[i];\n let attachment: any = slot.attachment;\n let slotContainer = this.newContainer();\n this.slotContainers.push(slotContainer);\n this.addChild(slotContainer);\n this.tempClipContainers.push(null);\n\n if (attachment instanceof core.RegionAttachment) {\n let spriteName = (attachment.region as core.TextureAtlasRegion).name;\n let 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 let mesh = this.createMesh(slot, attachment);\n slot.currentMesh = mesh;\n slot.currentMeshName = attachment.name;\n slotContainer.addChild(mesh);\n }\n else if (attachment instanceof core.ClippingAttachment) {\n this.createGraphics(slot, attachment);\n slotContainer.addChild(slot.clippingContainer);\n slotContainer.addChild(slot.currentGraphics);\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 slots = this.skeleton.slots;\n\n\n // in case pixi has double tint\n let globalClr = (this as any).color;\n let light: ArrayLike<number> = null, dark: ArrayLike<number> = null;\n if (globalClr) {\n light = globalClr.light;\n dark = globalClr.dark;\n } else {\n light = this.tintRgb;\n }\n\n let thack = PIXI.TransformBase && (this.transformHack() == 1);\n\n for (let i = 0, n = slots.length; i < n; i++) {\n let slot = slots[i];\n let attachment = slot.attachment;\n let slotContainer = this.slotContainers[i];\n\n if (!attachment) {\n slotContainer.visible = false;\n continue;\n }\n\n let spriteColor: any = null;\n\n let 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 let 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 let 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 = null;\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 (thack) {\n if (transAny.position) {\n //TODO: refactor this shit\n transform = new PIXI.TransformBase();\n (transform as any)._parentID = -1;\n (transform as any)._worldID = (slotContainer.transform as any)._worldID;\n slotContainer.transform = transform;\n }\n lt = transform.localTransform;\n } else {\n // if (transAny.autoUpdateLocal) {\n // transAny.autoUpdateLocal = false;\n // }\n transAny.setFromMatrix(slot.bone.matrix);\n }\n }\n if (lt) {\n slot.bone.matrix.copy(lt);\n }\n } else {\n //PIXI v3\n let lt = slotContainer.localTransform || new PIXI.Matrix();\n slot.bone.matrix.copy(lt);\n slotContainer.localTransform = lt;\n (slotContainer as any).displayObjectUpdateTransform = SlotContainerUpdateTransformV3;\n }\n if (slot.currentSprite.color) {\n //YAY! double - tint!\n spriteColor = slot.currentSprite.color;\n } else {\n tempRgb[0] = light[0] * slot.color.r * attColor.r;\n tempRgb[1] = light[1] * slot.color.g * attColor.g;\n tempRgb[2] = light[2] * slot.color.b * attColor.b;\n slot.currentSprite.tint = PIXI.utils.rgb2hex(tempRgb);\n }\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 //TODO: refactor this shit\n const transform = new PIXI.TransformStatic();\n (transform as any)._parentID = -1;\n (transform as any)._worldID = (slotContainer.transform as any)._worldID;\n slotContainer.transform = transform;\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 let 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 let 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).computeWorldVerticesOld(slot, slot.currentMesh.vertices);\n if (slot.currentMesh.color) {\n spriteColor = slot.currentMesh.color;\n } else if (PIXI.VERSION[0] !== '3') {\n // PIXI version 4\n // slot.currentMesh.dirty++;\n //only for PIXI v4\n let tintRgb = slot.currentMesh.tintRgb;\n tintRgb[0] = light[0] * slot.color.r * attColor.r;\n tintRgb[1] = light[1] * slot.color.g * attColor.g;\n tintRgb[2] = light[2] * slot.color.b * attColor.b;\n }\n slot.currentMesh.blendMode = slot.blendMode;\n }\n else if (attachment instanceof core.ClippingAttachment) {\n if (!slot.currentGraphics) {\n this.createGraphics(slot, attachment);\n slotContainer.addChild(slot.clippingContainer);\n slotContainer.addChild(slot.currentGraphics);\n }\n this.updateGraphics(slot, attachment);\n }\n else {\n slotContainer.visible = false;\n continue;\n }\n slotContainer.visible = true;\n\n // pixi has double tint\n if (spriteColor) {\n let r0 = slot.color.r * attColor.r;\n let g0 = slot.color.g * attColor.g;\n let b0 = slot.color.b * attColor.b;\n\n //YAY! double-tint!\n spriteColor.setLight(\n light[0] * r0 + dark[0] * (1.0 - r0),\n light[1] * g0 + dark[1] * (1.0 - g0),\n light[2] * b0 + dark[2] * (1.0 - b0),\n );\n if (slot.darkColor) {\n r0 = slot.darkColor.r;\n g0 = slot.darkColor.g;\n b0 = slot.darkColor.b;\n } else {\n r0 = 0.0;\n g0 = 0.0;\n b0 = 0.0;\n }\n spriteColor.setDark(\n light[0] * r0 + dark[0] * (1 - r0),\n light[1] * g0 + dark[1] * (1 - g0),\n light[2] * b0 + dark[2] * (1 - b0),\n );\n }\n\n slotContainer.alpha = slot.color.a;\n }\n\n //== this is clipping implementation ===\n //TODO: remove parent hacks when pixi masks allow it\n let drawOrder = this.skeleton.drawOrder;\n let clippingAttachment: core.ClippingAttachment = null;\n let clippingContainer: PIXI.Container = null;\n\n for (let i = 0, n = drawOrder.length; i < n; i++) {\n let slot = slots[drawOrder[i].data.index];\n let slotContainer = this.slotContainers[drawOrder[i].data.index];\n\n if (!clippingContainer) {\n if (slotContainer.parent !== this) {\n slotContainer.parent.removeChild(slotContainer);\n //silend add hack\n slotContainer.parent = this;\n }\n }\n if (slot.currentGraphics && slot.attachment) {\n clippingContainer = slot.clippingContainer;\n clippingAttachment = slot.attachment as core.ClippingAttachment;\n clippingContainer.children.length = 0;\n this.children[i] = slotContainer;\n\n if (clippingAttachment.endSlot == slot.data) {\n clippingAttachment.endSlot = null;\n }\n\n } else {\n if (clippingContainer) {\n let c = this.tempClipContainers[i];\n if (!c) {\n c = this.tempClipContainers[i] = this.newContainer();\n c.visible = false;\n }\n this.children[i] = c;\n\n //silent remove hack\n slotContainer.parent = null;\n clippingContainer.addChild(slotContainer);\n if (clippingAttachment.endSlot == slot.data) {\n clippingContainer.renderable = true;\n clippingContainer = null;\n clippingAttachment = null;\n }\n } else {\n this.children[i] = slotContainer;\n }\n }\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 (region.texture as any)._updateUvs();\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 let 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 let texture = region.texture;\n let sprite = this.newSprite(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 = this.newMesh(\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 static clippingPolygon: Array<number> = [];\n\n createGraphics(slot: core.Slot, clip: core.ClippingAttachment) {\n let graphics = this.newGraphics();\n let poly = new PIXI.Polygon([]);\n graphics.clear();\n graphics.beginFill(0xffffff, 1);\n graphics.drawPolygon(poly as any);\n graphics.renderable = false;\n slot.currentGraphics = graphics;\n slot.clippingContainer = this.newContainer();\n slot.clippingContainer.mask = slot.currentGraphics;\n\n return graphics;\n }\n\n updateGraphics(slot: core.Slot, clip: core.ClippingAttachment) {\n let vertices = (slot.currentGraphics.graphicsData[0].shape as PIXI.Polygon).points;\n let n = clip.worldVerticesLength;\n vertices.length = n;\n clip.computeWorldVertices(slot, 0, n, vertices, 0, 2);\n slot.currentGraphics.dirty++;\n slot.currentGraphics.clearDirty++;\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 let slot = this.skeleton.slots[slotIndex];\n if (!slot) {\n return false;\n }\n let attachment: any = slot.attachment;\n let 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(slotName: string, texture: PIXI.Texture = null, size: PIXI.Rectangle = null) {\n let index = this.skeleton.findSlotIndex(slotName);\n if (index == -1) {\n return false;\n }\n return this.hackTextureBySlotIndex(index, texture, size);\n }\n\n //those methods can be overriden to spawn different classes\n newContainer() {\n return new PIXI.Container();\n }\n\n newSprite(tex: PIXI.Texture) {\n return new SpineSprite(tex);\n }\n\n newGraphics() {\n return new PIXI.Graphics();\n }\n\n newMesh(texture: PIXI.Texture, vertices?: Float32Array, uvs?: Float32Array, indices?: Uint16Array, drawMode?: number) {\n return new SpineMesh(texture, vertices, uvs, indices, drawMode);\n }\n\n transformHack() {\n return 1;\n }\n }\n\n function SlotContainerUpdateTransformV3() {\n let pt = this.parent.worldTransform;\n let wt = this.worldTransform;\n let 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","namespace pixi_spine {\n (PIXI as any).spine = pixi_spine;\n\n // texture patch for v5\n\n const TextureProto = PIXI.Texture.prototype as any;\n\n if (!TextureProto._updateUvs) {\n TextureProto._updateUvs = TextureProto.updateUvs;\n }\n}\n","namespace pixi_spine {\n function isJson(resource: PIXI.loaders.Resource) {\n return resource.type === PIXI.loaders.Resource.TYPE.JSON;\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 const metadata = resource.metadata || {};\n const metadataSkeletonScale = metadata ? resource.metadata.spineSkeletonScale : null;\n\n const metadataAtlas = metadata ? resource.metadata.spineAtlas : null;\n if (metadataAtlas === false) {\n return next();\n }\n if (metadataAtlas && metadataAtlas.pages) {\n //its an atlas!\n const spineJsonParser = new core.SkeletonJson(new core.AtlasAttachmentLoader(metadataAtlas));\n const skeletonData = spineJsonParser.readSkeletonData(resource.data);\n\n resource.spineData = skeletonData;\n resource.spineAtlas = metadataAtlas;\n\n return next();\n }\n\n const metadataAtlasSuffix = metadata.spineAtlasSuffix || '.atlas';\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 let atlasPath = resource.url.substr(0, resource.url.lastIndexOf('.')) + metadataAtlasSuffix;\n // use atlas path as a params. (no need to use same atlas file name with json file name)\n if (resource.metadata && resource.metadata.spineAtlasFile) {\n atlasPath = resource.metadata.spineAtlasFile;\n }\n\n //remove the baseUrl\n atlasPath = atlasPath.replace(this.baseUrl, '');\n\n const atlasOptions = {\n crossOrigin: resource.crossOrigin,\n xhrType: PIXI.loaders.Resource.XHR_RESPONSE_TYPE.TEXT,\n metadata: metadata.spineMetadata || null,\n parentResource: resource\n };\n const imageOptions = {\n crossOrigin: resource.crossOrigin,\n metadata: metadata.imageMetadata || null,\n parentResource: resource\n };\n let baseUrl = resource.url.substr(0, resource.url.lastIndexOf('/') + 1);\n //remove the baseUrl\n baseUrl = baseUrl.replace(this.baseUrl, '');\n\n const adapter = metadata.images ? staticImageLoader(metadata.images)\n : metadata.image ? staticImageLoader({'default': metadata.image})\n : metadata.imageLoader ? metadata.imageLoader(this, resource.name + '_atlas_page_', baseUrl, imageOptions)\n : imageLoaderAdapter(this, resource.name + '_atlas_page_', baseUrl, imageOptions);\n\n const createSkeletonWithRawAtlas = function (rawData: string) {\n new core.TextureAtlas(rawData, adapter, function (spineAtlas) {\n const spineJsonParser = new pixi_spine.core.SkeletonJson(new pixi_spine.core.AtlasAttachmentLoader(spineAtlas));\n if (metadataSkeletonScale) {\n spineJsonParser.scale = metadataSkeletonScale;\n }\n resource.spineData = spineJsonParser.readSkeletonData(resource.data);\n resource.spineAtlas = spineAtlas;\n next();\n });\n };\n\n if (resource.metadata && resource.metadata.atlasRawData) {\n createSkeletonWithRawAtlas(resource.metadata.atlasRawData)\n\n } else {\n this.add(resource.name + '_atlas', atlasPath, atlasOptions, function (atlasResource: any) {\n createSkeletonWithRawAtlas(atlasResource.xhr.responseText);\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 const name = namePrefix + line;\n const 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 export function staticImageLoader(pages: { [key: string]: (PIXI.BaseTexture | PIXI.Texture) }) {\n return function (line: any, callback: any) {\n let page = pages[line] || pages['default'] as any;\n if (page && page.baseTexture)\n callback(page.baseTexture);\n else\n callback(page);\n }\n }\n\n PIXI.loaders.Loader.addPixiMiddleware(atlasParser);\n PIXI.loader.use(atlasParser());\n}\n"]}
File without changes
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pixi_spine
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Scalf
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-02-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description:
56
+ email:
57
+ - shrewdpixeldesign@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".DS_Store"
63
+ - ".gitignore"
64
+ - ".rspec"
65
+ - ".travis.yml"
66
+ - Gemfile
67
+ - LICENSE.txt
68
+ - README.md
69
+ - Rakefile
70
+ - bin/console
71
+ - bin/setup
72
+ - lib/pixi_spine.rb
73
+ - lib/pixi_spine/version.rb
74
+ - pixi_spine.gemspec
75
+ - vendor/.DS_Store
76
+ - vendor/assets/.DS_Store
77
+ - vendor/assets/javascripts/.DS_Store
78
+ - vendor/assets/javascripts/.keep
79
+ - vendor/assets/javascripts/pixi-spine.js
80
+ - vendor/assets/javascripts/pixi-spine.js.map
81
+ - vendor/assets/stylesheets/.keep
82
+ homepage: https://github.com/Palmweaver/pixi_spine
83
+ licenses:
84
+ - MIT
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubygems_version: 3.0.1
102
+ signing_key:
103
+ specification_version: 4
104
+ summary: A gem for importing the pixi_spine.js canvas library into Rails projects.
105
+ test_files: []